diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index 24c0502e9bfff81ea45dfab88f01f219b8ec86dd..96ae62afda7c69100975cddd130987ee6fbd6d79 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -38,6 +38,7 @@
 
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/buildsteplist.h>
 #include <utils/qtcassert.h>
 
diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
index c816a16ce13d0804989850a82b06db5a617f672e..1f436272e90231fd21be1b5c1879f579b60f6e54 100644
--- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
@@ -44,6 +44,8 @@
 
 #include <utils/pathchooser.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 #include <texteditor/fontsettings.h>
 
 #include <QtGui/QVBoxLayout>
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index c86c696eaebd7844edf458215f9b8df1f24f99f9..485ce0652d71d7432fad7355decfd0d3436b6223 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -46,6 +46,8 @@
 #include <utils/detailswidget.h>
 #include <utils/qtcassert.h>
 #include <utils/debuggerlanguagechooser.h>
+#include <utils/qtcprocess.h>
+#include <utils/stringutils.h>
 
 #include <QtGui/QFormLayout>
 #include <QtGui/QLineEdit>
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 32d57cfa1a8ffa29343961cc0715509693e39b45..5effd300f25106804f9c9d0e2a2548cf4514c407 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -92,6 +92,7 @@
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/session.h>
 #include <projectexplorer/target.h>
 #include <projectexplorer/abi.h>
diff --git a/src/plugins/debugger/debuggertoolchaincombobox.cpp b/src/plugins/debugger/debuggertoolchaincombobox.cpp
index 2592ca685a4cdc782fefbd35c42ecf07e274400b..7642041f6431657baf0b9dc4388bb05c430ef1c9 100644
--- a/src/plugins/debugger/debuggertoolchaincombobox.cpp
+++ b/src/plugins/debugger/debuggertoolchaincombobox.cpp
@@ -33,6 +33,8 @@
 #include "debuggertoolchaincombobox.h"
 
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 #include <utils/qtcassert.h>
 
 #include <QtCore/QFileInfo>
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index ba647f9f7b5653fe4fc2678c1bee9e9ea1df0e2c..e626457b311c79d08b47df983172e7c82e4f4d6c 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -36,6 +36,7 @@
 #include "genericprojectconstants.h"
 #include "generictarget.h"
 
+#include <projectexplorer/abi.h>
 #include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/headerpath.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
diff --git a/src/plugins/projectexplorer/abiwidget.cpp b/src/plugins/projectexplorer/abiwidget.cpp
index 796b0823f557a2fa4d30eb3dd219a79e9679b3d2..a98d8a6a979cb928265d1f3dae5cbc6f8b794a25 100644
--- a/src/plugins/projectexplorer/abiwidget.cpp
+++ b/src/plugins/projectexplorer/abiwidget.cpp
@@ -31,6 +31,7 @@
 **************************************************************************/
 
 #include "abiwidget.h"
+#include "abi.h"
 
 #include <QtGui/QComboBox>
 #include <QtGui/QHBoxLayout>
diff --git a/src/plugins/projectexplorer/abiwidget.h b/src/plugins/projectexplorer/abiwidget.h
index 2ca76e2d8d18a997f3d8f9ad3571c4db05b7da52..a1f6925ca26814ff1e099368df22c4594d87ec7a 100644
--- a/src/plugins/projectexplorer/abiwidget.h
+++ b/src/plugins/projectexplorer/abiwidget.h
@@ -35,11 +35,10 @@
 
 #include "projectexplorer_export.h"
 
-#include "abi.h"
-
 #include <QtGui/QWidget>
 
 namespace ProjectExplorer {
+class Abi;
 
 namespace Internal {
 class AbiWidgetPrivate;
diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp
index 86caa8a1a26e6e4ed53147b0302679b119913478..ad136b76e763d16d49e4dff93e59ad8df718cb70 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.cpp
+++ b/src/plugins/projectexplorer/abstractprocessstep.cpp
@@ -36,6 +36,7 @@
 #include "ioutputparser.h"
 #include "project.h"
 #include "target.h"
+#include "task.h"
 
 #include <utils/qtcassert.h>
 #include <utils/qtcprocess.h>
diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h
index 16852e0846895312413bc86c75b7095dd8a2acbf..cc6177dc002cbb5af2a154011e3884cde889207c 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.h
+++ b/src/plugins/projectexplorer/abstractprocessstep.h
@@ -36,17 +36,17 @@
 #include "buildstep.h"
 #include "processparameters.h"
 
-#include <utils/environment.h>
-
-#include <utils/qtcprocess.h>
-
 #include <QtCore/QString>
+#include <QtCore/QProcess>
 
 QT_BEGIN_NAMESPACE
 class QEventLoop;
 class QTimer;
 QT_END_NAMESPACE
 
+namespace Utils {
+class QtcProcess;
+}
 namespace ProjectExplorer {
 
 class IOutputParser;
diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.h b/src/plugins/projectexplorer/applicationrunconfiguration.h
index 4bc79d80b80f64baf8151815c6c1ebbc99cace26..bc34166de463ee5e61519386cd399f7733c9fb06 100644
--- a/src/plugins/projectexplorer/applicationrunconfiguration.h
+++ b/src/plugins/projectexplorer/applicationrunconfiguration.h
@@ -36,8 +36,6 @@
 #include "runconfiguration.h"
 #include "applicationlauncher.h"
 
-#include "abi.h"
-
 namespace Utils {
 class AbstractMacroExpander;
 class Environment;
diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index 43fdefdfb01e3706b15cfdf06fee6b21b6a49538..608e7b7ad798cf21eb10002ffbf4b88203483b28 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -32,6 +32,7 @@
 
 #include "buildconfiguration.h"
 
+#include "toolchain.h"
 #include "buildmanager.h"
 #include "buildsteplist.h"
 #include "projectexplorer.h"
@@ -42,25 +43,47 @@
 
 #include <coreplugin/variablemanager.h>
 
+#include <utils/stringutils.h>
+
 #include <QtCore/QProcess>
 
-using namespace ProjectExplorer;
+static const char BUILD_STEP_LIST_COUNT[] = "ProjectExplorer.BuildConfiguration.BuildStepListCount";
+static const char BUILD_STEP_LIST_PREFIX[] = "ProjectExplorer.BuildConfiguration.BuildStepList.";
+static const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "ProjectExplorer.BuildConfiguration.ClearSystemEnvironment";
+static const char USER_ENVIRONMENT_CHANGES_KEY[] = "ProjectExplorer.BuildConfiguration.UserEnvironmentChanges";
+static const char TOOLCHAIN_KEY[] = "ProjectExplorer.BuildCOnfiguration.ToolChain";
 
-namespace {
+namespace ProjectExplorer {
+namespace Internal {
 
-const char * const BUILD_STEP_LIST_COUNT("ProjectExplorer.BuildConfiguration.BuildStepListCount");
-const char * const BUILD_STEP_LIST_PREFIX("ProjectExplorer.BuildConfiguration.BuildStepList.");
-const char * const CLEAR_SYSTEM_ENVIRONMENT_KEY("ProjectExplorer.BuildConfiguration.ClearSystemEnvironment");
-const char * const USER_ENVIRONMENT_CHANGES_KEY("ProjectExplorer.BuildConfiguration.UserEnvironmentChanges");
-const char * const TOOLCHAIN_KEY("ProjectExplorer.BuildCOnfiguration.ToolChain");
+class BuildConfigMacroExpander : public Utils::AbstractQtcMacroExpander {
+public:
+    explicit BuildConfigMacroExpander(const BuildConfiguration *bc) : m_bc(bc) {}
+    virtual bool resolveMacro(const QString &name, QString *ret);
+private:
+    const BuildConfiguration *m_bc;
+};
 
-} // namespace
+bool BuildConfigMacroExpander::resolveMacro(const QString &name, QString *ret)
+{
+    if (name == QLatin1String("sourceDir")) {
+        *ret = QDir::toNativeSeparators(m_bc->target()->project()->projectDirectory());
+        return true;
+    }
+    if (name == QLatin1String("buildDir")) {
+        *ret = QDir::toNativeSeparators(m_bc->buildDirectory());
+        return true;
+    }
+    *ret = Core::VariableManager::instance()->value(name);
+    return !ret->isEmpty();
+}
+} // namespace Internal
 
 BuildConfiguration::BuildConfiguration(Target *target, const QString &id) :
     ProjectConfiguration(target, id),
     m_clearSystemEnvironment(false),
-    m_macroExpander(this),
-    m_toolChain(0)
+    m_toolChain(0),
+    m_macroExpander(0)
 {
     Q_ASSERT(target);
     BuildStepList *bsl = new BuildStepList(this, QLatin1String(Constants::BUILDSTEPS_BUILD));
@@ -84,8 +107,8 @@ BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *sourc
     ProjectConfiguration(target, source),
     m_clearSystemEnvironment(source->m_clearSystemEnvironment),
     m_userEnvironmentChanges(source->m_userEnvironmentChanges),
-    m_macroExpander(this),
-    m_toolChain(source->m_toolChain)
+    m_toolChain(source->m_toolChain),
+    m_macroExpander(0)
 {
     Q_ASSERT(target);
     // Do not clone stepLists here, do that in the derived constructor instead
@@ -101,7 +124,16 @@ BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *sourc
 }
 
 BuildConfiguration::~BuildConfiguration()
-{ }
+{
+    delete m_macroExpander;
+}
+
+Utils::AbstractMacroExpander *BuildConfiguration::macroExpander()
+{
+    if (!m_macroExpander)
+        m_macroExpander = new Internal::BuildConfigMacroExpander(this);
+    return m_macroExpander;
+}
 
 QStringList BuildConfiguration::knownStepLists() const
 {
@@ -284,20 +316,6 @@ QString BuildConfiguration::disabledReason() const
     return QString();
 }
 
-bool BuildConfigMacroExpander::resolveMacro(const QString &name, QString *ret)
-{
-    if (name == QLatin1String("sourceDir")) {
-        *ret = QDir::toNativeSeparators(m_bc->target()->project()->projectDirectory());
-        return true;
-    }
-    if (name == QLatin1String("buildDir")) {
-        *ret = QDir::toNativeSeparators(m_bc->buildDirectory());
-        return true;
-    }
-    *ret = Core::VariableManager::instance()->value(name);
-    return !ret->isEmpty();
-}
-
 ///
 // IBuildConfigurationFactory
 ///
@@ -308,3 +326,5 @@ IBuildConfigurationFactory::IBuildConfigurationFactory(QObject *parent) :
 
 IBuildConfigurationFactory::~IBuildConfigurationFactory()
 { }
+
+} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h
index b7cada3afb000b3adb4f67ad93b8217ada79d266..54fa99335fa9c99d21e08b2d0fab64718b14fee4 100644
--- a/src/plugins/projectexplorer/buildconfiguration.h
+++ b/src/plugins/projectexplorer/buildconfiguration.h
@@ -36,12 +36,14 @@
 #include "projectexplorer_export.h"
 #include "projectconfiguration.h"
 
-#include <utils/stringutils.h>
 #include <utils/environment.h>
 
-#include <QtCore/QString>
 #include <QtCore/QStringList>
 
+namespace Utils {
+class AbstractMacroExpander;
+}
+
 namespace ProjectExplorer {
 
 class BuildConfiguration;
@@ -50,14 +52,6 @@ class Target;
 class ToolChain;
 class IOutputParser;
 
-class BuildConfigMacroExpander : public Utils::AbstractQtcMacroExpander {
-public:
-    BuildConfigMacroExpander(BuildConfiguration *bc) : m_bc(bc) {}
-    virtual bool resolveMacro(const QString &name, QString *ret);
-private:
-    BuildConfiguration *m_bc;
-};
-
 class PROJECTEXPLORER_EXPORT BuildConfiguration : public ProjectConfiguration
 {
     Q_OBJECT
@@ -94,7 +88,7 @@ public:
     virtual bool isEnabled() const;
     virtual QString disabledReason() const;
 
-    Utils::AbstractMacroExpander *macroExpander() { return &m_macroExpander; }
+    Utils::AbstractMacroExpander *macroExpander();
 
     virtual ProjectExplorer::ToolChain *toolChain() const;
     virtual void setToolChain(ProjectExplorer::ToolChain *tc);
@@ -129,8 +123,8 @@ private:
     bool m_clearSystemEnvironment;
     QList<Utils::EnvironmentItem> m_userEnvironmentChanges;
     QList<BuildStepList *> m_stepLists;
-    BuildConfigMacroExpander m_macroExpander;
     ToolChain *m_toolChain;
+    Utils::AbstractMacroExpander *m_macroExpander;
 };
 
 class PROJECTEXPLORER_EXPORT IBuildConfigurationFactory :
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index 886f6c048f9bcf429bd1bb53fd28e4d607c9ca1b..0da0279603cbe9035df0944474046b2f2d9decc9 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -35,13 +35,12 @@
 
 #include "projectconfiguration.h"
 #include "projectexplorer_export.h"
-#include "task.h"
 
 #include <QtCore/QFutureInterface>
 #include <QtGui/QWidget>
 
 namespace ProjectExplorer {
-
+class Task;
 class BuildConfiguration;
 class BuildStepList;
 class DeployConfiguration;
diff --git a/src/plugins/projectexplorer/clangparser.h b/src/plugins/projectexplorer/clangparser.h
index 6b624b33da00d005ba25840935fe306b8517b2f9..6434ebd154246f605dbf28110870749356766ea8 100644
--- a/src/plugins/projectexplorer/clangparser.h
+++ b/src/plugins/projectexplorer/clangparser.h
@@ -34,6 +34,7 @@
 #define CLANGPARSER_H
 
 #include "ioutputparser.h"
+#include "task.h"
 
 #include <QtCore/QRegExp>
 
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
index a6ce74df44e218647936066389d23c3b6c903974..8305b1e2932424a22a62b50ba460a027fb36bfc9 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
@@ -37,10 +37,12 @@
 #include "debugginghelper.h"
 #include "projectexplorerconstants.h"
 #include "target.h"
+#include "abi.h"
 
 #include <coreplugin/icore.h>
 
 #include <utils/qtcprocess.h>
+#include <utils/stringutils.h>
 
 #include <QtGui/QDialog>
 #include <QtGui/QDialogButtonBox>
diff --git a/src/plugins/projectexplorer/gccparser.cpp b/src/plugins/projectexplorer/gccparser.cpp
index 860c78aa0f146aaac787ec36844986336e7da830..bc790cacbdf96acc6e66446fb7ac8017aa69a2c4 100644
--- a/src/plugins/projectexplorer/gccparser.cpp
+++ b/src/plugins/projectexplorer/gccparser.cpp
@@ -32,16 +32,14 @@
 
 #include "gccparser.h"
 #include "ldparser.h"
-#include "taskwindow.h"
+#include "task.h"
 #include "projectexplorerconstants.h"
 
 using namespace ProjectExplorer;
 
-namespace {
-    // opt. drive letter + filename: (2 brackets)
-    const char * const FILE_PATTERN = "(<command[ -]line>|([A-Za-z]:)?[^:]+\\.[^:]+):";
-    const char * const COMMAND_PATTERN = "^(.*[\\\\/])?([a-z0-9]+-[a-z0-9]+-[a-z0-9]+-)?(gcc|g\\+\\+)(-[0-9\\.]+)?(\\.exe)?: ";
-}
+// opt. drive letter + filename: (2 brackets)
+static const char FILE_PATTERN[] = "(<command[ -]line>|([A-Za-z]:)?[^:]+\\.[^:]+):";
+static const char COMMAND_PATTERN[] = "^(.*[\\\\/])?([a-z0-9]+-[a-z0-9]+-[a-z0-9]+-)?(gcc|g\\+\\+)(-[0-9\\.]+)?(\\.exe)?: ";
 
 GccParser::GccParser()
 {
diff --git a/src/plugins/projectexplorer/gnumakeparser.cpp b/src/plugins/projectexplorer/gnumakeparser.cpp
index ca81054127994d405358e4dbe0abda5db8a21e00..9ddf7afe5d1d4c2d26b981c106a2b28721ffe95b 100644
--- a/src/plugins/projectexplorer/gnumakeparser.cpp
+++ b/src/plugins/projectexplorer/gnumakeparser.cpp
@@ -33,7 +33,7 @@
 #include "gnumakeparser.h"
 
 #include "projectexplorerconstants.h"
-#include "taskwindow.h"
+#include "task.h"
 
 #include <QtCore/QDir>
 #include <QtCore/QFile>
diff --git a/src/plugins/projectexplorer/ldparser.cpp b/src/plugins/projectexplorer/ldparser.cpp
index a3272b0f16a3002ef9d90db590d7804f2794f024..7819dab9de25ecd3cc326a0f3617fe3beac9b8bc 100644
--- a/src/plugins/projectexplorer/ldparser.cpp
+++ b/src/plugins/projectexplorer/ldparser.cpp
@@ -32,7 +32,7 @@
 
 #include "ldparser.h"
 #include "projectexplorerconstants.h"
-#include "taskwindow.h"
+#include "task.h"
 
 using namespace ProjectExplorer;
 
diff --git a/src/plugins/projectexplorer/linuxiccparser.h b/src/plugins/projectexplorer/linuxiccparser.h
index d9b62e26837ce06f13e87385c922bbae1d942c60..4937f8ebd3a8dd0b94c8b6b7be829e1914558782 100644
--- a/src/plugins/projectexplorer/linuxiccparser.h
+++ b/src/plugins/projectexplorer/linuxiccparser.h
@@ -34,6 +34,7 @@
 #define LINUXICCPARSER_H
 
 #include "ioutputparser.h"
+#include "task.h"
 
 #include <QtCore/QRegExp>
 
diff --git a/src/plugins/projectexplorer/localapplicationruncontrol.cpp b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
index b1ca9cb635da831c0cb532b7f2a6279a0deb6e9b..2260c6e2b14ccdc7458372e6651030acfae75d2b 100644
--- a/src/plugins/projectexplorer/localapplicationruncontrol.cpp
+++ b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
@@ -39,6 +39,7 @@
 #include <utils/environment.h>
 
 #include <QtGui/QLabel>
+#include <QtGui/QIcon>
 #include <QtCore/QDir>
 
 namespace ProjectExplorer {
diff --git a/src/plugins/projectexplorer/nodesvisitor.h b/src/plugins/projectexplorer/nodesvisitor.h
index 0a3d86712374910cd79d0834926c7570573a3afa..b4aa19ad00d1bd4f1b61ba457797a54c1033f6d3 100644
--- a/src/plugins/projectexplorer/nodesvisitor.h
+++ b/src/plugins/projectexplorer/nodesvisitor.h
@@ -35,7 +35,6 @@
 
 #include "projectexplorer_export.h"
 
-#include <QtCore/QString>
 #include <QtCore/QStringList>
 
 namespace ProjectExplorer {
diff --git a/src/plugins/projectexplorer/outputparser_test.cpp b/src/plugins/projectexplorer/outputparser_test.cpp
index 0758c92e2bf49dd7aefa1c00a28272c53305e1ff..d9ff74c9b83121075dd30e8f938865e9e7d4bfaf 100644
--- a/src/plugins/projectexplorer/outputparser_test.cpp
+++ b/src/plugins/projectexplorer/outputparser_test.cpp
@@ -31,6 +31,7 @@
 **************************************************************************/
 
 #include "outputparser_test.h"
+#include "task.h"
 
 #if defined(WITH_TESTS)
 
diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h
index 127b173d45e2cbb31cb8d0326ed3f0168b5fe838..06044ca197cf760360706685b52b213ab2ee2a1f 100644
--- a/src/plugins/projectexplorer/projectexplorer.h
+++ b/src/plugins/projectexplorer/projectexplorer.h
@@ -33,11 +33,10 @@
 #ifndef PROJECTEXPLORER_H
 #define PROJECTEXPLORER_H
 
-#include <QtCore/QPair>
-
 #include "projectexplorer_export.h"
 
 #include <extensionsystem/iplugin.h>
+
 #include <QtCore/QPair>
 
 QT_BEGIN_NAMESPACE
@@ -50,10 +49,6 @@ namespace Core {
 class IMode;
 }
 
-namespace Utils {
-class ParameterAction;
-}
-
 namespace ProjectExplorer {
 class BuildManager;
 class RunControl;
@@ -66,7 +61,6 @@ class BuildConfiguration;
 class ProjectNode;
 
 namespace Internal {
-class ProjectFileFactory;
 struct ProjectExplorerSettings;
 }
 
diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h
index 0e0fbafbe19820429cf8dd03ce4dcca1c75407a3..7dbcd893793738cd494f3acdb0380f35e638e3b9 100644
--- a/src/plugins/projectexplorer/projectnodes.h
+++ b/src/plugins/projectexplorer/projectnodes.h
@@ -33,24 +33,23 @@
 #ifndef PROJECTNODES_H
 #define PROJECTNODES_H
 
-#include <QtCore/QObject>
-#include <QtCore/QStringList>
-#include <QtGui/QIcon>
-
-#include "runconfiguration.h"
 #include "projectexplorer_export.h"
 
+#include <QtGui/QIcon>
+
+#include <QtCore/QObject>
+#include <QtCore/QStringList>
 
 QT_BEGIN_NAMESPACE
 class QFileInfo;
 QT_END_NAMESPACE
 
-
 namespace Core {
     class MimeDatabase;
 }
 
 namespace ProjectExplorer {
+class RunConfiguration;
 
 enum NodeType {
     FileNodeType = 1,
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 6d66a03bca2c98949ab2cf64621e2f61f85a2d16..1708865590ce95c533e11773fa02a94ee16fee2a 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -35,11 +35,13 @@
 #include "project.h"
 #include "target.h"
 #include "toolchain.h"
+#include "abi.h"
 #include "buildconfiguration.h"
 #include "projectexplorerconstants.h"
 #include <extensionsystem/pluginmanager.h>
 
 #include <utils/qtcassert.h>
+#include <utils/outputformatter.h>
 #include <utils/checkablemessagebox.h>
 
 #include <coreplugin/icore.h>
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index ec1de471bab886d61e17a5d2600d964acb5bfa30..4c963a599e45af11c5d9b7bc4dd09cf77443589d 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -33,19 +33,23 @@
 #ifndef RUNCONFIGURATION_H
 #define RUNCONFIGURATION_H
 
-#include "abi.h"
 #include "projectconfiguration.h"
 #include "projectexplorer_export.h"
 
-#include <utils/outputformatter.h>
+#include <utils/outputformat.h>
 
 #include <QtCore/QMetaType>
 #include <QtCore/QWeakPointer>
 #include <QtGui/QWidget>
-#include <QtGui/QIcon>
 
-namespace ProjectExplorer {
+QT_FORWARD_DECLARE_CLASS(QIcon)
+
+namespace Utils {
+class OutputFormatter;
+}
 
+namespace ProjectExplorer {
+class Abi;
 class BuildConfiguration;
 class IRunConfigurationAspect;
 class RunControl;
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index 66f0f8413c2f8e61277ea46e92a1ac6d9e00a37a..31ae8613972472b57ec4b232cbed5a5bdda8c7bb 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -32,6 +32,7 @@
 
 #include "target.h"
 
+#include "toolchain.h"
 #include "buildconfiguration.h"
 #include "deployconfiguration.h"
 #include "project.h"
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index 4bceb30954578a95d524dd00b3ad97052cb9677f..7d0f2eefd897caf7ee571c1dd198c7b0180bc0f0 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -51,7 +51,6 @@ class ToolChainPrivate;
 }
 
 class Abi;
-class HeaderPath;
 class IOutputParser;
 class ToolChainConfigWidget;
 class ToolChainFactory;
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index 7d18ace153159d1e860562cd38766255f26a42a6..c61de00f5076c136b891c3decec0ae53e6a96fa6 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -31,7 +31,7 @@
 **************************************************************************/
 
 #include "toolchainmanager.h"
-
+#include "abi.h"
 #include "toolchain.h"
 
 #include <coreplugin/icore.h>
diff --git a/src/plugins/projectexplorer/toolchainmanager.h b/src/plugins/projectexplorer/toolchainmanager.h
index 441292a6eafae93972e0c184464d9e17925eb4e6..04acb59a4b063a2c9d7288513f020897f2f97618 100644
--- a/src/plugins/projectexplorer/toolchainmanager.h
+++ b/src/plugins/projectexplorer/toolchainmanager.h
@@ -35,9 +35,6 @@
 
 #include "projectexplorer_export.h"
 
-#include "abi.h"
-#include "toolchain.h"
-
 #include <QtCore/QList>
 #include <QtCore/QObject>
 #include <QtCore/QString>
@@ -46,6 +43,7 @@ namespace ProjectExplorer {
 class ProjectExplorerPlugin;
 class ToolChain;
 class ToolChainFactory;
+class Abi;
 
 namespace Internal {
 class ToolChainManagerPrivate;
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp
index f54b8500f05b93c81270cc5a7e7898ab21ef5d84..b2bf43d9bc4a48027377756826b5c212105a0acf 100644
--- a/src/plugins/projectexplorer/toolchainoptionspage.cpp
+++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp
@@ -31,7 +31,8 @@
 **************************************************************************/
 
 #include "toolchainoptionspage.h"
-
+#include "toolchain.h"
+#include "abi.h"
 #include "projectexplorerconstants.h"
 #include "toolchainconfigwidget.h"
 #include "toolchainmanager.h"
diff --git a/src/plugins/qt4projectmanager/qmakeparser.cpp b/src/plugins/qt4projectmanager/qmakeparser.cpp
index dfc25145470751434efd2e83ae44a951a58ff49a..d2ef87fff0576347fe4821c456b74e23e8ed4c04 100644
--- a/src/plugins/qt4projectmanager/qmakeparser.cpp
+++ b/src/plugins/qt4projectmanager/qmakeparser.cpp
@@ -33,7 +33,7 @@
 #include "qmakeparser.h"
 #include "qt4projectmanagerconstants.h"
 
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <utils/qtcassert.h>
 
@@ -41,11 +41,9 @@ using namespace Qt4ProjectManager;
 using namespace Qt4ProjectManager::Internal;
 using ProjectExplorer::Task;
 
-QMakeParser::QMakeParser()
+QMakeParser::QMakeParser() : m_error(QLatin1String("^(.+):(\\d+):\\s(.+)$"))
 {
     setObjectName(QLatin1String("QMakeParser"));
-
-    m_error.setPattern("^(.+):(\\d+):\\s(.+)$");
     m_error.setMinimal(true);
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
index 25048dea339922ae71b81913b7e43a6d3f17d5b4..e9d0eb4437b66f82d4cc85b4e4507cab8307c33f 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
@@ -54,6 +54,7 @@
 #include <utils/qtcprocess.h>
 #include <utils/pathchooser.h>
 #include <utils/detailswidget.h>
+#include <utils/stringutils.h>
 #include <utils/debuggerlanguagechooser.h>
 #include <qtsupport/qtoutputformatter.h>
 #include <qtsupport/baseqtversion.h>
diff --git a/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp b/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
index 504ac6520087dca97d9303a213ff4724e44bb6e1..7e8e53b485d0b7f12835f1ee30140e171039db2c 100644
--- a/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
@@ -33,7 +33,7 @@
 #include "abldparser.h"
 
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 
 using namespace Qt4ProjectManager;
 using namespace ProjectExplorer;
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
index 5c5ad17f82cf70286a165dae8d049a230dbd5bd3..28ead6c187c8d47f2f34dc7e9c2bd3800749fa92 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
@@ -41,6 +41,7 @@
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/project.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <symbianutils/symbiandevicemanager.h>
 #include <extensionsystem/pluginmanager.h>
 #include <QtGui/QPainter>
diff --git a/src/plugins/qt4projectmanager/qt-s60/rvctparser.cpp b/src/plugins/qt4projectmanager/qt-s60/rvctparser.cpp
index c783b4abc2a2ee56cc7153446a147f466ecf34e8..61b58c89f482fc3e0ffa6cf08fff26dc0d67785c 100644
--- a/src/plugins/qt4projectmanager/qt-s60/rvctparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/rvctparser.cpp
@@ -32,7 +32,7 @@
 
 #include "rvctparser.h"
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 
 using namespace ProjectExplorer;
 using namespace ProjectExplorer::Constants;
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackageparser.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackageparser.cpp
index 5dfea8114eb35be36bf9375930eeb9d714e636e1..f4319b108057a1b0f829a72fd45e0baa3bb03e2e 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60createpackageparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackageparser.cpp
@@ -33,7 +33,7 @@
 #include "s60createpackageparser.h"
 
 #include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 
 using namespace Qt4ProjectManager::Internal;
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/winscwparser.cpp b/src/plugins/qt4projectmanager/qt-s60/winscwparser.cpp
index b2f2c8d962481073451e9f1fa4ed26290b3203f0..61b11fe6c8bf9efb8112a73430585964adf0e4ea 100644
--- a/src/plugins/qt4projectmanager/qt-s60/winscwparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/winscwparser.cpp
@@ -33,6 +33,7 @@
 #include "winscwparser.h"
 
 #include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/task.h>
 
 using namespace Qt4ProjectManager;
 using namespace ProjectExplorer;
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 2e310ac6ab9ec33a79c4cb3658a9eb1a14ab24f2..59c1992adb6851fe68dcb41aa4375ca045d9be25 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -45,6 +45,8 @@
 #include <coreplugin/icore.h>
 
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
+#include <projectexplorer/task.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/buildconfiguration.h>
 #include <qtsupport/qtversionfactory.h>
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 2ec2103cc6ee8f20a77f2d9c79da7b3d35e58654..ff32dc935510757e7107f7c191d0e1712666fa26 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -46,12 +46,14 @@
 #include <projectexplorer/runconfiguration.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/task.h>
 #include <qtsupport/qtversionfactory.h>
 #include <qtsupport/baseqtversion.h>
 #include <utils/pathchooser.h>
 #include <utils/detailswidget.h>
+#include <utils/qtcprocess.h>
 
 #include <QtCore/QCoreApplication>
 #include <QtGui/QPushButton>
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 0f5d84801c17cfb7db8c6ac92e9bd9807e9908c5..ddf6ba6cf0bef00cc694e848bb137174764d5f3a 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -38,6 +38,7 @@
 #include "qtversionmanager.h"
 #include "profilereader.h"
 #include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/toolchain.h>
 #include <projectexplorer/debugginghelper.h>
 #include <projectexplorer/gnumakeparser.h>
 #include <projectexplorer/projectexplorer.h>
diff --git a/src/plugins/qtsupport/qtparser.cpp b/src/plugins/qtsupport/qtparser.cpp
index 9d11f5298f3ea06210bb02f9037febc99107c71c..9d67772ca50748d9a833224f70fbc3d2708bbf7d 100644
--- a/src/plugins/qtsupport/qtparser.cpp
+++ b/src/plugins/qtsupport/qtparser.cpp
@@ -32,20 +32,21 @@
 
 #include "qtparser.h"
 
-#include <projectexplorer/taskwindow.h>
+#include <projectexplorer/task.h>
 #include <projectexplorer/projectexplorerconstants.h>
+
 #include <utils/qtcassert.h>
 
 using namespace QtSupport;
 using ProjectExplorer::Task;
 
 // opt. drive letter + filename: (2 brackets)
-static const char FILE_PATTERN[] = "^(([A-Za-z]:)?[^:]+\\.[^:]+)";
+#define FILE_PATTERN "^(([A-Za-z]:)?[^:]+\\.[^:]+)"
 
-QtParser::QtParser()
+QtParser::QtParser() :
+    m_mocRegExp(QLatin1String(FILE_PATTERN"[:\\(](\\d+)\\)?:\\s(Warning|Error):\\s(.+)$"))
 {
     setObjectName(QLatin1String("QtParser"));
-    m_mocRegExp.setPattern(QString::fromLatin1(FILE_PATTERN) + "[:\\(](\\d+)\\)?:\\s(Warning|Error):\\s(.+)$");
     m_mocRegExp.setMinimal(true);
 }
 
diff --git a/src/plugins/remotelinux/abstractpackagingstep.cpp b/src/plugins/remotelinux/abstractpackagingstep.cpp
index d83539cdfdab267c41b1815c33a17bf65fb93f36..e4b92a75957ef0fdf0cb506554e0cd302044490e 100644
--- a/src/plugins/remotelinux/abstractpackagingstep.cpp
+++ b/src/plugins/remotelinux/abstractpackagingstep.cpp
@@ -37,6 +37,7 @@
 #include <projectexplorer/buildconfiguration.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/target.h>
+#include <projectexplorer/task.h>
 #include <utils/fileutils.h>
 
 #include <QtCore/QDateTime>
diff --git a/src/plugins/remotelinux/remotelinuxruncontrol.cpp b/src/plugins/remotelinux/remotelinuxruncontrol.cpp
index 2935a369aaf2db432b9d61adb15f02c8cbe7d540..f0e441178cdbd19d63ac6420c11094850000af81 100644
--- a/src/plugins/remotelinux/remotelinuxruncontrol.cpp
+++ b/src/plugins/remotelinux/remotelinuxruncontrol.cpp
@@ -37,9 +37,11 @@
 #include <projectexplorer/projectexplorerconstants.h>
 #include <utils/qtcassert.h>
 
-#include <QtCore/QString>
+#include <QtGui/QIcon>
 #include <QtGui/QMessageBox>
 
+#include <QtCore/QString>
+
 using namespace ProjectExplorer;
 
 namespace RemoteLinux {