diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index a7f5ceff4ee0731445dbb8d399835522f8928b1e..6819fbbb0aedc191df75273d0634c4ce02ac4108 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -43,6 +43,7 @@
 
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/headerpath.h>
 #include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/buildmanager.h>
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index 7a187ba1677614432d3f34cac9f2c9a880b813f2..008c4f0ae549db97a5c76afad9a0ce8401f0ea47 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -41,8 +41,13 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/helpmanager.h>
 #include <projectexplorer/debugginghelper.h>
+#include <projectexplorer/environmentwidget.h>
+
+#include <utils/pathchooser.h>
+#include <utils/detailswidget.h>
 #include <utils/qtcassert.h>
 #include <utils/debuggerlanguagechooser.h>
+
 #include <QtGui/QFormLayout>
 #include <QtGui/QLineEdit>
 #include <QtGui/QGroupBox>
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
index 1e3df0de11ad05a864913bc19520ea4e37200e9c..978d10b1813b2582db258400114f306587fc39da 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
@@ -35,12 +35,7 @@
 #define CMAKERUNCONFIGURATION_H
 
 #include <projectexplorer/applicationrunconfiguration.h>
-#include <projectexplorer/persistentsettings.h>
-#include <projectexplorer/environmentwidget.h>
-#include <projectexplorer/toolchain.h>
 #include <utils/environment.h>
-#include <utils/pathchooser.h>
-#include <utils/detailswidget.h>
 
 QT_BEGIN_NAMESPACE
 class QComboBox;
@@ -48,6 +43,12 @@ QT_END_NAMESPACE
 
 namespace Utils {
 class DebuggerLanguageChooser;
+class PathChooser;
+class DetailsWidget;
+}
+
+namespace ProjectExplorer {
+class EnvironmentWidget;
 }
 
 namespace CMakeProjectManager {
diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.h b/src/plugins/coreplugin/dialogs/ioptionspage.h
index a9069ad98b3d5cd828efa48ee338edcc188488bd..6bfd92a9ebcb94f4149c0161eb385e07829d291e 100644
--- a/src/plugins/coreplugin/dialogs/ioptionspage.h
+++ b/src/plugins/coreplugin/dialogs/ioptionspage.h
@@ -36,10 +36,10 @@
 
 #include <coreplugin/core_global.h>
 
-#include <QtGui/QIcon>
 #include <QtCore/QObject>
 
 QT_BEGIN_NAMESPACE
+class QIcon;
 class QWidget;
 QT_END_NAMESPACE
 
diff --git a/src/plugins/cpaster/codepastersettings.cpp b/src/plugins/cpaster/codepastersettings.cpp
index 5d1a6d5d6f948cd26e0b6251ee45fa7a17833804..42577626b0d4b66bffb5be193f59b56911586c63 100644
--- a/src/plugins/cpaster/codepastersettings.cpp
+++ b/src/plugins/cpaster/codepastersettings.cpp
@@ -44,6 +44,7 @@
 #include <QtGui/QFormLayout>
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QLabel>
+#include <QtGui/QIcon>
 #include <QtCore/QDebug>
 #include <QtCore/QVariant>
 
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index ef7468200f0f1348abe82cd20ae7ebed275fae6a..d668762135d5e0fcf743f1c196dd5ff0b5fc52ce 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -58,7 +58,7 @@
 
 #include <coreplugin/icore.h>
 #include <texteditor/itexteditor.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 #include <projectexplorer/projectexplorerconstants.h>
 
 #include <utils/synchronousprocess.h>
diff --git a/src/plugins/debugger/commonoptionspage.h b/src/plugins/debugger/commonoptionspage.h
index f975fd71116e26ad955efb952c4a36d5cfaab5a2..491d3a71ae6ec11779447176b302f272a7bfb3f9 100644
--- a/src/plugins/debugger/commonoptionspage.h
+++ b/src/plugins/debugger/commonoptionspage.h
@@ -38,10 +38,8 @@
 #include "ui_dumperoptionpage.h"
 
 #include <coreplugin/dialogs/ioptionspage.h>
-#include <projectexplorer/toolchain.h>
 #include <utils/savedaction.h>
 
-
 namespace Debugger {
 namespace Internal {
 
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index ad0ea208f3c67a8ea2df7a8f00bf9b6ef044c453..2b04903d9f61f75e7ed50cb5e5590f7105659cb5 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -75,7 +75,7 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/ifile.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <texteditor/itexteditor.h>
 #include <utils/qtcassert.h>
diff --git a/src/plugins/designer/settingspage.cpp b/src/plugins/designer/settingspage.cpp
index cff71cf785134ea21e71b5c56d11dacd6374c994..29789c7e24ad2cbf84f9bad8d70e833e511c0f2e 100644
--- a/src/plugins/designer/settingspage.cpp
+++ b/src/plugins/designer/settingspage.cpp
@@ -37,7 +37,9 @@
 
 #include <extensionsystem/pluginmanager.h>
 #include "qt_private/abstractoptionspage_p.h"
+
 #include <QtCore/QCoreApplication>
+#include <QtGui/QIcon>
 
 using namespace Designer::Internal;
 
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index 77fc23dcb982b68dcf15448a601b2ebd2e67ad7c..841e547486095148cff41cd0f6d34e3be74ba2d3 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -38,6 +38,7 @@
 #include "generictarget.h"
 
 #include <projectexplorer/buildenvironmentwidget.h>
+#include <projectexplorer/headerpath.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/toolchainmanager.h>
 #include <projectexplorer/projectexplorerconstants.h>
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index 37591518e044ac2664825c9b91068fecee7ee105..4908dd769481c95b7cfe0410ad96a4eccc65164a 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -32,13 +32,16 @@
 **************************************************************************/
 
 #include "gcctoolchain.h"
+#include "gcctoolchainfactories.h"
 #include "gccparser.h"
 #include "linuxiccparser.h"
+#include "headerpath.h"
 #include "projectexplorerconstants.h"
 
 #include <utils/environment.h>
 #include <utils/synchronousprocess.h>
 #include <utils/qtcassert.h>
+#include <utils/pathchooser.h>
 
 #include <QtCore/QBuffer>
 #include <QtCore/QCoreApplication>
diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h
index e350e857361708e8d3274c96c36566c04daa5aae..c0a79c16b75f94ea29f554620ba8e97e12c21edc 100644
--- a/src/plugins/projectexplorer/gcctoolchain.h
+++ b/src/plugins/projectexplorer/gcctoolchain.h
@@ -37,14 +37,7 @@
 #include "projectexplorer_export.h"
 
 #include "toolchain.h"
-
-#include "toolchainconfigwidget.h"
-
-#include <utils/pathchooser.h>
-
-QT_BEGIN_NAMESPACE
-class QCheckBox;
-QT_END_NAMESPACE
+#include "abi.h"
 
 namespace ProjectExplorer {
 
@@ -116,69 +109,6 @@ private:
     friend class ToolChainFactory;
 };
 
-
-// --------------------------------------------------------------------------
-// GccToolChainFactory
-// --------------------------------------------------------------------------
-
-namespace Internal {
-
-class GccToolChainFactory : public ToolChainFactory
-{
-    Q_OBJECT
-
-public:
-    // Name used to display the name of the toolchain that will be created.
-    QString displayName() const;
-    QString id() const;
-
-    QList<ToolChain *> autoDetect();
-
-    bool canCreate();
-    ToolChain *create();
-
-    // Used by the ToolChainManager to restore user-generated ToolChains
-    bool canRestore(const QVariantMap &data);
-    ToolChain *restore(const QVariantMap &data);
-
-protected:
-    virtual GccToolChain *createToolChain(bool autoDetect);
-    QList<ToolChain *> autoDetectToolchains(const QString &compiler,
-                                            const QStringList &debuggers,
-                                            const Abi &);
-};
-
-} // namespace Internal
-
-// --------------------------------------------------------------------------
-// GccToolChainConfigWidget
-// --------------------------------------------------------------------------
-
-namespace Internal {
-
-class GccToolChainConfigWidget : public ToolChainConfigWidget
-{
-    Q_OBJECT
-
-public:
-    GccToolChainConfigWidget(GccToolChain *);
-    void apply();
-    void discard() { setFromToolchain(); }
-    bool isDirty() const;
-
-private slots:
-    void handlePathChange();
-    void handle32BitChange();
-
-private:
-    void setFromToolchain();
-
-    Utils::PathChooser *m_compilerPath;
-    QCheckBox *m_force32BitCheckBox;
-};
-
-} // namespace Internal
-
 // --------------------------------------------------------------------------
 // MingwToolChain
 // --------------------------------------------------------------------------
@@ -198,36 +128,6 @@ private:
     friend class ToolChainFactory;
 };
 
-// --------------------------------------------------------------------------
-// MingwToolChainFactory
-// --------------------------------------------------------------------------
-
-namespace Internal {
-
-class MingwToolChainFactory : public GccToolChainFactory
-{
-    Q_OBJECT
-
-public:
-    // Name used to display the name of the toolchain that will be created.
-    QString displayName() const;
-    QString id() const;
-
-    QList<ToolChain *> autoDetect();
-
-    bool canCreate();
-    ToolChain *create();
-
-    // Used by the ToolChainManager to restore user-generated ToolChains
-    bool canRestore(const QVariantMap &data);
-    ToolChain *restore(const QVariantMap &data);
-
-protected:
-    GccToolChain *createToolChain(bool autoDetect);
-};
-
-} // namespace Internal
-
 // --------------------------------------------------------------------------
 // LinuxIccToolChain
 // --------------------------------------------------------------------------
@@ -249,34 +149,6 @@ private:
     friend class ToolChainFactory;
 };
 
-// --------------------------------------------------------------------------
-// LinuxIccToolChainFactory
-// --------------------------------------------------------------------------
-
-namespace Internal {
-
-class LinuxIccToolChainFactory : public GccToolChainFactory
-{
-    Q_OBJECT
-
-public:
-    // Name used to display the name of the toolchain that will be created.
-    QString displayName() const;
-    QString id() const;
-
-    QList<ToolChain *> autoDetect();
-
-    ToolChain *create();
-
-    // Used by the ToolChainManager to restore user-generated ToolChains
-    bool canRestore(const QVariantMap &data);
-    ToolChain *restore(const QVariantMap &data);
-
-protected:
-    GccToolChain *createToolChain(bool autoDetect);
-};
-
-} // namespace Internal
 } // namespace ProjectExplorer
 
 #endif // GCCTOOLCHAIN_H
diff --git a/src/plugins/projectexplorer/gcctoolchainfactories.h b/src/plugins/projectexplorer/gcctoolchainfactories.h
new file mode 100644
index 0000000000000000000000000000000000000000..852349537b4f750f70d0957cefec59c322125c89
--- /dev/null
+++ b/src/plugins/projectexplorer/gcctoolchainfactories.h
@@ -0,0 +1,157 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** No Commercial Usage
+**
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+
+#ifndef GCCTOOLCHAINFACTORIES_H
+#define GCCTOOLCHAINFACTORIES_H
+
+#include "toolchain.h"
+#include "toolchainconfigwidget.h"
+
+QT_BEGIN_NAMESPACE
+class QCheckBox;
+QT_END_NAMESPACE
+
+namespace Utils {
+class PathChooser;
+}
+
+namespace ProjectExplorer {
+class GccToolChain;
+
+namespace Internal {
+
+class GccToolChainFactory : public ToolChainFactory
+{
+    Q_OBJECT
+
+public:
+    // Name used to display the name of the toolchain that will be created.
+    QString displayName() const;
+    QString id() const;
+
+    QList<ToolChain *> autoDetect();
+
+    bool canCreate();
+    ToolChain *create();
+
+    // Used by the ToolChainManager to restore user-generated ToolChains
+    bool canRestore(const QVariantMap &data);
+    ToolChain *restore(const QVariantMap &data);
+
+protected:
+    virtual GccToolChain *createToolChain(bool autoDetect);
+    QList<ToolChain *> autoDetectToolchains(const QString &compiler,
+                                            const QStringList &debuggers,
+                                            const Abi &);
+};
+
+// --------------------------------------------------------------------------
+// GccToolChainConfigWidget
+// --------------------------------------------------------------------------
+
+class GccToolChainConfigWidget : public ToolChainConfigWidget
+{
+    Q_OBJECT
+
+public:
+    GccToolChainConfigWidget(GccToolChain *);
+    void apply();
+    void discard() { setFromToolchain(); }
+    bool isDirty() const;
+
+private slots:
+    void handlePathChange();
+    void handle32BitChange();
+
+private:
+    void setFromToolchain();
+
+    Utils::PathChooser *m_compilerPath;
+    QCheckBox *m_force32BitCheckBox;
+};
+
+// --------------------------------------------------------------------------
+// MingwToolChainFactory
+// --------------------------------------------------------------------------
+
+class MingwToolChainFactory : public GccToolChainFactory
+{
+    Q_OBJECT
+
+public:
+    // Name used to display the name of the toolchain that will be created.
+    QString displayName() const;
+    QString id() const;
+
+    QList<ToolChain *> autoDetect();
+
+    bool canCreate();
+    ToolChain *create();
+
+    // Used by the ToolChainManager to restore user-generated ToolChains
+    bool canRestore(const QVariantMap &data);
+    ToolChain *restore(const QVariantMap &data);
+
+protected:
+    GccToolChain *createToolChain(bool autoDetect);
+};
+
+// --------------------------------------------------------------------------
+// LinuxIccToolChainFactory
+// --------------------------------------------------------------------------
+
+class LinuxIccToolChainFactory : public GccToolChainFactory
+{
+    Q_OBJECT
+
+public:
+    // Name used to display the name of the toolchain that will be created.
+    QString displayName() const;
+    QString id() const;
+
+    QList<ToolChain *> autoDetect();
+
+    ToolChain *create();
+
+    // Used by the ToolChainManager to restore user-generated ToolChains
+    bool canRestore(const QVariantMap &data);
+    ToolChain *restore(const QVariantMap &data);
+
+protected:
+    GccToolChain *createToolChain(bool autoDetect);
+};
+
+} // namespace Internal
+} // namespace ProjectExplorer
+
+#endif // GCCTOOLCHAINFACTORIES_H
diff --git a/src/plugins/projectexplorer/headerpath.h b/src/plugins/projectexplorer/headerpath.h
new file mode 100644
index 0000000000000000000000000000000000000000..44454ed9ecc9d3e2af3627b2d4f4009a819fd29a
--- /dev/null
+++ b/src/plugins/projectexplorer/headerpath.h
@@ -0,0 +1,68 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** No Commercial Usage
+**
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+
+#ifndef HEADERPATH_H
+#define HEADERPATH_H
+
+#include "projectexplorer_export.h"
+
+namespace ProjectExplorer {
+
+class PROJECTEXPLORER_EXPORT HeaderPath
+{
+public:
+    enum Kind {
+        GlobalHeaderPath,
+        UserHeaderPath,
+        FrameworkHeaderPath
+    };
+
+    HeaderPath()
+        : m_kind(GlobalHeaderPath)
+    { }
+
+    HeaderPath(const QString &path, Kind kind)
+        : m_path(path), m_kind(kind)
+    { }
+
+    QString path() const { return m_path; }
+    Kind kind() const { return m_kind; }
+
+private:
+    QString m_path;
+    Kind m_kind;
+};
+
+} // namespace ProjectExplorer
+
+#endif // HEADERPATH_H
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index 02872ec7d33ec13070a997a18132a53dfdc9ab69..bc22bf9fc6312f9fc59a92d3cbafaff3e4d33ffe 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -34,6 +34,7 @@
 #include "msvctoolchain.h"
 #include "msvcparser.h"
 #include "projectexplorerconstants.h"
+#include "headerpath.h"
 
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorersettings.h>
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index 385b02881255e1dabbc5cd7eb38be0718212221a..8c4cc9eb85e6077a6a52c6f6cc64346839a3a51e 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -35,6 +35,7 @@
 #define MSVCTOOLCHAIN_H
 
 #include "toolchain.h"
+#include "abi.h"
 #include "toolchainconfigwidget.h"
 
 #include <utils/environment.h>
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 508e31ae0d33a3c4235593860172c2fbd6609a76..4c9caa9dab03194c9c9fc90fc0165863bf310861 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -35,7 +35,7 @@
 
 #include "buildsteplist.h"
 #include "deployconfiguration.h"
-#include "gcctoolchain.h"
+#include "gcctoolchainfactories.h"
 #include "msvctoolchain.h"
 #include "project.h"
 #include "projectexplorersettings.h"
diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro
index 81618e6e57d772db2447497965624b5b9f1ea32d..f4616a76b49ffd498e96d906c377601503788413 100644
--- a/src/plugins/projectexplorer/projectexplorer.pro
+++ b/src/plugins/projectexplorer/projectexplorer.pro
@@ -105,7 +105,9 @@ HEADERS += projectexplorer.h \
     sessionnodeimpl.h \
     metatypedeclarations.h \
     publishing/publishingwizardselectiondialog.h \
-    publishing/ipublishingwizardfactory.h
+    publishing/ipublishingwizardfactory.h \
+    headerpath.h \
+    gcctoolchainfactories.h
 
 SOURCES += projectexplorer.cpp \
     abi.cpp \
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index d2e7b5dc3efd82e68e7c9ee071fce6267e893fc0..bc86ad7e0541dcd9eda35cc7594e523645833c3b 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -36,12 +36,8 @@
 
 #include "projectexplorer_export.h"
 
-#include "abi.h"
-
 #include <QtCore/QObject>
 #include <QtCore/QString>
-#include <QtCore/QPair>
-#include <QtCore/QMetaType>
 #include <QtCore/QVariantMap>
 
 namespace Utils {
@@ -54,38 +50,11 @@ namespace Internal {
 class ToolChainPrivate;
 }
 
+class Abi;
 class IOutputParser;
 class ToolChainConfigWidget;
 class ToolChainFactory;
-
-// --------------------------------------------------------------------------
-// HeaderPath
-// --------------------------------------------------------------------------
-
-class PROJECTEXPLORER_EXPORT HeaderPath
-{
-public:
-    enum Kind {
-        GlobalHeaderPath,
-        UserHeaderPath,
-        FrameworkHeaderPath
-    };
-
-    HeaderPath()
-        : m_kind(GlobalHeaderPath)
-    { }
-
-    HeaderPath(const QString &path, Kind kind)
-        : m_path(path), m_kind(kind)
-    { }
-
-    QString path() const { return m_path; }
-    Kind kind() const { return m_kind; }
-
-private:
-    QString m_path;
-    Kind m_kind;
-};
+class HeaderPath;
 
 // --------------------------------------------------------------------------
 // ToolChain
diff --git a/src/plugins/projectexplorer/toolchainconfigwidget.cpp b/src/plugins/projectexplorer/toolchainconfigwidget.cpp
index 50ff46a0afbedf4940afddca135b4e386a22da65..70a1c460231ce78d0e0b100f45485615b9ddc9b3 100644
--- a/src/plugins/projectexplorer/toolchainconfigwidget.cpp
+++ b/src/plugins/projectexplorer/toolchainconfigwidget.cpp
@@ -32,7 +32,6 @@
 **************************************************************************/
 
 #include "toolchainconfigwidget.h"
-
 #include "toolchain.h"
 
 #include <utils/qtcassert.h>
@@ -58,8 +57,6 @@ public:
         Q_ASSERT(tc);
     }
 
-
-
     ToolChain *m_toolChain;
     Utils::PathChooser *m_debuggerPathChooser;
     QLabel *m_errorLabel;
@@ -176,5 +173,4 @@ void ToolChainConfigWidget::clearErrorMessage()
     m_d->m_errorLabel->setVisible(false);
 }
 
-
 } // namespace ProjectExplorer
diff --git a/src/plugins/qt4projectmanager/debugginghelperbuildtask.h b/src/plugins/qt4projectmanager/debugginghelperbuildtask.h
index 3db7f8ce6dd834d8bd9e1af3e7a60a33ce84f9b8..8caa14a281c92e6746cd3dd8cfaac6c32832831e 100644
--- a/src/plugins/qt4projectmanager/debugginghelperbuildtask.h
+++ b/src/plugins/qt4projectmanager/debugginghelperbuildtask.h
@@ -35,8 +35,11 @@
 #define DEBUGGINGHELPERBUILDTASK_H
 
 #include "qtversionmanager.h"
+
 #include <utils/environment.h>
+
 #include <QtCore/QObject>
+#include <QtCore/QMetaType>
 
 namespace Qt4ProjectManager {
 namespace Internal {
diff --git a/src/plugins/qt4projectmanager/qmldumptool.h b/src/plugins/qt4projectmanager/qmldumptool.h
index f02b03d1c6f3fa0628fcc6b2cce393eb5f105ce2..4d754aaf22967a6322587f02536213bde6f2afab 100644
--- a/src/plugins/qt4projectmanager/qmldumptool.h
+++ b/src/plugins/qt4projectmanager/qmldumptool.h
@@ -34,9 +34,10 @@
 #ifndef QMLDUMPTOOL_H
 #define QMLDUMPTOOL_H
 
-#include <utils/buildablehelperlibrary.h>
 #include "qt4projectmanager_global.h"
 
+#include <utils/buildablehelperlibrary.h>
+
 namespace Utils {
     class Environment;
 }
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
index d042add87f32906bd859cefe0610bb193c9e3a02..0abca1c266a3ac611f78746e0244b6f2c2269b8c 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
@@ -46,7 +46,7 @@
 #include <debugger/debuggerstartparameters.h>
 #include <debugger/debuggerrunner.h>
 #include <debugger/debuggerengine.h>
-#include <projectexplorer/toolchain.h>
+#include <projectexplorer/abi.h>
 
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosettingspages.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosettingspages.cpp
index 46f31d8e39aed5ec6faabdc7da9a63420441c7a5..32070694f75f339d94b68829669d8a0738cbcd6f 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemosettingspages.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemosettingspages.cpp
@@ -54,6 +54,7 @@
 #include <QtGui/QFrame>
 #include <QtGui/QLabel>
 #include <QtGui/QVBoxLayout>
+#include <QtGui/QIcon>
 
 namespace Qt4ProjectManager {
 namespace Internal {
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
index c34986fbaddd3068dcde6dcf92dc4631614238cf..04144c4c7affdc40a6519d099d69d9c6688e0ef6 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp
@@ -39,6 +39,7 @@
 #include "qtversionmanager.h"
 
 #include <projectexplorer/gccparser.h>
+#include <projectexplorer/headerpath.h>
 #include <projectexplorer/toolchainmanager.h>
 #include <utils/environment.h>
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
index 0860a518a5a39976d446b39a1845254a0f98be0b..6ebb962592613bfdb90eb6acaadb178530692fe5 100644
--- a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
@@ -36,6 +36,7 @@
 
 #include <utils/environment.h>
 #include <utils/synchronousprocess.h>
+#include <projectexplorer/headerpath.h>
 
 #include <QtCore/QDir>
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
index 678bc074721ce1428be70d7df01ffad8089efc3e..c0be97638b24b083aefa70b6aef155ab5a7d079f 100644
--- a/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/rvcttoolchain.cpp
@@ -36,6 +36,8 @@
 #include "ui_rvcttoolchainconfigwidget.h"
 #include "qt4projectmanager/qt4projectmanagerconstants.h"
 
+#include <projectexplorer/abi.h>
+#include <projectexplorer/headerpath.h>
 #include <utils/environment.h>
 #include <utils/environmentmodel.h>
 #include <utils/synchronousprocess.h>
diff --git a/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
index fd45f2fea94deecb62811212d4e9902470e1d948..d64bb50094a3574dc1f8f873181ab11bc4e368ee 100644
--- a/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/winscwtoolchain.cpp
@@ -38,6 +38,8 @@
 #include "ui_winscwtoolchainconfigwidget.h"
 #include "winscwparser.h"
 
+#include <projectexplorer/abi.h>
+#include <projectexplorer/headerpath.h>
 #include <utils/environment.h>
 
 #include <QtCore/QDir>
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index bbfedd800263044db44267bdc3c390c6116736f8..e997d5e21d9b8579a0643f6f82ec26ce12edf9d9 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -53,6 +53,7 @@
 #include <cplusplus/ModelManagerInterface.h>
 #include <qmljs/qmljsmodelmanagerinterface.h>
 #include <projectexplorer/toolchain.h>
+#include <projectexplorer/headerpath.h>
 #include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/customexecutablerunconfiguration.h>
 #include <projectexplorer/projectexplorer.h>
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index 5cdf60aff3e2630033a98fc363a2d41e0caa6922..578a5935c8687e862a7eca1e0e037cd779a5eeee 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -38,6 +38,7 @@
 #include "qtversionmanager.h"
 
 #include <projectexplorer/target.h>
+#include <projectexplorer/task.h>
 #include <projectexplorer/projectnodes.h>
 
 namespace Utils {
diff --git a/src/plugins/qt4projectmanager/qtoptionspage.h b/src/plugins/qt4projectmanager/qtoptionspage.h
index b9588eb7113b469c5130e5534e15aa286d016129..eafdce4cf64b526eedacbf6ccbf4a488eb9894b8 100644
--- a/src/plugins/qt4projectmanager/qtoptionspage.h
+++ b/src/plugins/qt4projectmanager/qtoptionspage.h
@@ -33,16 +33,15 @@
 #ifndef QTOPTIONSPAGE_H
 #define QTOPTIONSPAGE_H
 
+#include "debugginghelperbuildtask.h"
+
 #include <coreplugin/dialogs/ioptionspage.h>
-#include <utils/environment.h>
 
 #include <QtCore/QSharedPointer>
 #include <QtCore/QFutureInterface>
 
 #include <QtGui/QWidget>
 
-#include "debugginghelperbuildtask.h"
-
 QT_BEGIN_NAMESPACE
 class QTreeWidgetItem;
 QT_END_NAMESPACE
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 9c8101ba9ef5e885d8348605375a89b143e5d56f..6f1b9117c0fcf62321a977feb03c0f3c3e4b0002 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -58,11 +58,17 @@
 #include <projectexplorer/cesdkhandler.h>
 #include <projectexplorer/gcctoolchain.h>
 #include <projectexplorer/toolchainmanager.h>
-#include <utils/synchronousprocess.h>
+#include <projectexplorer/headerpath.h>
+#include <projectexplorer/ioutputparser.h>
+#include <projectexplorer/task.h>
+
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/helpmanager.h>
+
 #include <extensionsystem/pluginmanager.h>
+
+#include <utils/synchronousprocess.h>
 #include <utils/qtcassert.h>
 #include <utils/qtcprocess.h>
 #ifdef Q_OS_WIN
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index 086e42f1847642f68e17c0d52aa99d180574146b..13c762be3eb912e4abaa6bed1b28511834361552 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -36,11 +36,7 @@
 
 #include "qt4projectmanager_global.h"
 
-#include <projectexplorer/ioutputparser.h>
-#include <projectexplorer/taskwindow.h>
 #include <projectexplorer/abi.h>
-#include <projectexplorer/task.h>
-#include <projectexplorer/toolchain.h>
 
 #include <QtCore/QHash>
 #include <QtCore/QSet>
@@ -51,6 +47,12 @@ namespace Utils {
 class Environment;
 }
 
+namespace ProjectExplorer {
+class HeaderPath;
+class IOutputParser;
+class Task;
+}
+
 namespace Qt4ProjectManager {
 
 namespace Internal {
diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
index 3bbb12e2fcca9a70ab747330d87e5d082d199464..5c3dcb5d4830436ccad9fded4c134d3fbe3788ac 100644
--- a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
@@ -39,6 +39,8 @@
 
 #include "qt4projectmanagerconstants.h"
 
+#include <projectexplorer/task.h>
+
 #include <QtCore/QCoreApplication>
 #include <QtGui/QIcon>
 
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
index 9f2815572e218732e0506c8f731998b3575c815d..8b79c54d21a9f6242f82ba33bc9e31fff8f58c38 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
@@ -42,9 +42,14 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/editormanager/editormanager.h>
+
 #include <cpptools/cpptoolsconstants.h>
-#include <extensionsystem/pluginmanager.h>
+
 #include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/task.h>
+
+#include <extensionsystem/pluginmanager.h>
+
 #include <QtCore/QCoreApplication>
 #include <QtCore/QVariant>
 
diff --git a/src/plugins/texteditor/texteditoroptionspage.cpp b/src/plugins/texteditor/texteditoroptionspage.cpp
index d7867d2f640a3fe7289b0c28f059e331b50b14af..5438286de63ea72f5c4cb28eca625b1b57c563d9 100644
--- a/src/plugins/texteditor/texteditoroptionspage.cpp
+++ b/src/plugins/texteditor/texteditoroptionspage.cpp
@@ -36,6 +36,7 @@
 #include "texteditorconstants.h"
 
 #include <QtCore/QCoreApplication>
+#include <QtGui/QIcon>
 
 using namespace TextEditor;
 
diff --git a/src/plugins/vcsbase/vcsbaseoptionspage.cpp b/src/plugins/vcsbase/vcsbaseoptionspage.cpp
index 416930ae5a9624a40761ffa862f2d3ca37b16fcf..ae22d7398124d3b7e5b1d10591670e0ed9c83d07 100644
--- a/src/plugins/vcsbase/vcsbaseoptionspage.cpp
+++ b/src/plugins/vcsbase/vcsbaseoptionspage.cpp
@@ -36,6 +36,7 @@
 #include "vcsbaseconstants.h"
 
 #include <QtCore/QCoreApplication>
+#include <QtGui/QIcon>
 
 namespace VCSBase {