diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
index f6bae9241d46defd9bbd460415ae4ba3386a4059..9da4e120cc4fca6452aeba1a51106004b53cbafa 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
@@ -30,10 +30,13 @@
 #ifndef CMAKEPROJECTMANAGER_H
 #define CMAKEPROJECTMANAGER_H
 
-#include <coreplugin/dialogs/ioptionspage.h>
 #include <projectexplorer/iprojectmanager.h>
+#include <coreplugin/dialogs/ioptionspage.h>
+#include <coreplugin/icontext.h>
+
 #include <utils/environment.h>
 #include <utils/pathchooser.h>
+
 #include <QtCore/QFuture>
 #include <QtCore/QStringList>
 #include <QtCore/QDir>
diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index 90ef5b0039990b8b01d141f3b8f4e513cf79e17d..b7095397a65cfe8f7d0229fba8791fc127093660 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -35,17 +35,12 @@
 #include "debuggerplugin.h"
 #include "debuggerstringutils.h"
 #include "threadshandler.h"
-#include "stackhandler.h"
-#include "stackframe.h"
 
-#include <texteditor/basetextmark.h>
 #include <utils/qtcassert.h>
 
 #include <QtCore/QDir>
-#include <QtCore/QByteArray>
 #include <QtCore/QFileInfo>
 
-
 namespace Debugger {
 namespace Internal {
 
diff --git a/src/plugins/debugger/breakwindow.h b/src/plugins/debugger/breakwindow.h
index 84fbd28fc12edfd2070625004dfdd16713ba1104..04b01a486f79dddb05677259dcd9bcbefe05d218 100644
--- a/src/plugins/debugger/breakwindow.h
+++ b/src/plugins/debugger/breakwindow.h
@@ -30,13 +30,12 @@
 #ifndef DEBUGGER_BREAKWINDOW_H
 #define DEBUGGER_BREAKWINDOW_H
 
-#include "breakpoint.h"
-
 #include <QtGui/QTreeView>
 
 namespace Debugger {
 namespace Internal {
 
+class BreakpointData;
 class BreakWindow : public QTreeView
 {
     Q_OBJECT
diff --git a/src/plugins/debugger/cdb/cdbmodules.cpp b/src/plugins/debugger/cdb/cdbmodules.cpp
index ed5427375a8d06cb8960faf4b1599acdc46a2168..c947468001c03358a8e640a87d1fded1360b1f49 100644
--- a/src/plugins/debugger/cdb/cdbmodules.cpp
+++ b/src/plugins/debugger/cdb/cdbmodules.cpp
@@ -34,6 +34,7 @@
 
 #include <QtCore/QFileInfo>
 #include <QtCore/QRegExp>
+#include <QtCore/QVector>
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/consolewindow.cpp b/src/plugins/debugger/consolewindow.cpp
index 8a6075c082c913a15d97de9f4756ad95f0246ade..bb904ea58d797aa39c523ce35cfd71071ffb679c 100644
--- a/src/plugins/debugger/consolewindow.cpp
+++ b/src/plugins/debugger/consolewindow.cpp
@@ -28,32 +28,22 @@
 **************************************************************************/
 
 #include "consolewindow.h"
+#include "logwindow.h"
 
 #include "debuggeractions.h"
 #include "debuggerconstants.h"
 
 #include <QtCore/QDebug>
-#include <QtCore/QFile>
-#include <QtCore/QTime>
 
-#include <QtGui/QAction>
 #include <QtGui/QHBoxLayout>
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QKeyEvent>
-#include <QtGui/QLabel>
-#include <QtGui/QLineEdit>
 #include <QtGui/QMenu>
-#include <QtGui/QSpacerItem>
-#include <QtGui/QSplitter>
 #include <QtGui/QSyntaxHighlighter>
-#include <QtGui/QTextBlock>
 #include <QtGui/QPlainTextEdit>
-#include <QtGui/QFileDialog>
-#include <QtGui/QMessageBox>
 
 #include <aggregation/aggregate.h>
 #include <coreplugin/findplaceholder.h>
-#include <coreplugin/minisplitter.h>
 #include <find/basetextfind.h>
 
 #include <utils/savedaction.h>
@@ -268,25 +258,9 @@ private:
 
 void Console::saveContents()
 {
-    while (true) {
-        const QString fileName = QFileDialog::getSaveFileName(this, tr("Log File"));
-        if (fileName.isEmpty())
-            break;
-        QFile file(fileName);
-        if (file.open(QIODevice::WriteOnly|QIODevice::Text|QIODevice::Truncate)) {
-            file.write(toPlainText().toUtf8());
-            file.close();
-            break;
-        } else {
-            QMessageBox::warning(this, tr("Write Failure"),
-                                 tr("Unable to write log contents to '%1': %2").
-                                 arg(fileName, file.errorString()));
-        }
-    }
+    LogWindow::writeLogContents(this, this);
 }
 
-
-
 /////////////////////////////////////////////////////////////////////
 //
 // ConsoleWindow
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index cad9981dccbd581a57a6b155ba88ba5c834c6dd0..13b10956605bdbe4b7d46d4109f905e4ee620fe6 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -81,7 +81,7 @@ void DebuggerSettings::insertItem(int code, SavedAction *item)
     m_items[code] = item;
 }
 
-void DebuggerSettings::readSettings(QSettings *settings)
+void DebuggerSettings::readSettings(const QSettings *settings)
 {
     foreach (SavedAction *item, m_items)
         item->readSettings(settings);
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index 72845ec2db1a39f4b67584eb6e618fb7569bccd1..091059757eeff54b02889f105cc74188a298c6f3 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -68,7 +68,7 @@ public:
     static DebuggerSettings *instance();
 
 public slots:
-    void readSettings(QSettings *settings);
+    void readSettings(const QSettings *settings);
     void writeSettings(QSettings *settings) const;
 
 private:
diff --git a/src/plugins/debugger/debuggeragents.cpp b/src/plugins/debugger/debuggeragents.cpp
index 6271963ac2315fbaff97cb67aa1c053ce5127492..2c46a54b78cd320a7a8bdba9f0c58550f7a3c96a 100644
--- a/src/plugins/debugger/debuggeragents.cpp
+++ b/src/plugins/debugger/debuggeragents.cpp
@@ -44,7 +44,6 @@
 #include <texteditor/basetexteditor.h>
 #include <texteditor/plaintexteditor.h>
 #include <texteditor/basetextmark.h>
-#include <texteditor/itexteditor.h>
 #include <texteditor/texteditorconstants.h>
 #include <texteditor/basetextdocument.h>
 
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index e8b83f5c25d0450fe815743af81422a00ea350cb..9eb161aaa7824ff3e7e7083e1946452abb680342 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -49,11 +49,11 @@
 #include "breakwindow.h"
 
 #include <coreplugin/icore.h>
+#include <coreplugin/ifile.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/progressmanager/progressmanager.h>
 #include <coreplugin/progressmanager/futureprogress.h>
 
-#include <projectexplorer/debugginghelper.h>
 #include <projectexplorer/toolchaintype.h>
 
 #include <qt4projectmanager/qt4projectmanagerconstants.h>
@@ -65,8 +65,6 @@
 #include <utils/qtcassert.h>
 
 #include <QtCore/QDebug>
-#include <QtCore/QDir>
-#include <QtCore/QFileInfo>
 #include <QtCore/QTimer>
 #include <QtCore/QFutureInterface>
 
@@ -79,7 +77,6 @@
 #include <QtGui/QPushButton>
 #include <QtGui/QTextBlock>
 #include <QtGui/QTextCursor>
-#include <QtGui/QTextDocument>
 #include <QtGui/QTreeWidget>
 #include <QtGui/QMainWindow>
 
diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h
index a3fe5e311bdeade98f825555c4fc270d23d3ca51..2e84d591bccd1ce595d8decf68e2aa3666a8ff26 100644
--- a/src/plugins/debugger/debuggerengine.h
+++ b/src/plugins/debugger/debuggerengine.h
@@ -37,7 +37,6 @@
 #include <coreplugin/ssh/sshconnection.h> 
 
 #include <QtCore/QObject>
-#include <QtCore/QSharedPointer>
 #include <QtCore/QStringList>
 
 QT_BEGIN_NAMESPACE
diff --git a/src/plugins/debugger/debuggermainwindow.h b/src/plugins/debugger/debuggermainwindow.h
index f3132e3da1c2093fa6d528f57f00afb1382b1788..e1e6f09eefd8538dd5c6347de539e3631bd3315e 100644
--- a/src/plugins/debugger/debuggermainwindow.h
+++ b/src/plugins/debugger/debuggermainwindow.h
@@ -31,7 +31,6 @@
 #define DEBUGGERMAINWINDOW_H
 
 #include <utils/fancymainwindow.h>
-#include "debuggerconstants.h"
 
 QT_FORWARD_DECLARE_CLASS(QMenu);
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 9ffd6b00d80e2ebf8cd8aaccc255a8ce416b37cf..2f873dc39347a83a8efca3676e6eabf59c2f7e3f 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -35,7 +35,6 @@
 #include "debuggerdialogs.h"
 #include "debuggerengine.h"
 #include "debuggermainwindow.h"
-#include "debuggerplugin.h"
 #include "debuggerrunner.h"
 #include "debuggerstringutils.h"
 #include "debuggertooltip.h"
@@ -52,16 +51,9 @@
 #include "threadswindow.h"
 #include "watchwindow.h"
 
-#include "breakhandler.h"
 #include "sessionengine.h"
 #include "snapshothandler.h"
 #include "threadshandler.h"
-#include "watchutils.h"
-
-#ifdef Q_OS_WIN
-#  include "shared/peutils.h"
-#endif
-
 
 #include "ui_commonoptionspage.h"
 #include "ui_dumperoptionpage.h"
@@ -79,15 +71,8 @@
 #include <coreplugin/imode.h>
 #include <coreplugin/icorelistener.h>
 #include <coreplugin/manhattanstyle.h>
-#include <coreplugin/messagemanager.h>
 #include <coreplugin/minisplitter.h>
 #include <coreplugin/modemanager.h>
-#include <coreplugin/navigationwidget.h>
-#include <coreplugin/outputpane.h>
-#include <coreplugin/rightpane.h>
-
-#include <cplusplus/ExpressionUnderCursor.h>
-#include <cplusplus/CppDocument.h>
 
 #include <cppeditor/cppeditorconstants.h>
 #include <cpptools/cppmodelmanagerinterface.h>
@@ -104,52 +89,21 @@
 #include <texteditor/basetexteditor.h>
 #include <texteditor/basetextmark.h>
 #include <texteditor/fontsettings.h>
-#include <texteditor/itexteditor.h>
-#include <texteditor/texteditorconstants.h>
 #include <texteditor/texteditorsettings.h>
 
-//#include <qt4projectmanager/qt4projectmanagerconstants.h>
-
 #include <utils/qtcassert.h>
 #include <utils/savedaction.h>
 #include <utils/styledbar.h>
 
 #include <qml/scriptconsole.h>
 
-#include <QtCore/QCoreApplication>
-#include <QtCore/QDebug>
-#include <QtCore/QDir>
-#include <QtCore/QFileInfo>
-#include <QtCore/QObject>
-#include <QtCore/QPoint>
-#include <QtCore/QSettings>
-#include <QtCore/QTextStream>
-#include <QtCore/QTime>
 #include <QtCore/QTimer>
-#include <QtCore/QVariant>
 #include <QtCore/QtPlugin>
-#include <QtCore/QScopedPointer>
-
-#include <QtGui/QAbstractItemView>
-#include <QtGui/QAction>
-#include <QtGui/QApplication>
 #include <QtGui/QComboBox>
 #include <QtGui/QDockWidget>
-#include <QtGui/QErrorMessage>
 #include <QtGui/QFileDialog>
-#include <QtGui/QHeaderView>
-#include <QtGui/QLabel>
-#include <QtGui/QLineEdit>
-#include <QtGui/QMenu>
 #include <QtGui/QMessageBox>
-#include <QtGui/QPlainTextEdit>
-#include <QtGui/QPushButton>
-#include <QtGui/QStatusBar>
-#include <QtGui/QTextBlock>
-#include <QtGui/QTextCursor>
 #include <QtGui/QToolButton>
-#include <QtGui/QToolTip>
-#include <QtGui/QTreeWidget>
 
 #include <climits>
 
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 8a323639f4fa058e11962130cfd5ca4b499b692c..949e7eab62e2f8681afa5d51ca37c1482082e617 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -30,7 +30,6 @@
 #include "debuggerrunner.h"
 
 #include "debuggeractions.h"
-#include "debuggerconstants.h"
 #include "debuggerengine.h"
 #include "debuggerplugin.h"
 #include "debuggerstringutils.h"
@@ -48,27 +47,17 @@
 #include <projectexplorer/debugginghelper.h>
 #include <projectexplorer/project.h>
 #include <projectexplorer/toolchain.h>
-#include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/target.h>
 #include <projectexplorer/buildconfiguration.h>
 #include <projectexplorer/applicationrunconfiguration.h> // For LocalApplication*
 
-#include <utils/environment.h>
 #include <utils/synchronousprocess.h>
 #include <utils/qtcassert.h>
 #include <utils/fancymainwindow.h>
 #include <coreplugin/icore.h>
 
-#include <QtCore/QDebug>
 #include <QtCore/QDir>
-#include <QtCore/QFileInfo>
-#include <QtCore/QTimer>
-#include <QtCore/QStringList>
-
-#include <QtGui/QAbstractItemView>
-#include <QtGui/QTextDocument>
-#include <QtGui/QTreeWidget>
 #include <QtGui/QMessageBox>
 
 using namespace ProjectExplorer;
diff --git a/src/plugins/debugger/debuggerrunner.h b/src/plugins/debugger/debuggerrunner.h
index 2ecbcce4ad7e5c9aed95fad8a410958cae7bba38..2288161eff7aefbc401d9342d8e3127f0d8da887 100644
--- a/src/plugins/debugger/debuggerrunner.h
+++ b/src/plugins/debugger/debuggerrunner.h
@@ -53,8 +53,6 @@ class GdbEngine;
 class AbstractGdbAdapter;
 }
 
-//DEBUGGER_EXPORT QDebug operator<<(QDebug str, const DebuggerStartParameters &);
-
 class DEBUGGER_EXPORT DebuggerRunControlFactory
     : public ProjectExplorer::IRunControlFactory
 {
diff --git a/src/plugins/debugger/debuggertooltip.cpp b/src/plugins/debugger/debuggertooltip.cpp
index 025745c4cd159ad027ac9cf882e11bf14adcd60a..d296956a87bd59e4fba95721a30696a717c3d9a9 100644
--- a/src/plugins/debugger/debuggertooltip.cpp
+++ b/src/plugins/debugger/debuggertooltip.cpp
@@ -29,20 +29,17 @@
 
 #include "debuggertooltip.h"
 
-#include <QtCore/QPointer>
 #include <QtCore/QtDebug>
+#include <QtCore/QPointer>
 
 #include <QtGui/QApplication>
 #include <QtGui/QDesktopWidget>
 #include <QtGui/QHBoxLayout>
 #include <QtGui/QHeaderView>
 #include <QtGui/QKeyEvent>
-#include <QtGui/QLabel>
 #include <QtGui/QScrollBar>
 #include <QtGui/QTreeView>
 #include <QtGui/QVBoxLayout>
-#include <QtGui/QWidget>
-
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/debuggeruiswitcher.cpp b/src/plugins/debugger/debuggeruiswitcher.cpp
index 9c89368dbcbe2ed687500344fa7c921985fb8fc9..870dc6e18133facb52a0e87fdf34f6ac4ecbc081 100644
--- a/src/plugins/debugger/debuggeruiswitcher.cpp
+++ b/src/plugins/debugger/debuggeruiswitcher.cpp
@@ -29,13 +29,8 @@
 
 #include "debuggeruiswitcher.h"
 #include "debuggermainwindow.h"
-#include "debuggeractions.h"
-#include "debuggerconstants.h"
-#include "debuggerrunner.h"
 #include "debuggerplugin.h"
-#include "savedaction.h"
 
-#include <utils/savedaction.h>
 #include <utils/styledbar.h>
 #include <utils/qtcassert.h>
 
@@ -48,7 +43,6 @@
 #include <coreplugin/findplaceholder.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/minisplitter.h>
-#include <coreplugin/modemanager.h>
 #include <coreplugin/navigationwidget.h>
 #include <coreplugin/outputpane.h>
 #include <coreplugin/rightpane.h>
@@ -60,7 +54,6 @@
 #include <projectexplorer/target.h>
 #include <projectexplorer/runconfiguration.h>
 
-#include <QtGui/QActionGroup>
 #include <QtGui/QStackedWidget>
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QMenu>
diff --git a/src/plugins/debugger/debuggeruiswitcher.h b/src/plugins/debugger/debuggeruiswitcher.h
index 71b5728af3ac510b7473ed87c9df7960f588ed27..81ee41caa8bfbd73c5bf045965f1b96cf8aafa9a 100644
--- a/src/plugins/debugger/debuggeruiswitcher.h
+++ b/src/plugins/debugger/debuggeruiswitcher.h
@@ -40,16 +40,14 @@ class QDockWidget;
 QT_END_NAMESPACE
 
 namespace Core {
-    class ActionContainer;
     class Command;
     class Context;
-    class BaseMode;
     class IMode;
+    class BaseMode;
 }
 
 namespace Utils {
 class FancyMainWindow;
-    class SavedAction;
 }
 
 namespace ProjectExplorer {
diff --git a/src/plugins/debugger/gdb/abstractgdbadapter.cpp b/src/plugins/debugger/gdb/abstractgdbadapter.cpp
index e663126ae363d9eec40e933cfa1cf9e6529c173f..b0f80d39f85858a181219e713485b0943cd53b5d 100644
--- a/src/plugins/debugger/gdb/abstractgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/abstractgdbadapter.cpp
@@ -28,7 +28,7 @@
 **************************************************************************/
 
 #include "abstractgdbadapter.h"
-
+#include "gdbengine.h"
 #include "abstractgdbprocess.h"
 
 #include <utils/qtcassert.h>
@@ -104,5 +104,25 @@ QString AbstractGdbAdapter::msgConnectRemoteServerFailed(const QString &why)
     return tr("Connecting to remote server failed:\n%1").arg(why);
 }
 
+DebuggerState AbstractGdbAdapter::state() const
+{
+    return m_engine->state();
+}
+
+const DebuggerStartParameters &AbstractGdbAdapter::startParameters() const
+{
+    return m_engine->startParameters();
+}
+
+DebuggerStartParameters &AbstractGdbAdapter::startParameters()
+{
+    return m_engine->startParameters();
+}
+
+void AbstractGdbAdapter::showMessage(const QString &msg, int channel, int timeout)
+{
+    m_engine->showMessage(msg, channel, timeout);
+}
+
 } // namespace Internal
 } // namespace Debugger
diff --git a/src/plugins/debugger/gdb/abstractgdbadapter.h b/src/plugins/debugger/gdb/abstractgdbadapter.h
index 4d7dcdc0783c2c475f98ad7b0009fc189e917585..d70e519b5bb1090016e8c1f3cd07cb7b35217334 100644
--- a/src/plugins/debugger/gdb/abstractgdbadapter.h
+++ b/src/plugins/debugger/gdb/abstractgdbadapter.h
@@ -30,14 +30,18 @@
 #ifndef DEBUGGER_ABSTRACT_GDB_ADAPTER
 #define DEBUGGER_ABSTRACT_GDB_ADAPTER
 
-#include <QtCore/QObject>
+#include "debuggerconstants.h"
 
-#include "gdbengine.h"
+#include <QtCore/QObject>
 
 namespace Debugger {
+class DebuggerStartParameters;
+
 namespace Internal {
 
 class AbstractGdbProcess;
+class GdbEngine;
+class GdbResponse;
 
 // AbstractGdbAdapter is inherited by PlainGdbAdapter used for local
 // debugging and TrkGdbAdapter used for on-device debugging.
@@ -85,14 +89,10 @@ public:
     virtual void trkReloadThreads() {}
 
 protected:
-    DebuggerState state() const
-        { return m_engine->state(); }
-    const DebuggerStartParameters &startParameters() const
-        { return m_engine->startParameters(); }
-    DebuggerStartParameters &startParameters()
-        { return m_engine->startParameters(); }
-    void showMessage(const QString &msg, int channel = LogDebug, int timeout = 1)
-        { m_engine->showMessage(msg, channel, timeout); }
+    DebuggerState state() const;
+    const DebuggerStartParameters &startParameters() const;
+    DebuggerStartParameters &startParameters();
+    void showMessage(const QString &msg, int channel = LogDebug, int timeout = 1);
 
     GdbEngine * const m_engine;
 };
diff --git a/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp b/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp
index 483b12da85c804b3281c8ed693a8adf58d9fd8cb..241776dc480198490334b2e910e613d219e97146 100644
--- a/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp
@@ -28,7 +28,8 @@
 **************************************************************************/
 
 #include "abstractplaingdbadapter.h"
-
+#include "gdbmi.h"
+#include "gdbengine.h"
 #include "debuggeractions.h"
 #include "debuggerstringutils.h"
 
diff --git a/src/plugins/debugger/gdb/attachgdbadapter.cpp b/src/plugins/debugger/gdb/attachgdbadapter.cpp
index 1de5c646e66710242dba32b0f852c77993f4f745..7c6f6d2a59913ed253637de24a70ae47f282e63d 100644
--- a/src/plugins/debugger/gdb/attachgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/attachgdbadapter.cpp
@@ -28,6 +28,7 @@
 **************************************************************************/
 
 #include "attachgdbadapter.h"
+#include "gdbmi.h"
 
 #include "gdbengine.h"
 #include "procinterrupt.h"
diff --git a/src/plugins/debugger/gdb/attachgdbadapter.h b/src/plugins/debugger/gdb/attachgdbadapter.h
index 0803b87068ff324022c5c55f914f0cee0b03ae4c..92f00b3c08134469175a4671d4ba1c953f6bafd5 100644
--- a/src/plugins/debugger/gdb/attachgdbadapter.h
+++ b/src/plugins/debugger/gdb/attachgdbadapter.h
@@ -31,8 +31,7 @@
 #define DEBUGGER_ATTACHGDBADAPTER_H
 
 #include "abstractgdbadapter.h"
-
-#include "abstractgdbprocess.h"
+#include "localgdbprocess.h"
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/gdb/classicgdbengine.cpp b/src/plugins/debugger/gdb/classicgdbengine.cpp
index 090c4cbd953806be2186c883422c7161dea95caa..42905e20755fe1d120b73ed004e380447dec0507 100644
--- a/src/plugins/debugger/gdb/classicgdbengine.cpp
+++ b/src/plugins/debugger/gdb/classicgdbengine.cpp
@@ -28,6 +28,7 @@
 **************************************************************************/
 
 #include "gdbengine.h"
+#include "gdbmi.h"
 
 #include "abstractgdbadapter.h"
 #include "debuggeractions.h"
diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp
index 3c49795da1f063c2ca78515eabd426ad00809ea1..552d84cae2411a4c20cfc2e5a102104ebcdfd34f 100644
--- a/src/plugins/debugger/gdb/coregdbadapter.cpp
+++ b/src/plugins/debugger/gdb/coregdbadapter.cpp
@@ -28,7 +28,7 @@
 **************************************************************************/
 
 #include "coregdbadapter.h"
-
+#include "gdbmi.h"
 #include "debuggeractions.h"
 #include "gdbengine.h"
 #include "debuggerstringutils.h"
diff --git a/src/plugins/debugger/gdb/coregdbadapter.h b/src/plugins/debugger/gdb/coregdbadapter.h
index fba322159f6dd3581217455d07ae26b1f598652f..fb201dcae8b5153bb515f01f978e4ab6c4c5fbc0 100644
--- a/src/plugins/debugger/gdb/coregdbadapter.h
+++ b/src/plugins/debugger/gdb/coregdbadapter.h
@@ -31,9 +31,7 @@
 #define DEBUGGER_COREGDBADAPTER_H
 
 #include "abstractgdbadapter.h"
-
-#include "abstractgdbprocess.h"
-
+#include "localgdbprocess.h"
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index bc9a357af7fd5c43bae0477e26983241b2efae2e..529d9abff0f20544838b2a680dcfa963364e0c00 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -32,12 +32,11 @@
 
 #include "debuggerengine.h"
 
-#include "gdbmi.h"
-#include "localgdbprocess.h"
 #include "stackframe.h"
 #include "watchutils.h"
 
 #include <QtCore/QByteArray>
+#include <QtCore/QProcess>
 #include <QtCore/QHash>
 #include <QtCore/QMap>
 #include <QtCore/QMultiMap>
@@ -47,11 +46,9 @@
 #include <QtCore/QTextCodec>
 #include <QtCore/QTime>
 #include <QtCore/QVariant>
-#include <QtCore/QSharedPointer>
 
 QT_BEGIN_NAMESPACE
 class QMainWindow;
-class QMessageBox;
 class QTimer;
 QT_END_NAMESPACE
 
diff --git a/src/plugins/debugger/gdb/gdboptionspage.h b/src/plugins/debugger/gdb/gdboptionspage.h
index ec24089ded0f98d6d93d9ef54ea5982712b4e43a..7cd7ad8b2ec52efe0977a021d7cd1837d2bf3055 100644
--- a/src/plugins/debugger/gdb/gdboptionspage.h
+++ b/src/plugins/debugger/gdb/gdboptionspage.h
@@ -35,7 +35,6 @@
 #include <coreplugin/dialogs/ioptionspage.h>
 #include <utils/savedaction.h>
 
-
 namespace Debugger {
 namespace Internal {
 
diff --git a/src/plugins/debugger/gdb/localplaingdbadapter.h b/src/plugins/debugger/gdb/localplaingdbadapter.h
index 5eae3d9e082b5725a4cb80951d0b570f26df1ae9..ccd8f3600d822b132deb5013c956dd4c4787f7e0 100644
--- a/src/plugins/debugger/gdb/localplaingdbadapter.h
+++ b/src/plugins/debugger/gdb/localplaingdbadapter.h
@@ -31,9 +31,7 @@
 #define DEBUGGER_PLAINGDBADAPTER_H
 
 #include "abstractplaingdbadapter.h"
-
-#include "abstractgdbprocess.h"
-
+#include "localgdbprocess.h"
 #include <outputcollector.h>
 
 namespace Debugger {
diff --git a/src/plugins/debugger/gdb/pythongdbengine.cpp b/src/plugins/debugger/gdb/pythongdbengine.cpp
index b55c5e5d25a454384f99f9bb4d8b457839fbfecb..7a3ece861724307fb0b4ecbe1d8b6c18f753ab75 100644
--- a/src/plugins/debugger/gdb/pythongdbengine.cpp
+++ b/src/plugins/debugger/gdb/pythongdbengine.cpp
@@ -28,7 +28,7 @@
 **************************************************************************/
 
 #include "gdbengine.h"
-
+#include "gdbmi.h"
 #include "abstractgdbadapter.h"
 #include "debuggeractions.h"
 #include "debuggerstringutils.h"
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index 28ac5a9314ca80913cd1cb46110b9823f36eaaa1..dfa9e356e50a7b8416f82515587aa5cfaf20a7eb 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -28,7 +28,7 @@
 **************************************************************************/
 
 #include "remotegdbserveradapter.h"
-
+#include "gdbmi.h"
 #include "debuggerstringutils.h"
 #include "gdbengine.h"
 
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.h b/src/plugins/debugger/gdb/remotegdbserveradapter.h
index 39d8db3702f3378e38b75622768921cf7608f9bd..749d86e57694298ae75cd0a3c5a2302133375587 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.h
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.h
@@ -31,8 +31,7 @@
 #define DEBUGGER_REMOTEGDBADAPTER_H
 
 #include "abstractgdbadapter.h"
-
-#include "abstractgdbprocess.h"
+#include "localgdbprocess.h"
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
index 159f007c10afe2bdd621defd8658eebc4c5d4bff..8ad74bdac820b7551c94c67c67303987b0113024 100644
--- a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
@@ -28,12 +28,12 @@
 **************************************************************************/
 
 #include "remoteplaingdbadapter.h"
+#include "gdbengine.h"
 
 #include <debugger/debuggeractions.h>
 #include <debugger/debuggerstringutils.h>
 #include <utils/qtcassert.h>
 
-
 namespace Debugger {
 namespace Internal {
 
diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
index 65e328725e0ef74a29fb9857c90a6cee760fdb17..a6e6899fa4e2dabe18330e4db282aa063e608f58 100644
--- a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
@@ -28,9 +28,9 @@
 **************************************************************************/
 
 #include "tcftrkgdbadapter.h"
-
 #include "tcftrkdevice.h"
 #include "trkutils.h"
+#include "gdbmi.h"
 
 #include "registerhandler.h"
 #include "threadshandler.h"
diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.h b/src/plugins/debugger/gdb/tcftrkgdbadapter.h
index 71becf8e248962f581aceba24f5cf9db8ea638a3..8cbb44eb2b1c8eb5cdc6ddc92104dc585c3d941d 100644
--- a/src/plugins/debugger/gdb/tcftrkgdbadapter.h
+++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.h
@@ -31,7 +31,7 @@
 #define DEBUGGER_TCFTRKGDBADAPTER_H
 
 #include "abstractgdbadapter.h"
-
+#include "localgdbprocess.h"
 #include "callback.h"
 #include "trkutils.h"
 #include "symbian.h"
diff --git a/src/plugins/debugger/gdb/termgdbadapter.cpp b/src/plugins/debugger/gdb/termgdbadapter.cpp
index 1f5b0b97af022abe382194ee1e994514d580cdf6..f38fae20aa22c0c7d0bcd4c40739e4e9c176b1e9 100644
--- a/src/plugins/debugger/gdb/termgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/termgdbadapter.cpp
@@ -28,7 +28,7 @@
 **************************************************************************/
 
 #include "termgdbadapter.h"
-
+#include "gdbmi.h"
 #include "gdbengine.h"
 #include "procinterrupt.h"
 #include "debuggerstringutils.h"
diff --git a/src/plugins/debugger/gdb/termgdbadapter.h b/src/plugins/debugger/gdb/termgdbadapter.h
index 9c5a0c5eaa421c201ff0c3997927093317a061d9..18a84b28ce05d58cc266a578b3169a3caea4a811 100644
--- a/src/plugins/debugger/gdb/termgdbadapter.h
+++ b/src/plugins/debugger/gdb/termgdbadapter.h
@@ -31,10 +31,9 @@
 #define DEBUGGER_TERMGDBADAPTER_H
 
 #include "abstractgdbadapter.h"
+#include "localgdbprocess.h"
 
-#include "abstractgdbprocess.h"
-
-#include <consoleprocess.h>
+#include <utils/consoleprocess.h>
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index 05d1ba6bc4021c26ca47c044358dc7c7ab633070..95e5373f0e2b11c9319350a6a88785c238445507 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -29,6 +29,7 @@
 
 #include "trkgdbadapter.h"
 
+#include "gdbmi.h"
 #include "launcher.h"
 #include "symbiandevicemanager.h"
 #include "s60debuggerbluetoothstarter.h"
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.h b/src/plugins/debugger/gdb/trkgdbadapter.h
index 2ea7e1bcfab8f337fe0871e5c0bef3b46c7eae6a..93fadcccec95d8bcf9f9588049dac82dcc71ed4e 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.h
+++ b/src/plugins/debugger/gdb/trkgdbadapter.h
@@ -31,7 +31,7 @@
 #define DEBUGGER_TRKGDBADAPTER_H
 
 #include "abstractgdbadapter.h"
-
+#include "localgdbprocess.h"
 #include "trkutils.h"
 #include "callback.h"
 #include "symbian.h"
diff --git a/src/plugins/debugger/logwindow.cpp b/src/plugins/debugger/logwindow.cpp
index ce5ad9fc74f3c430edea35bc1413e0e762ead725..d11fad9eb71c16a58e64c0b260f1781a38f6eb3d 100644
--- a/src/plugins/debugger/logwindow.cpp
+++ b/src/plugins/debugger/logwindow.cpp
@@ -36,17 +36,12 @@
 #include <QtCore/QFile>
 #include <QtCore/QTime>
 
-#include <QtGui/QAction>
 #include <QtGui/QHBoxLayout>
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QKeyEvent>
-#include <QtGui/QLabel>
-#include <QtGui/QLineEdit>
 #include <QtGui/QMenu>
 #include <QtGui/QSpacerItem>
-#include <QtGui/QSplitter>
 #include <QtGui/QSyntaxHighlighter>
-#include <QtGui/QTextBlock>
 #include <QtGui/QPlainTextEdit>
 #include <QtGui/QFileDialog>
 #include <QtGui/QMessageBox>
@@ -225,24 +220,9 @@ private:
 
 void DebuggerPane::saveContents()
 {
-    while (true) {
-        const QString fileName = QFileDialog::getSaveFileName(this, tr("Log File"));
-        if (fileName.isEmpty())
-            break;
-        QFile file(fileName);
-        if (file.open(QIODevice::WriteOnly|QIODevice::Text|QIODevice::Truncate)) {
-            file.write(toPlainText().toUtf8());
-            file.close();
-            break;
-        } else {
-            QMessageBox::warning(this, tr("Write Failure"),
-                                 tr("Unable to write log contents to '%1': %2").
-                                 arg(fileName, file.errorString()));
-        }
-    }
+    LogWindow::writeLogContents(this, this);
 }
 
-
 /////////////////////////////////////////////////////////////////////
 //
 // InputPane
@@ -490,6 +470,27 @@ QString LogWindow::logTimeStamp()
     return lastTimeStamp;
 }
 
+bool LogWindow::writeLogContents(const QPlainTextEdit *editor, QWidget *parent)
+{
+    bool success = false;
+    while (!success) {
+        const QString fileName = QFileDialog::getSaveFileName(parent, tr("Log File"));
+        if (fileName.isEmpty())
+            break;
+        QFile file(fileName);
+        if (file.open(QIODevice::WriteOnly|QIODevice::Text|QIODevice::Truncate)) {
+            file.write(editor->toPlainText().toUtf8());
+            file.close();
+            success = true;
+        } else {
+            QMessageBox::warning(parent, tr("Write Failure"),
+                                 tr("Unable to write log contents to '%1': %2").
+                                 arg(fileName, file.errorString()));
+        }
+    }
+    return success;
+}
+
 } // namespace Internal
 } // namespace Debugger
 
diff --git a/src/plugins/debugger/logwindow.h b/src/plugins/debugger/logwindow.h
index f303f653356c5cab38fe71445b60f2b8cf4d5c09..d386a92f89074a037fea58174ee48fa897bec7bd 100644
--- a/src/plugins/debugger/logwindow.h
+++ b/src/plugins/debugger/logwindow.h
@@ -55,6 +55,8 @@ public:
 
     static QString logTimeStamp();
 
+    static bool writeLogContents(const QPlainTextEdit *editor, QWidget *parent = 0);
+
 public slots:
     void clearContents();
     void showOutput(int channel, const QString &output);
diff --git a/src/plugins/debugger/moduleshandler.cpp b/src/plugins/debugger/moduleshandler.cpp
index 26c8faf6df2dd1e6188e1b5a25b804630f93e5af..5069a2679ac7b6d0fc2eba2a1780f9cbca8352c6 100644
--- a/src/plugins/debugger/moduleshandler.cpp
+++ b/src/plugins/debugger/moduleshandler.cpp
@@ -33,12 +33,6 @@
 #include <utils/qtcassert.h>
 
 #include <QtCore/QDebug>
-#include <QtCore/QDir>
-#include <QtCore/QTextStream>
-
-#include <QtGui/QAction>
-#include <QtGui/QMainWindow>
-#include <QtGui/QStandardItemModel>
 #include <QtGui/QSortFilterProxyModel>
 
 
diff --git a/src/plugins/debugger/moduleswindow.cpp b/src/plugins/debugger/moduleswindow.cpp
index 509af16db11a2220d8f562564f4da1329d447450..e73f5d02cbefcec1f0d149f25beb28d7d2766ea9 100644
--- a/src/plugins/debugger/moduleswindow.cpp
+++ b/src/plugins/debugger/moduleswindow.cpp
@@ -37,7 +37,6 @@
 
 #include <QtCore/QDebug>
 
-#include <QtGui/QAction>
 #include <QtGui/QHeaderView>
 #include <QtGui/QMenu>
 #include <QtGui/QResizeEvent>
diff --git a/src/plugins/debugger/registerwindow.cpp b/src/plugins/debugger/registerwindow.cpp
index 3431157d2434183de63de187aeb412c21fa7f9ff..9f85f844fdff117e56df6d1c28313250b90f91c4 100644
--- a/src/plugins/debugger/registerwindow.cpp
+++ b/src/plugins/debugger/registerwindow.cpp
@@ -38,18 +38,12 @@
 #include <utils/savedaction.h>
 
 #include <QtCore/QDebug>
-#include <QtCore/QDir>
-#include <QtCore/QFileInfo>
-#include <QtCore/QFileInfoList>
 
-#include <QtGui/QAction>
 #include <QtGui/QHeaderView>
 #include <QtGui/QItemDelegate>
-#include <QtGui/QLineEdit>
 #include <QtGui/QMenu>
 #include <QtGui/QPainter>
 #include <QtGui/QResizeEvent>
-#include <QtGui/QToolButton>
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/sessionengine.cpp b/src/plugins/debugger/sessionengine.cpp
index 3aa66dc25cd186b9111f7c84216248c392806a7a..9ec4632cee36843df0f5ebdc22e36a048ce636fa 100644
--- a/src/plugins/debugger/sessionengine.cpp
+++ b/src/plugins/debugger/sessionengine.cpp
@@ -30,7 +30,6 @@
 #include "sessionengine.h"
 #include "breakhandler.h"
 #include "watchhandler.h"
-#include "debuggerconstants.h"
 
 #include <utils/qtcassert.h>
 
diff --git a/src/plugins/debugger/snapshothandler.cpp b/src/plugins/debugger/snapshothandler.cpp
index 774023315dc8267af62a402833547deb88a575cb..e4fa0767ff4112a8e43d9566971f5be51bbda26d 100644
--- a/src/plugins/debugger/snapshothandler.cpp
+++ b/src/plugins/debugger/snapshothandler.cpp
@@ -30,19 +30,16 @@
 #include "snapshothandler.h"
 
 #include "sessionengine.h"
-#include "debuggeractions.h"
 #include "debuggerconstants.h"
 #include "debuggerengine.h"
 #include "debuggerrunner.h"
 #include "debuggerplugin.h"
 
 #include <utils/qtcassert.h>
-#include <utils/savedaction.h>
 
-#include <QtCore/QAbstractTableModel>
 #include <QtCore/QDebug>
-#include <QtCore/QFileInfo>
-#include <QtCore/QDir>
+#include <QtCore/QFile>
+#include <QtGui/QIcon>
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/snapshothandler.h b/src/plugins/debugger/snapshothandler.h
index 9967a9c0bf605404946f95c492ee35399a84df9b..41f6d50bfbf887a314733dad581eb1ce6bd9858f 100644
--- a/src/plugins/debugger/snapshothandler.h
+++ b/src/plugins/debugger/snapshothandler.h
@@ -30,7 +30,7 @@
 #ifndef DEBUGGER_SNAPSHOTHANDLER_H
 #define DEBUGGER_SNAPSHOTHANDLER_H
 
-#include <QtCore/QAbstractItemModel>
+#include <QtCore/QAbstractTableModel>
 #include <QtCore/QPointer>
 
 namespace Debugger {
diff --git a/src/plugins/debugger/snapshotwindow.cpp b/src/plugins/debugger/snapshotwindow.cpp
index 46b1a7d92a0f4b9d2a9013e8af1e74ae14ab785d..ef0ab00bc04bd829228156a3f357fcb433350d1b 100644
--- a/src/plugins/debugger/snapshotwindow.cpp
+++ b/src/plugins/debugger/snapshotwindow.cpp
@@ -37,11 +37,9 @@
 
 #include <QtCore/QDebug>
 
-#include <QtGui/QAction>
 #include <QtGui/QHeaderView>
-#include <QtGui/QKeyEvent>
 #include <QtGui/QMenu>
-#include <QtGui/QTreeView>
+#include <QtGui/QKeyEvent>
 
 static QModelIndexList normalizeIndexes(const QModelIndexList &list)
 {
diff --git a/src/plugins/debugger/snapshotwindow.h b/src/plugins/debugger/snapshotwindow.h
index 9cbf17c57259c9ab3532d8b6592ee0b16b77e889..9135c5bac55d83b3fa195d5d8030a553b5323143 100644
--- a/src/plugins/debugger/snapshotwindow.h
+++ b/src/plugins/debugger/snapshotwindow.h
@@ -33,7 +33,6 @@
 #include <QtGui/QTreeView>
 
 QT_BEGIN_NAMESPACE
-class QComboBox;
 class QModelIndex;
 QT_END_NAMESPACE
 
diff --git a/src/plugins/debugger/sourcefileshandler.h b/src/plugins/debugger/sourcefileshandler.h
index 6be37adebd92fc45082a1d46f334f4b34c18c7e0..c3831dd57fb4e13e2233e7ffaa988ece8b923f46 100644
--- a/src/plugins/debugger/sourcefileshandler.h
+++ b/src/plugins/debugger/sourcefileshandler.h
@@ -31,10 +31,8 @@
 #define DEBUGGER_SOURCEFILESHANDLER_H
 
 #include <QtCore/QAbstractItemModel>
-#include <QtCore/QMap>
 #include <QtCore/QStringList>
 
-
 namespace Debugger {
 class DebuggerEngine;
 
diff --git a/src/plugins/debugger/sourcefileswindow.cpp b/src/plugins/debugger/sourcefileswindow.cpp
index d68d12a045343ac273d93dec227f8eb7efe3e9af..9b10bc6890dfd9efff3021ce767eeaf57cdf3611 100644
--- a/src/plugins/debugger/sourcefileswindow.cpp
+++ b/src/plugins/debugger/sourcefileswindow.cpp
@@ -38,12 +38,9 @@
 #include <QtCore/QDebug>
 #include <QtCore/QFileInfo>
 
-#include <QtGui/QAction>
 #include <QtGui/QHeaderView>
 #include <QtGui/QMenu>
 #include <QtGui/QResizeEvent>
-#include <QtGui/QTreeView>
-
 
 //////////////////////////////////////////////////////////////////
 //
diff --git a/src/plugins/debugger/sourcefileswindow.h b/src/plugins/debugger/sourcefileswindow.h
index a2b92dd97f6de4041e2a3b9c7273a7477a92fa66..1dfeaf1b87dedba08702d8c95c08ad4979e54aa3 100644
--- a/src/plugins/debugger/sourcefileswindow.h
+++ b/src/plugins/debugger/sourcefileswindow.h
@@ -30,9 +30,8 @@
 #ifndef DEBUGGER_SOURCEFILEWINDOW_H
 #define DEBUGGER_SOURCEFILEWINDOW_H
 
-#include <QtCore/QMap>
-#include <QtGui/QTreeView>
 
+#include <QtGui/QTreeView>
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/stackhandler.cpp b/src/plugins/debugger/stackhandler.cpp
index 6a9779b4de28da28b738d5f405472cac8d133375..e36d75bae3324c2bce58d82c0e55f912c4625eff 100644
--- a/src/plugins/debugger/stackhandler.cpp
+++ b/src/plugins/debugger/stackhandler.cpp
@@ -36,11 +36,9 @@
 #include <utils/qtcassert.h>
 #include <utils/savedaction.h>
 
-#include <QtCore/QAbstractTableModel>
 #include <QtCore/QDebug>
 #include <QtCore/QFileInfo>
 
-
 namespace Debugger {
 namespace Internal {
 
diff --git a/src/plugins/debugger/stackhandler.h b/src/plugins/debugger/stackhandler.h
index 3de7d2af743a21d1ab02cfd11da969bd2725778c..b5dd8d95dad6301eb715f5be3d1168fba4c9eb87 100644
--- a/src/plugins/debugger/stackhandler.h
+++ b/src/plugins/debugger/stackhandler.h
@@ -33,9 +33,6 @@
 #include "stackframe.h"
 
 #include <QtCore/QAbstractItemModel>
-#include <QtCore/QObject>
-
-#include <QtGui/QIcon>
 
 namespace Debugger {
 class DebuggerEngine;
diff --git a/src/plugins/debugger/stackwindow.cpp b/src/plugins/debugger/stackwindow.cpp
index 70e8d664c5a83305d067fe0f6901834f1b2e0883..b5870c2bfee4ff5d04f52cacc862acaf91cc3b49 100644
--- a/src/plugins/debugger/stackwindow.cpp
+++ b/src/plugins/debugger/stackwindow.cpp
@@ -38,16 +38,11 @@
 
 #include <QtCore/QDebug>
 
-#include <QtGui/QAction>
 #include <QtGui/QApplication>
 #include <QtGui/QClipboard>
-#include <QtGui/QComboBox>
 #include <QtGui/QHeaderView>
 #include <QtGui/QMenu>
 #include <QtGui/QResizeEvent>
-#include <QtGui/QTreeView>
-#include <QtGui/QVBoxLayout>
-
 
 namespace Debugger {
 namespace Internal {
diff --git a/src/plugins/debugger/threadswindow.cpp b/src/plugins/debugger/threadswindow.cpp
index 8567ae6d831b78e3061af4c3a134fb3946878e27..517bf824324d0e1742cf2ee3a1d2e55a9e1eed47 100644
--- a/src/plugins/debugger/threadswindow.cpp
+++ b/src/plugins/debugger/threadswindow.cpp
@@ -34,12 +34,10 @@
 
 #include <utils/savedaction.h>
 
-#include <QtGui/QAction>
 #include <QtGui/QContextMenuEvent>
 #include <QtGui/QHeaderView>
 #include <QtGui/QMenu>
 
-
 namespace Debugger {
 namespace Internal {
 
diff --git a/src/plugins/debugger/watchdata.cpp b/src/plugins/debugger/watchdata.cpp
index b368c04311defa2b6dd95ca643e666f2f2df731e..ecd03e2a2d9fdf2a9ff7099cea00f4a31f7e99d5 100644
--- a/src/plugins/debugger/watchdata.cpp
+++ b/src/plugins/debugger/watchdata.cpp
@@ -3,8 +3,6 @@
 #include <QtCore/QTextStream>
 #include <QtCore/QDebug>
 
-#include <QtCore/QCoreApplication>
-
 ////////////////////////////////////////////////////////////////////
 //
 // WatchData
diff --git a/src/plugins/debugger/watchdata.h b/src/plugins/debugger/watchdata.h
index e5e2af28bb0c67bd44dc4ca9debec21db5a52b87..051861953c0381e04c1a26ae83bd14b522a8d133 100644
--- a/src/plugins/debugger/watchdata.h
+++ b/src/plugins/debugger/watchdata.h
@@ -32,7 +32,6 @@
 
 #include <QtCore/QMetaType>
 #include <QtCore/QtGlobal>
-#include <QtCore/QObject>
 #include <QtCore/QCoreApplication>
 
 namespace Debugger {
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 8bdb23c50867a9cfd51eccc0f394f052c6751be6..e6ff28c4c1f4968a6ad50f47505ec9a14e72dad3 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -49,13 +49,9 @@
 #include <QtCore/QFile>
 #include <QtCore/QProcess>
 #include <QtCore/QTextStream>
-#include <QtCore/QTimer>
 #include <QtCore/QtAlgorithms>
 
-#include <QtGui/QAction>
-#include <QtGui/QApplication>
 #include <QtGui/QLabel>
-#include <QtGui/QToolTip>
 #include <QtGui/QTextEdit>
 
 #include <ctype.h>
diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h
index 71da7f284e1e1ff1a5a6f3a6da0dfa532d387e37..c4dc70b4af297bb992072b1d6d4321a27b99ee4a 100644
--- a/src/plugins/debugger/watchhandler.h
+++ b/src/plugins/debugger/watchhandler.h
@@ -33,7 +33,6 @@
 #include "watchdata.h"
 
 #include <QtCore/QPointer>
-#include <QtCore/QObject>
 #include <QtCore/QHash>
 #include <QtCore/QSet>
 #include <QtCore/QStringList>
diff --git a/src/plugins/debugger/watchwindow.h b/src/plugins/debugger/watchwindow.h
index e3ca3bcf60440205687776fd26c3dfe812e38c89..4470a6baa3b099bef490774085dc2689a725adf2 100644
--- a/src/plugins/debugger/watchwindow.h
+++ b/src/plugins/debugger/watchwindow.h
@@ -32,7 +32,6 @@
 
 #include <QtGui/QTreeView>
 
-
 namespace Debugger {
 namespace Internal {
 
diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.h b/src/plugins/genericprojectmanager/genericprojectmanager.h
index bb0cf918de400492869126e390dd01f49bdf8b63..4e7e213462d482fce42dc5991f5550ba0225ab16 100644
--- a/src/plugins/genericprojectmanager/genericprojectmanager.h
+++ b/src/plugins/genericprojectmanager/genericprojectmanager.h
@@ -31,6 +31,7 @@
 #define GENERICPROJECTMANAGER_H
 
 #include <projectexplorer/iprojectmanager.h>
+#include <coreplugin/icontext.h>
 
 namespace GenericProjectManager {
 namespace Internal {
diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp
index bff79b10d5f01c528eecf1227f48daed4bc02e6b..8ca875ebbd38d384a4b8d655fd8c261c938e2e8d 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.cpp
+++ b/src/plugins/projectexplorer/abstractprocessstep.cpp
@@ -36,10 +36,9 @@
 
 #include <utils/qtcassert.h>
 
-#include <QtCore/QProcess>
 #include <QtCore/QEventLoop>
 #include <QtCore/QTimer>
-#include <QtGui/QTextDocument>
+#include <QtCore/QDir>
 
 using namespace ProjectExplorer;
 
diff --git a/src/plugins/projectexplorer/allprojectsfilter.h b/src/plugins/projectexplorer/allprojectsfilter.h
index af1fcf6293a8fa78bd2a94d0526341e43a288806..5b05235a9a51dc9ab287bdb65b76999d83173af8 100644
--- a/src/plugins/projectexplorer/allprojectsfilter.h
+++ b/src/plugins/projectexplorer/allprojectsfilter.h
@@ -34,7 +34,6 @@
 
 #include <QtCore/QFutureInterface>
 #include <QtCore/QString>
-#include <QtGui/QWidget>
 
 namespace ProjectExplorer {
 
diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp
index 637394313f6445b000d19c27c317dbe637c6450a..fadf2c77b7920cf4682a195abc79613c583218e4 100644
--- a/src/plugins/projectexplorer/allprojectsfind.cpp
+++ b/src/plugins/projectexplorer/allprojectsfind.cpp
@@ -38,10 +38,9 @@
 #include <texteditor/itexteditor.h>
 #include <coreplugin/editormanager/editormanager.h>
 
-#include <QtCore/QDebug>
-#include <QtCore/QFileInfo>
 #include <QtCore/QSettings>
 #include <QtCore/QRegExp>
+
 #include <QtGui/QGridLayout>
 #include <QtGui/QLabel>
 
diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h
index 96c2dff6eac8c875f73311c6bd90689dc247e4fb..ca3d4ce24c52a3270b614fc90ebc8ceb9b57fe58 100644
--- a/src/plugins/projectexplorer/allprojectsfind.h
+++ b/src/plugins/projectexplorer/allprojectsfind.h
@@ -30,13 +30,10 @@
 #ifndef ALLPROJECTSFIND_H
 #define ALLPROJECTSFIND_H
 
-#include <find/ifindfilter.h>
-#include <find/searchresultwindow.h>
 #include <texteditor/basefilefind.h>
 
 #include <QtCore/QPointer>
 
-
 namespace ProjectExplorer {
 
 class ProjectExplorerPlugin;
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index 304d7e1b450c6028d66cf32391998bab8adbf5fa..d959e75a3e7a4772690b7637f4d9b5f85d99f250 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -38,6 +38,7 @@
 #include <coreplugin/icore.h>
 #include <extensionsystem/pluginmanager.h>
 #include <utils/qtcassert.h>
+#include <utils/detailswidget.h>
 
 #include <QtCore/QSignalMapper>
 
diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h
index ad8fd915779e05932969a2328bd9815c2311d829..3a05e0c65a7656c530791c43db3c4affcf6ba243 100644
--- a/src/plugins/projectexplorer/buildstepspage.h
+++ b/src/plugins/projectexplorer/buildstepspage.h
@@ -34,8 +34,6 @@
 #include "deployconfiguration.h"
 #include "namedwidget.h"
 
-#include <utils/detailswidget.h>
-
 QT_BEGIN_NAMESPACE
 class QPushButton;
 class QToolButton;
@@ -44,6 +42,10 @@ class QVBoxLayout;
 class QSignalMapper;
 QT_END_NAMESPACE
 
+namespace Utils {
+class DetailsWidget;
+}
+
 namespace ProjectExplorer {
 
 class Target;
diff --git a/src/plugins/projectexplorer/currentprojectfilter.cpp b/src/plugins/projectexplorer/currentprojectfilter.cpp
index 1712fa93714f6be30ac2e65f5693bf5c7dde0a3e..dabd35dbbc86d86653a5fcf61efeddc050084d17 100644
--- a/src/plugins/projectexplorer/currentprojectfilter.cpp
+++ b/src/plugins/projectexplorer/currentprojectfilter.cpp
@@ -30,12 +30,8 @@
 #include "currentprojectfilter.h"
 #include "projectexplorer.h"
 #include "project.h"
-#include "session.h"
 
 #include <QtCore/QtDebug>
-#include <QtCore/QThread>
-#include <QtCore/QTimer>
-#include <QtCore/QVariant>
 
 using namespace Core;
 using namespace Locator;
diff --git a/src/plugins/projectexplorer/currentprojectfilter.h b/src/plugins/projectexplorer/currentprojectfilter.h
index 64ed2c22275c0303d3371d2b0526d8733346264b..25bc56c42230a6eff52e3a3b236da506edb4387b 100644
--- a/src/plugins/projectexplorer/currentprojectfilter.h
+++ b/src/plugins/projectexplorer/currentprojectfilter.h
@@ -32,8 +32,6 @@
 
 #include <locator/basefilefilter.h>
 
-#include <QtCore/QString>
-#include <QtCore/QByteArray>
 #include <QtCore/QFutureInterface>
 
 namespace ProjectExplorer {
diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp
index a3c64cb4ca3a1e1e80ae345798f1938c73e8cb3f..105380da5c6f744ba87e2329b975280d5141f7ca 100644
--- a/src/plugins/projectexplorer/currentprojectfind.cpp
+++ b/src/plugins/projectexplorer/currentprojectfind.cpp
@@ -30,16 +30,11 @@
 #include "currentprojectfind.h"
 
 #include "projectexplorer.h"
-#include "project.h"
 
 #include <utils/qtcassert.h>
 
 #include <QtCore/QDebug>
-#include <QtCore/QFileInfo>
 #include <QtCore/QSettings>
-#include <QtCore/QRegExp>
-#include <QtGui/QGridLayout>
-#include <QtGui/QLabel>
 
 using namespace Find;
 using namespace ProjectExplorer;
diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h
index dc0c5f7d5c372393915288deb856e03f6fd013d8..8cedf7c548d2a9df2283b920b393fe746455f86a 100644
--- a/src/plugins/projectexplorer/currentprojectfind.h
+++ b/src/plugins/projectexplorer/currentprojectfind.h
@@ -32,11 +32,6 @@
 
 #include "allprojectsfind.h"
 
-#include <find/ifindfilter.h>
-#include <find/searchresultwindow.h>
-
-#include <QtCore/QPointer>
-
 QT_BEGIN_NAMESPACE
 class QWidget;
 QT_END_NAMESPACE
diff --git a/src/plugins/projectexplorer/editorconfiguration.cpp b/src/plugins/projectexplorer/editorconfiguration.cpp
index 06a1cb0a61438bae60cc9ba402b369fcff725d45..7f58b269c257457b8d9618c993ae0b413cd142e6 100644
--- a/src/plugins/projectexplorer/editorconfiguration.cpp
+++ b/src/plugins/projectexplorer/editorconfiguration.cpp
@@ -28,7 +28,7 @@
 **************************************************************************/
 
 #include "editorconfiguration.h"
-#include <coreplugin/icore.h>
+
 #include <QtCore/QTextCodec>
 
 using namespace ProjectExplorer;
diff --git a/src/plugins/projectexplorer/iprojectmanager.h b/src/plugins/projectexplorer/iprojectmanager.h
index 7b217fb2070b9e5100ad0398ed45592c3eba2e55..3c6b991888225877143e9d40e08b9fe2b38ff755 100644
--- a/src/plugins/projectexplorer/iprojectmanager.h
+++ b/src/plugins/projectexplorer/iprojectmanager.h
@@ -32,9 +32,11 @@
 
 #include "projectexplorer_export.h"
 
-#include <coreplugin/icontext.h>
 #include <QtCore/QObject>
 
+namespace Core {
+class Context;
+}
 namespace ProjectExplorer {
 
 class Project;
diff --git a/src/plugins/projectexplorer/pluginfilefactory.h b/src/plugins/projectexplorer/pluginfilefactory.h
index d48a988b489ee61e09c40a6f2f82bca158ddedf9..174906ef95ea914aa8e027ecd0d3789168963645 100644
--- a/src/plugins/projectexplorer/pluginfilefactory.h
+++ b/src/plugins/projectexplorer/pluginfilefactory.h
@@ -32,7 +32,6 @@
 
 #include <coreplugin/ifilefactory.h>
 
-#include <QtCore/QObject>
 #include <QtCore/QStringList>
 
 namespace ProjectExplorer {
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 5b521952198bd4947abe76f41a4b1e259e1fe353..69976900ebc43a126a6c4af3ab0379eb0af212fd 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -96,6 +96,7 @@
 #include <coreplugin/iversioncontrol.h>
 #include <welcome/welcomemode.h>
 #include <extensionsystem/pluginmanager.h>
+#include <find/searchresultwindow.h>
 #include <utils/consoleprocess.h>
 #include <utils/qtcassert.h>
 #include <utils/parameteraction.h>
diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp
index f17337c0008b29aa979f607fe2416af88603db86..3b35d04422fd1bd7e19e527414a0a74a093d2317 100644
--- a/src/plugins/projectexplorer/projectmodels.cpp
+++ b/src/plugins/projectexplorer/projectmodels.cpp
@@ -40,10 +40,8 @@
 #include <QtCore/QDebug>
 #include <QtCore/QFileInfo>
 
-#include <QtGui/QApplication>
+#include <QtGui/QFont>
 #include <QtGui/QIcon>
-#include <QtGui/QMessageBox>
-#include <QtGui/QStyle>
 
 using namespace ProjectExplorer;
 using namespace ProjectExplorer::Internal;
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp
index 6739a064bb5876f46e99fc5e29a1fbf64c30feeb..fc846b477ae613677dfa5965d08af40db1a5cafd 100644
--- a/src/plugins/projectexplorer/projecttreewidget.cpp
+++ b/src/plugins/projectexplorer/projecttreewidget.cpp
@@ -46,6 +46,7 @@
 #include <QtCore/QSettings>
 
 #include <QtGui/QHeaderView>
+#include <QtGui/QTreeView>
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QToolButton>
 #include <QtGui/QFocusEvent>
diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h
index bf86f227a6d04a808eb099894d0e6439c6756668..9b3475a1a18bf21f16bfef62dbddda2b19c8b361 100644
--- a/src/plugins/projectexplorer/projecttreewidget.h
+++ b/src/plugins/projectexplorer/projecttreewidget.h
@@ -33,7 +33,9 @@
 #include <coreplugin/inavigationwidgetfactory.h>
 
 #include <QtGui/QWidget>
-#include <QtGui/QTreeView>
+#include <QtCore/QModelIndex>
+
+QT_FORWARD_DECLARE_CLASS(QTreeView)
 
 namespace ProjectExplorer {
 
diff --git a/src/plugins/projectexplorer/projectwelcomepagewidget.cpp b/src/plugins/projectexplorer/projectwelcomepagewidget.cpp
index 8530ec3609d77a75568f240fe5c4a88665b62144..7f6a34d495c88e72326192488e4543997f8f1923 100644
--- a/src/plugins/projectexplorer/projectwelcomepagewidget.cpp
+++ b/src/plugins/projectexplorer/projectwelcomepagewidget.cpp
@@ -44,7 +44,6 @@
 #include <QtCore/QDir>
 #include <QtCore/QPair>
 #include <QtGui/QLabel>
-#include <QtGui/QTreeWidgetItem>
 
 #include <QtCore/QDebug>
 
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index 7cffc0f26835d5955eb4c0b79015e90c00582aab..48fc47f16b1caa2fa18d8c9be081c1c5cd81037b 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -32,36 +32,24 @@
 #include "doubletabwidget.h"
 
 #include "project.h"
-#include "environment.h"
 #include "projectexplorer.h"
 #include "projectexplorerconstants.h"
-#include "iprojectproperties.h"
 #include "session.h"
-#include "target.h"
 #include "projecttreewidget.h"
-#include "runconfiguration.h"
-#include "buildsettingspropertiespage.h"
-#include "runsettingspropertiespage.h"
+#include "iprojectproperties.h"
 #include "targetsettingspanel.h"
 
-#include <coreplugin/minisplitter.h>
-#include <coreplugin/fileiconprovider.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/ifile.h>
 #include <extensionsystem/pluginmanager.h>
 #include <utils/qtcassert.h>
-#include <utils/styledbar.h>
 #include <utils/stylehelper.h>
 
 #include <QtGui/QApplication>
-#include <QtGui/QBoxLayout>
-#include <QtGui/QComboBox>
-#include <QtGui/QScrollArea>
+#include <QtGui/QGridLayout>
 #include <QtGui/QLabel>
 #include <QtGui/QPainter>
 #include <QtGui/QStackedWidget>
-#include <QtGui/QPaintEvent>
-#include <QtGui/QMenu>
 
 using namespace ProjectExplorer;
 using namespace ProjectExplorer::Internal;
diff --git a/src/plugins/projectexplorer/showineditortaskhandler.cpp b/src/plugins/projectexplorer/showineditortaskhandler.cpp
index fce46a94c50681c81e397dca0840e173c51d4156..685d59b72990408e9e8511f39955ebd4783cb0f8 100644
--- a/src/plugins/projectexplorer/showineditortaskhandler.cpp
+++ b/src/plugins/projectexplorer/showineditortaskhandler.cpp
@@ -32,7 +32,6 @@
 #include "projectexplorerconstants.h"
 #include "task.h"
 
-#include <coreplugin/editormanager/editormanager.h>
 #include <texteditor/basetexteditor.h>
 
 #include <QtGui/QAction>
diff --git a/src/plugins/qmlprojectmanager/qmlprojectmanager.h b/src/plugins/qmlprojectmanager/qmlprojectmanager.h
index 612bb15ec34d1eed2c555e136afa283cbda51020..e505f9b42da8b455afdaa926a04dce1647fd0d07 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectmanager.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectmanager.h
@@ -31,6 +31,7 @@
 #define QMLPROJECTMANAGER_H
 
 #include <projectexplorer/iprojectmanager.h>
+#include <coreplugin/icontext.h>
 
 namespace QmlProjectManager {
 
diff --git a/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp b/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp
index d9640b28c13f7a08467e3a4052db402302faf420..0b45dfbcb10a3f1c5e5f3ba5bccb1956d697bab3 100644
--- a/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp
+++ b/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp
@@ -33,13 +33,9 @@
 #include "qt4project.h"
 #include "qt4target.h"
 
-#include <QtCore/QProcess>
-
 using namespace Qt4ProjectManager;
 using namespace Internal;
 
-enum { debug = 0 };
-
 Qt4UiCodeModelSupport::Qt4UiCodeModelSupport(CppTools::CppModelManagerInterface *modelmanager,
                                              Qt4Project *project,
                                              const QString &source,
diff --git a/src/plugins/qt4projectmanager/qtuicodemodelsupport.h b/src/plugins/qt4projectmanager/qtuicodemodelsupport.h
index b938009739d1ea45833e4ca1f18f47de8f28f3c1..dacd4207168a5c2f4e695fba51d9f8eec00ba280 100644
--- a/src/plugins/qt4projectmanager/qtuicodemodelsupport.h
+++ b/src/plugins/qt4projectmanager/qtuicodemodelsupport.h
@@ -30,11 +30,8 @@
 #ifndef QTUICODEMODELSUPPORT_H
 #define QTUICODEMODELSUPPORT_H
 
-#include <cpptools/cppmodelmanagerinterface.h>
 #include <cpptools/uicodecompletionsupport.h>
 
-#include <QtCore/QDateTime>
-
 namespace Qt4ProjectManager {
 class Qt4Project;
 namespace Internal {
@@ -46,7 +43,7 @@ public:
                           Qt4Project *project,
                           const QString &sourceFile,
                           const QString &uiHeaderFile);
-    ~Qt4UiCodeModelSupport();
+    virtual ~Qt4UiCodeModelSupport();
 protected:
     virtual QString uicCommand() const;
     virtual QStringList environment() const;