diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 800d5b4dfdce313e93d3aa0240e47ab0c5ab70ca..f83d63f7a1c0439ec2bff13184f7833f83cbc061 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -131,7 +131,6 @@ MainWindow::MainWindow() :
     m_versionDialog(0),
     m_activeContext(0),
     m_pluginManager(0),
-    m_outputPane(new OutputPane(m_globalContext)),
     m_outputMode(0),
     m_generalSettings(new GeneralSettings),
     m_shortcutSettings(new ShortcutSettings),
@@ -150,6 +149,8 @@ MainWindow::MainWindow() :
 #endif
     m_toggleSideBarButton(new QToolButton)
 {
+    OutputPaneManager::create();
+
     setWindowTitle(tr("Qt Creator"));
     qApp->setWindowIcon(QIcon(":/core/images/qtcreator_logo_128.png"));
     setDockNestingEnabled(true);
@@ -247,9 +248,9 @@ MainWindow::~MainWindow()
     //because they might trigger stuff that tries to access data from editorwindow, like removeContextWidget
 
     // All modes are now gone
-    delete OutputPane::instance();
+    OutputPaneManager::destroy();
 
-    // Now that the OutputPane is gone, is a good time to delete the view
+    // Now that the OutputPaneManager is gone, is a good time to delete the view
     m_pluginManager->removeObject(m_outputView);
     delete m_outputView;
 
@@ -299,14 +300,15 @@ bool MainWindow::init(ExtensionSystem::PluginManager *pm, QString *)
     outputModeWidget->layout()->addWidget(new Core::FindToolBarPlaceHolder(m_outputMode));
     outputModeWidget->setFocusProxy(oph);
 
-    m_outputMode->setContext(m_outputPane->context());
+    m_outputMode->setContext(m_globalContext);
     m_pluginManager->addObject(m_outputMode);
     m_pluginManager->addObject(m_generalSettings);
     m_pluginManager->addObject(m_shortcutSettings);
 
-    // Add widget to the bottom, we create the view here instead of inside the OutputPane, since
-    // the ViewManager needs to be initilized before
-    m_outputView = new Core::BaseView("OutputWindow.Buttons", m_outputPane->buttonsWidget(), QList<int>(), Core::IView::Second);
+    // Add widget to the bottom, we create the view here instead of inside the
+    // OutputPaneManager, since the ViewManager needs to be initilized before
+    m_outputView = new Core::BaseView("OutputWindow.Buttons",
+        OutputPaneManager::instance()->buttonsWidget(), QList<int>(), Core::IView::Second);
     m_pluginManager->addObject(m_outputView);
     return true;
 }
@@ -318,7 +320,7 @@ void MainWindow::extensionsInitialized()
     m_viewManager->extensionsInitalized();
 
     m_messageManager->init(m_pluginManager);
-    m_outputPane->init(m_pluginManager);
+    OutputPaneManager::instance()->init();
 
     m_actionManager->initialize();
     readSettings();
@@ -756,7 +758,7 @@ void MainWindow::setFocusToEditor()
     if (focusWidget && focusWidget == qApp->focusWidget()) {
         if (FindToolBarPlaceHolder::getCurrent())
             FindToolBarPlaceHolder::getCurrent()->hide();
-        m_outputPane->slotHide();
+        OutputPaneManager::instance()->slotHide();
         RightPaneWidget::instance()->setShown(false);
     }
 }
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index 4fa8f7472c16e529836fa96a0bf5b092dfd593e3..32513092dc56e1f999b3cd371be15f370e8f6c31 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -80,13 +80,12 @@ class CoreImpl;
 class FancyTabWidget;
 class GeneralSettings;
 class NavigationWidget;
-class OutputPane;
 class ProgressManagerPrivate;
 class ShortcutSettings;
 class ViewManager;
 class VersionDialog;
 
-class CORE_EXPORT  MainWindow : public QMainWindow
+class CORE_EXPORT MainWindow : public QMainWindow
 {
     Q_OBJECT
 
@@ -198,7 +197,6 @@ private:
 
     ExtensionSystem::PluginManager *m_pluginManager;
 
-    OutputPane *m_outputPane;
     BaseMode *m_outputMode;
     GeneralSettings *m_generalSettings;
     ShortcutSettings *m_shortcutSettings;
diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp
index 52dec2a22ff4947d95bb68ea82890a6cc4e594e8..f983f5b15d95a523a71b4c58867d70f9edfa0597 100644
--- a/src/plugins/coreplugin/outputpane.cpp
+++ b/src/plugins/coreplugin/outputpane.cpp
@@ -81,7 +81,7 @@ private:
 OutputPanePlaceHolder *OutputPanePlaceHolder::m_current = 0;
 
 OutputPanePlaceHolder::OutputPanePlaceHolder(Core::IMode *mode, QWidget *parent)
-    :QWidget(parent), m_mode(mode), m_closeable(true)
+   : QWidget(parent), m_mode(mode), m_closeable(true)
 {
     setVisible(false);
     setLayout(new QVBoxLayout);
@@ -98,8 +98,8 @@ OutputPanePlaceHolder::OutputPanePlaceHolder(Core::IMode *mode, QWidget *parent)
 OutputPanePlaceHolder::~OutputPanePlaceHolder()
 {
     if (m_current == this) {
-        OutputPane::instance()->setParent(0);
-        OutputPane::instance()->hide();
+        OutputPaneManager::instance()->setParent(0);
+        OutputPaneManager::instance()->hide();
     }
 }
 
@@ -117,45 +117,54 @@ void OutputPanePlaceHolder::currentModeChanged(Core::IMode *mode)
 {
     if (m_current == this) {
         m_current = 0;
-        OutputPane::instance()->setParent(0);
-        OutputPane::instance()->hide();
-        OutputPane::instance()->updateStatusButtons(false);
+        OutputPaneManager::instance()->setParent(0);
+        OutputPaneManager::instance()->hide();
+        OutputPaneManager::instance()->updateStatusButtons(false);
     }
     if (m_mode == mode) {
         m_current = this;
-        layout()->addWidget(OutputPane::instance());
-        OutputPane::instance()->show();
-        OutputPane::instance()->updateStatusButtons(isVisible());
-        OutputPane::instance()->setCloseable(m_closeable);
+        layout()->addWidget(OutputPaneManager::instance());
+        OutputPaneManager::instance()->show();
+        OutputPaneManager::instance()->updateStatusButtons(isVisible());
+        OutputPaneManager::instance()->setCloseable(m_closeable);
     }
 }
 
 ////
-// OutputPane
+// OutputPaneManager
 ////
 
-OutputPane *OutputPane::m_instance = 0;
+static OutputPaneManager *m_instance = 0;
 
-OutputPane *OutputPane::instance()
+void OutputPaneManager::create()
+{
+   m_instance = new OutputPaneManager; 
+}
+
+void OutputPaneManager::destroy()
+{
+    delete m_instance;
+    m_instance = 0;
+}
+
+OutputPaneManager *OutputPaneManager::instance()
 {
     return m_instance;
 }
 
-void OutputPane::updateStatusButtons(bool visible)
+void OutputPaneManager::updateStatusButtons(bool visible)
 {
     int idx = m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt();
     if (m_buttons.value(idx))
         m_buttons.value(idx)->setChecked(visible);
 }
 
-OutputPane::OutputPane(const QList<int> &context, QWidget *parent) :
+OutputPaneManager::OutputPaneManager(QWidget *parent) :
     QWidget(parent),
-    m_context(context),
     m_widgetComboBox(new QComboBox),
     m_clearButton(new QToolButton),
     m_closeButton(new QToolButton),
     m_closeAction(0),
-    m_pluginManager(0),
     m_lastIndex(-1),
     m_outputWidgetPane(new QStackedWidget),
     m_opToolBarWidgets(new QStackedWidget)
@@ -191,24 +200,19 @@ OutputPane::OutputPane(const QList<int> &context, QWidget *parent) :
 #else
     m_buttonsWidget->layout()->setSpacing(4);
 #endif
-
-    m_instance = this;
 }
 
-OutputPane::~OutputPane()
+OutputPaneManager::~OutputPaneManager()
 {
-    m_instance = 0;
 }
 
-QWidget *OutputPane::buttonsWidget()
+QWidget *OutputPaneManager::buttonsWidget()
 {
     return m_buttonsWidget;
 }
 
-void OutputPane::init(ExtensionSystem::PluginManager *pm)
+void OutputPaneManager::init()
 {
-    m_pluginManager = pm;
-
     ActionManager *am = Core::ICore::instance()->actionManager();
     ActionContainer *mwindow = am->actionContainer(Constants::M_WINDOW);
 
@@ -217,7 +221,8 @@ void OutputPane::init(ExtensionSystem::PluginManager *pm)
     mwindow->addMenu(mpanes, Constants::G_WINDOW_PANES);
     mpanes->menu()->setTitle(tr("Output &Panes"));
 
-    QList<IOutputPane*> panes = m_pluginManager->getObjects<IOutputPane>();
+    QList<IOutputPane*> panes = ExtensionSystem::PluginManager::instance()
+        ->getObjects<IOutputPane>();
     QMultiMap<int, IOutputPane*> sorted;
     foreach (IOutputPane* outPane, panes)
         sorted.insertMulti(outPane->priorityInStatusBar(), outPane);
@@ -251,7 +256,7 @@ void OutputPane::init(ExtensionSystem::PluginManager *pm)
         actionId.remove(QLatin1Char(' '));
         QAction *action = new QAction(outPane->name(), this);
 
-        Command *cmd = am->registerAction(action, actionId, m_context);
+        Command *cmd = am->registerAction(action, actionId, QList<int>() << Constants::C_GLOBAL_ID);
         if (outPane->priorityInStatusBar() != -1) {
 #ifdef Q_OS_MAC
             cmd->setDefaultKeySequence(QKeySequence("Ctrl+" + QString::number(shortcutNumber)));
@@ -281,7 +286,7 @@ void OutputPane::init(ExtensionSystem::PluginManager *pm)
     changePage();
 }
 
-void OutputPane::shortcutTriggered()
+void OutputPaneManager::shortcutTriggered()
 {
     QAction *action = qobject_cast<QAction*>(sender());
     if (action && m_actions.contains(action)) {
@@ -305,7 +310,7 @@ void OutputPane::shortcutTriggered()
     }
 }
 
-void OutputPane::buttonTriggered()
+void OutputPaneManager::buttonTriggered()
 {
     QPushButton *button = qobject_cast<QPushButton *>(sender());
     QMap<int, QPushButton *>::const_iterator it, end;
@@ -327,7 +332,7 @@ void OutputPane::buttonTriggered()
     }
 }
 
-void OutputPane::updateToolTip()
+void OutputPaneManager::updateToolTip()
 {
     QAction *action = qobject_cast<QAction*>(sender());
     if (action) {
@@ -337,7 +342,7 @@ void OutputPane::updateToolTip()
     }
 }
 
-void OutputPane::slotHide()
+void OutputPaneManager::slotHide()
 {
     if (OutputPanePlaceHolder::m_current) {
         OutputPanePlaceHolder::m_current->setVisible(false);
@@ -350,7 +355,7 @@ void OutputPane::slotHide()
     }
 }
 
-int OutputPane::findIndexForPage(IOutputPane *out)
+int OutputPaneManager::findIndexForPage(IOutputPane *out)
 {
     if (!out)
         return -1;
@@ -370,7 +375,7 @@ int OutputPane::findIndexForPage(IOutputPane *out)
         return -1;
 }
 
-void OutputPane::ensurePageVisible(int idx)
+void OutputPaneManager::ensurePageVisible(int idx)
 {
     if (m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt() != idx) {
         m_widgetComboBox->setCurrentIndex(m_widgetComboBox->findData(idx));
@@ -380,13 +385,13 @@ void OutputPane::ensurePageVisible(int idx)
 }
 
 
-void OutputPane::showPage(bool focus)
+void OutputPaneManager::showPage(bool focus)
 {
     int idx = findIndexForPage(qobject_cast<IOutputPane*>(sender()));
     showPage(idx, focus);
 }
 
-void OutputPane::showPage(int idx, bool focus)
+void OutputPaneManager::showPage(int idx, bool focus)
 {
     IOutputPane *out = m_pageMap.value(idx);
     if (idx > -1) {
@@ -405,7 +410,7 @@ void OutputPane::showPage(int idx, bool focus)
     }
 }
 
-void OutputPane::togglePage(bool focus)
+void OutputPaneManager::togglePage(bool focus)
 {
     int idx = findIndexForPage(qobject_cast<IOutputPane*>(sender()));
     if (OutputPanePlaceHolder::m_current
@@ -417,23 +422,23 @@ void OutputPane::togglePage(bool focus)
     }
 }
 
-void OutputPane::setCloseable(bool b)
+void OutputPaneManager::setCloseable(bool b)
 {
     m_closeAction->setVisible(b);
 }
 
-bool OutputPane::closeable()
+bool OutputPaneManager::closeable()
 {
     return m_closeButton->isVisibleTo(m_closeButton->parentWidget());
 }
 
-void OutputPane::focusInEvent(QFocusEvent *e)
+void OutputPaneManager::focusInEvent(QFocusEvent *e)
 {
     if (m_outputWidgetPane->currentWidget())
         m_outputWidgetPane->currentWidget()->setFocus(e->reason());
 }
 
-void OutputPane::changePage()
+void OutputPaneManager::changePage()
 {
     if (m_outputWidgetPane->count() <= 0)
         return;
@@ -470,7 +475,7 @@ void OutputPane::changePage()
     m_lastIndex = idx;
 }
 
-void OutputPane::clearPage()
+void OutputPaneManager::clearPage()
 {
     if (m_pageMap.contains(m_outputWidgetPane->currentIndex()))
         m_pageMap.value(m_outputWidgetPane->currentIndex())->clearContents();
diff --git a/src/plugins/coreplugin/outputpane.h b/src/plugins/coreplugin/outputpane.h
index 8505b34bfa8981b6f22e74fa1ad2c2a282ec8cf3..3d105e377e37c6733cc994cfd9177525f1050d30 100644
--- a/src/plugins/coreplugin/outputpane.h
+++ b/src/plugins/coreplugin/outputpane.h
@@ -47,21 +47,20 @@ class QStackedWidget;
 class QPushButton;
 QT_END_NAMESPACE
 
-namespace ExtensionSystem { class PluginManager; }
-
 namespace Core {
 
 class IMode;
 class IOutputPane;
 
 namespace Internal {
-class OutputPane;
+class OutputPaneManager;
+class MainWindow;
 }
 
 
 class CORE_EXPORT OutputPanePlaceHolder : public QWidget
 {
-    friend class Core::Internal::OutputPane; // needs to set m_visible and thus access m_current
+    friend class Core::Internal::OutputPaneManager; // needs to set m_visible and thus access m_current
     Q_OBJECT
 public:
     OutputPanePlaceHolder(Core::IMode *mode, QWidget *parent = 0);
@@ -80,17 +79,13 @@ private:
 
 namespace Internal {
 
-class OutputPane
-  : public QWidget
+class OutputPaneManager : public QWidget
 {
     Q_OBJECT
 
 public:
-    OutputPane(const QList<int> &context, QWidget *parent = 0);
-    ~OutputPane();
-    void init(ExtensionSystem::PluginManager *pm);
-    static OutputPane *instance();
-    const QList<int> &context() const { return m_context; }
+    void init();
+    static OutputPaneManager *instance();
     void setCloseable(bool b);
     bool closeable();
     QWidget *buttonsWidget();
@@ -103,7 +98,7 @@ public slots:
 protected:
     void focusInEvent(QFocusEvent *e);
 
-private slots:;
+private slots:
     void changePage();
     void showPage(bool focus);
     void togglePage(bool focus);
@@ -112,17 +107,23 @@ private slots:;
     void buttonTriggered();
 
 private:
+    // the only class that is allowed to create and destroy
+    friend class MainWindow;
+
+    static void create();
+    static void destroy();
+
+    OutputPaneManager(QWidget *parent = 0);
+    ~OutputPaneManager();
+
     void showPage(int idx, bool focus);
     void ensurePageVisible(int idx);
     int findIndexForPage(IOutputPane *out);
-    const QList<int> m_context;
     QComboBox *m_widgetComboBox;
     QToolButton *m_clearButton;
     QToolButton *m_closeButton;
     QAction *m_closeAction;
 
-    ExtensionSystem::PluginManager *m_pluginManager;
-
     QMap<int, Core::IOutputPane*> m_pageMap;
     int m_lastIndex;
 
@@ -132,7 +133,7 @@ private:
     QMap<int, QPushButton *> m_buttons;
     QMap<QAction *, int> m_actions;
 
-    static OutputPane *m_instance;
+    static OutputPaneManager *m_instance;
 };
 
 } // namespace Internal