diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp
index 0001e4c764de4d033a9d7b158e29bcd4438da7d2..670b59426c9b03574acbcb5b6ec418df9eccd8ef 100644
--- a/src/plugins/bookmarks/bookmarkmanager.cpp
+++ b/src/plugins/bookmarks/bookmarkmanager.cpp
@@ -832,34 +832,15 @@ void BookmarkManager::handleBookmarkTooltipRequest(ITextEditor *textEditor, cons
 BookmarkViewFactory::BookmarkViewFactory(BookmarkManager *bm)
     : m_manager(bm)
 {
+    setDisplayName(BookmarkView::tr("Bookmarks"));
+    setPriority(300);
+    setId("Bookmarks");
+    setActivationSequence(QKeySequence(Core::UseMacShortcuts ? tr("Alt+Meta+M") : tr("Alt+M")));
 }
 
-QString BookmarkViewFactory::displayName() const
+NavigationView BookmarkViewFactory::createWidget()
 {
-    return BookmarkView::tr("Bookmarks");
-}
-
-int BookmarkViewFactory::priority() const
-{
-    return 300;
-}
-
-Id BookmarkViewFactory::id() const
-{
-    return "Bookmarks";
-}
-
-QKeySequence BookmarkViewFactory::activationSequence() const
-{
-    return QKeySequence(Core::UseMacShortcuts ? tr("Alt+Meta+M") : tr("Alt+M"));
-}
-
-Core::NavigationView BookmarkViewFactory::createWidget()
-{
-    BookmarkView *bookmarkView = new BookmarkView(m_manager);
-    Core::NavigationView view;
-    view.widget = bookmarkView;
-    return view;
+    return NavigationView(new BookmarkView(m_manager));
 }
 
 } // namespace Internal
diff --git a/src/plugins/bookmarks/bookmarkmanager.h b/src/plugins/bookmarks/bookmarkmanager.h
index 88f6a178f59fa0f9bd7f72612875fb18fe85db76..5ff51ff5e8941a2881a912cf6c64b43cc30fa19a 100644
--- a/src/plugins/bookmarks/bookmarkmanager.h
+++ b/src/plugins/bookmarks/bookmarkmanager.h
@@ -170,10 +170,6 @@ public:
     BookmarkViewFactory(BookmarkManager *bm);
 
 private:
-    QString displayName() const;
-    int priority() const;
-    Core::Id id() const;
-    QKeySequence activationSequence() const;
     Core::NavigationView createWidget();
 
     BookmarkManager *m_manager;
diff --git a/src/plugins/classview/classviewmanager.cpp b/src/plugins/classview/classviewmanager.cpp
index e0d756a3a849644edaf48fb640e604093fa23dea..877f36dc8061c6ee04755fd565b9657035d95b6f 100644
--- a/src/plugins/classview/classviewmanager.cpp
+++ b/src/plugins/classview/classviewmanager.cpp
@@ -224,10 +224,6 @@ void Manager::initialize()
 {
     // use Qt::QueuedConnection everywhere
 
-    // widget factory signals
-    connect(NavigationWidgetFactory::instance(), SIGNAL(widgetIsCreated()),
-            SLOT(onWidgetIsCreated()), Qt::QueuedConnection);
-
     // internal manager state is changed
     connect(this, SIGNAL(stateChanged(bool)), SLOT(onStateChanged(bool)), Qt::QueuedConnection);
 
@@ -318,17 +314,6 @@ void Manager::setState(bool state)
     emit stateChanged(d->state);
 }
 
-/*!
-    Reacts to the widget factory creating a widget.
-
-    \sa setState, state
-*/
-
-void Manager::onWidgetIsCreated()
-{
-    // do nothing - continue to sleep
-}
-
 /*!
     Reacts to the \a visibility of one navigation pane widget being changed
     (there might be a lot of them).
diff --git a/src/plugins/classview/classviewmanager.h b/src/plugins/classview/classviewmanager.h
index f05d8a7733cfe990c118016510952d7eb9c6dfcf..19c973de26d47bffe51ac9eda5dd9c7ca843b240 100644
--- a/src/plugins/classview/classviewmanager.h
+++ b/src/plugins/classview/classviewmanager.h
@@ -87,7 +87,6 @@ public slots:
     void setFlatMode(bool flat);
 
 protected slots:
-    void onWidgetIsCreated();
     void onWidgetVisibilityIsChanged(bool visibility);
     void onStateChanged(bool state);
     void onProjectListChanged();
diff --git a/src/plugins/classview/classviewnavigationwidgetfactory.cpp b/src/plugins/classview/classviewnavigationwidgetfactory.cpp
index 2255faf1c8d76200343bb5ba42e30133a90b6c94..1ba4bc96d8e728092b029df7357b095ea055810b 100644
--- a/src/plugins/classview/classviewnavigationwidgetfactory.cpp
+++ b/src/plugins/classview/classviewnavigationwidgetfactory.cpp
@@ -41,8 +41,6 @@
 namespace ClassView {
 namespace Internal {
 
-static NavigationWidgetFactory *factoryInstance;
-
 ///////////////////////////////// NavigationWidgetFactory //////////////////////////////////
 
 /*!
@@ -52,49 +50,13 @@ static NavigationWidgetFactory *factoryInstance;
 
     Supports the \c setState public slot for adding the widget factory to or
     removing it from \c ExtensionSystem::PluginManager.
-
-    Also supports the \c widgetIsCreated and \c stateChanged signals.
-*/
-
-/*!
-    \fn void NavigationWidgetFactory::widgetIsCreated()
-
-    Informs that the widget factory created a widget.
 */
 
 NavigationWidgetFactory::NavigationWidgetFactory()
 {
-    factoryInstance = this;
-}
-
-NavigationWidgetFactory::~NavigationWidgetFactory()
-{
-    factoryInstance = 0;
-}
-
-NavigationWidgetFactory *NavigationWidgetFactory::instance()
-{
-    return factoryInstance;
-}
-
-QString NavigationWidgetFactory::displayName() const
-{
-    return tr("Class View");
-}
-
-int NavigationWidgetFactory::priority() const
-{
-    return 500;
-}
-
-Core::Id NavigationWidgetFactory::id() const
-{
-    return "Class View";
-}
-
-QKeySequence NavigationWidgetFactory::activationSequence() const
-{
-    return QKeySequence();
+    setDisplayName(tr("Class View"));
+    setPriority(500);
+    setId("Class View");
 }
 
 Core::NavigationView NavigationWidgetFactory::createWidget()
@@ -103,7 +65,6 @@ Core::NavigationView NavigationWidgetFactory::createWidget()
     NavigationWidget *widget = new NavigationWidget();
     navigationView.widget = widget;
     navigationView.dockToolBarWidgets = widget->createToolButtons();
-    emit widgetIsCreated();
     return navigationView;
 }
 
diff --git a/src/plugins/classview/classviewnavigationwidgetfactory.h b/src/plugins/classview/classviewnavigationwidgetfactory.h
index 3cb0ec3b0ce62e3aeeafc6233fdae92d8400fb7e..450ae7193074a3bda1403e0fe29c3a71032bfb5a 100644
--- a/src/plugins/classview/classviewnavigationwidgetfactory.h
+++ b/src/plugins/classview/classviewnavigationwidgetfactory.h
@@ -40,28 +40,8 @@ class NavigationWidgetFactory : public Core::INavigationWidgetFactory
     Q_OBJECT
 
 public:
-    //! Constructor
     NavigationWidgetFactory();
 
-    //! Destructor
-    ~NavigationWidgetFactory();
-
-    //! Access to static instance
-    static NavigationWidgetFactory *instance();
-
-    // Core::INavigationWidgetFactory
-    //! \implements Core::INavigationWidgetFactory::displayName
-    QString displayName() const;
-
-    //! \implements Core::INavigationWidgetFactory::priority
-    int priority() const;
-
-    //! \implements Core::INavigationWidgetFactory::id
-    Core::Id id() const;
-
-    //! \implements Core::INavigationWidgetFactory::activationSequence
-    QKeySequence activationSequence() const;
-
     //! \implements Core::INavigationWidgetFactory::createWidget
     Core::NavigationView createWidget();
 
@@ -70,9 +50,6 @@ public:
 
     //! \implements Core::INavigationWidgetFactory::restoreSettings
     void restoreSettings(int position, QWidget *widget);
-
-signals:
-    void widgetIsCreated();
 };
 
 } // namespace Internal
diff --git a/src/plugins/classview/classviewplugin.cpp b/src/plugins/classview/classviewplugin.cpp
index 95117dc8d596dca78d53873098cb232b51c1730a..517ae0cc1b249bec09e528c824cc85ed575e20aa 100644
--- a/src/plugins/classview/classviewplugin.cpp
+++ b/src/plugins/classview/classviewplugin.cpp
@@ -51,11 +51,8 @@ bool Plugin::initialize(const QStringList &arguments, QString *errorMessage)
     Q_UNUSED(arguments)
     Q_UNUSED(errorMessage)
 
-    // create a navigation widget factory
-    (void) new NavigationWidgetFactory;
-
     // add to ExtensionSystem
-    addAutoReleasedObject(NavigationWidgetFactory::instance());
+    addAutoReleasedObject(new NavigationWidgetFactory);
 
     // create manager
     (void) new Manager(this);
diff --git a/src/plugins/coreplugin/editormanager/openeditorsview.cpp b/src/plugins/coreplugin/editormanager/openeditorsview.cpp
index 91de92aa5d2672c89eb2ecef36e17780367d3ee0..550d563ef548adc1776378d7b2b96766588f41eb 100644
--- a/src/plugins/coreplugin/editormanager/openeditorsview.cpp
+++ b/src/plugins/coreplugin/editormanager/openeditorsview.cpp
@@ -216,42 +216,19 @@ void OpenEditorsWidget::contextMenuRequested(QPoint pos)
 // OpenEditorsViewFactory
 ///
 
-NavigationView OpenEditorsViewFactory::createWidget()
-{
-    NavigationView n;
-    n.widget = new OpenEditorsWidget();
-    return n;
-}
-
-QString OpenEditorsViewFactory::displayName() const
-{
-    return OpenEditorsWidget::tr("Open Documents");
-}
-
-int OpenEditorsViewFactory::priority() const
-{
-    return 200;
-}
-
-Id OpenEditorsViewFactory::id() const
-{
-    return "Open Documents";
-}
-
-QKeySequence OpenEditorsViewFactory::activationSequence() const
-{
-    return QKeySequence(Core::UseMacShortcuts ? tr("Meta+O") : tr("Alt+O"));
-}
-
 OpenEditorsViewFactory::OpenEditorsViewFactory()
 {
+    setId("Open Documents");
+    setDisplayName(OpenEditorsWidget::tr("Open Documents"));
+    setActivationSequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+O") : tr("Alt+O")));
+    setPriority(200);
 }
 
-OpenEditorsViewFactory::~OpenEditorsViewFactory()
+NavigationView OpenEditorsViewFactory::createWidget()
 {
+    return NavigationView(new OpenEditorsWidget());
 }
 
-
 ProxyModel::ProxyModel(QObject *parent) : QAbstractProxyModel(parent)
 {
 }
diff --git a/src/plugins/coreplugin/editormanager/openeditorsview.h b/src/plugins/coreplugin/editormanager/openeditorsview.h
index d4e8197082978d7919cb9d0ac829447105ad7012..01479ae93d357427de6c69cb219b4ca1b6c53923 100644
--- a/src/plugins/coreplugin/editormanager/openeditorsview.h
+++ b/src/plugins/coreplugin/editormanager/openeditorsview.h
@@ -109,13 +109,10 @@ private:
 class OpenEditorsViewFactory : public Core::INavigationWidgetFactory
 {
     Q_OBJECT
+
 public:
     OpenEditorsViewFactory();
-    ~OpenEditorsViewFactory();
-    QString displayName() const;
-    int priority() const;
-    Id id() const;
-    QKeySequence activationSequence() const;
+
     Core::NavigationView createWidget();
 };
 
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.cpp b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
index 3b5062b498422f41b04d832c268ccf3e8746d93e..7fe6326f4cb61d994775e4f8dd4e28dc87dbb730 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.cpp
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
@@ -89,12 +89,60 @@
 
 using namespace Core;
 
+/*!
+    Creates a \l{Core::NavigationViewFactory}.
+*/
+INavigationWidgetFactory::INavigationWidgetFactory()
+    : m_priority(0)
+{
+}
+
+/*!
+    Sets the display name for the factory.
+
+    \sa displayName()
+*/
+void INavigationWidgetFactory::setDisplayName(const QString &displayName)
+{
+    m_displayName = displayName;
+}
+
+/*!
+    Sets the priority for the factory.
+
+    \sa priority()
+*/
+void INavigationWidgetFactory::setPriority(int priority)
+{
+    m_priority = priority;
+}
+
+/*!
+    Sets the id for the factory.
+
+    \sa id()
+*/
+void INavigationWidgetFactory::setId(Id id)
+{
+    m_id = id;
+}
+
+/*!
+    Sets the keyboard activation sequence for the factory.
+
+    \sa activationSequence()
+*/
+void INavigationWidgetFactory::setActivationSequence(const QKeySequence &keys)
+{
+    m_activationSequence = keys;
+}
+
 /*!
     Returns the keyboard shortcut to activate an instance of a navigation widget.
 */
 QKeySequence INavigationWidgetFactory::activationSequence() const
 {
-    return QKeySequence();
+    return m_activationSequence;
 }
 
 /*!
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.h b/src/plugins/coreplugin/inavigationwidgetfactory.h
index 62f2335f416c0e9f91ade9af94876cb84ed22b33..0cd60b6a11df97af78c9462bba851494aebc8d90 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.h
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.h
@@ -34,10 +34,10 @@
 
 #include <QObject>
 #include <QList>
+#include <QKeySequence>
 
 QT_BEGIN_NAMESPACE
 class QToolButton;
-class QKeySequence;
 class QWidget;
 QT_END_NAMESPACE
 
@@ -45,6 +45,8 @@ namespace Core {
 
 struct NavigationView
 {
+    NavigationView(QWidget *w = 0) : widget(w) {}
+
     QWidget *widget;
     QList<QToolButton *> dockToolBarWidgets;
 };
@@ -54,12 +56,18 @@ class CORE_EXPORT INavigationWidgetFactory : public QObject
     Q_OBJECT
 
 public:
-    INavigationWidgetFactory() {}
+    INavigationWidgetFactory();
+
+    void setDisplayName(const QString &displayName);
+    void setPriority(int priority);
+    void setId(Id id);
+    void setActivationSequence(const QKeySequence &keys);
+
+    QString displayName() const { return m_displayName ; }
+    int priority() const { return m_priority; }
+    Id id() const { return m_id; }
+    QKeySequence activationSequence() const;
 
-    virtual QString displayName() const = 0;
-    virtual int priority() const = 0;
-    virtual Id id() const = 0;
-    virtual QKeySequence activationSequence() const;
     // This design is not optimal, think about it again once we need to extend it
     // It could be implemented as returning an object which has both the widget
     // and the docktoolbar widgets
@@ -68,6 +76,12 @@ public:
 
     virtual void saveSettings(int position, QWidget *widget);
     virtual void restoreSettings(int position, QWidget *widget);
+
+private:
+    QString m_displayName;
+    int m_priority;
+    Id m_id;
+    QKeySequence m_activationSequence;
 };
 
 } // namespace Core
diff --git a/src/plugins/cppeditor/cppeditorconstants.h b/src/plugins/cppeditor/cppeditorconstants.h
index 324d614456e7ddcb0bb4c6a17dccefa06778e60d..0c4af7fbd056f632a16adbcaaafde255e553faf0 100644
--- a/src/plugins/cppeditor/cppeditorconstants.h
+++ b/src/plugins/cppeditor/cppeditorconstants.h
@@ -46,11 +46,9 @@ const char M_REFACTORING_MENU_INSERTION_POINT[] = "CppEditor.RefactorGroup";
 const char UPDATE_CODEMODEL[] = "CppEditor.UpdateCodeModel";
 const char INSPECT_CPP_CODEMODEL[] = "CppEditor.InspectCppCodeModel";
 
-const int TYPE_HIERARCHY_PRIORITY = 700;
 const char TYPE_HIERARCHY_ID[] = "CppEditor.TypeHierarchy";
 const char OPEN_TYPE_HIERARCHY[] = "CppEditor.OpenTypeHierarchy";
 
-const int INCLUDE_HIERARCHY_PRIORITY = 800;
 const char INCLUDE_HIERARCHY_ID[] = "CppEditor.IncludeHierarchy";
 const char OPEN_INCLUDE_HIERARCHY[] = "CppEditor.OpenIncludeHierarchy";
 
diff --git a/src/plugins/cppeditor/cppincludehierarchy.cpp b/src/plugins/cppeditor/cppincludehierarchy.cpp
index be5457736b842b0cbb23e8d7a3e6b7c9be40cb1c..e9693f1043da9566e2db2778eb0d6cfa6e88db54 100644
--- a/src/plugins/cppeditor/cppincludehierarchy.cpp
+++ b/src/plugins/cppeditor/cppincludehierarchy.cpp
@@ -207,30 +207,9 @@ CppIncludeHierarchyStackedWidget::~CppIncludeHierarchyStackedWidget()
 // CppIncludeHierarchyFactory
 CppIncludeHierarchyFactory::CppIncludeHierarchyFactory()
 {
-}
-
-CppIncludeHierarchyFactory::~CppIncludeHierarchyFactory()
-{
-}
-
-QString CppIncludeHierarchyFactory::displayName() const
-{
-    return tr("Include Hierarchy");
-}
-
-int CppIncludeHierarchyFactory::priority() const
-{
-    return Constants::INCLUDE_HIERARCHY_PRIORITY;
-}
-
-Core::Id CppIncludeHierarchyFactory::id() const
-{
-    return Core::Id(Constants::INCLUDE_HIERARCHY_ID);
-}
-
-QKeySequence CppIncludeHierarchyFactory::activationSequence() const
-{
-    return QKeySequence();
+    setDisplayName(tr("Include Hierarchy"));
+    setPriority(800);
+    setId(Constants::INCLUDE_HIERARCHY_ID);
 }
 
 Core::NavigationView CppIncludeHierarchyFactory::createWidget()
diff --git a/src/plugins/cppeditor/cppincludehierarchy.h b/src/plugins/cppeditor/cppincludehierarchy.h
index c03a36084cdcac2c3cec47690f5f4b8eecba7eb7..49355751fa1ed67f7d7bd5c799d6a440e947a052 100644
--- a/src/plugins/cppeditor/cppincludehierarchy.h
+++ b/src/plugins/cppeditor/cppincludehierarchy.h
@@ -106,12 +106,7 @@ class CppIncludeHierarchyFactory : public Core::INavigationWidgetFactory
     Q_OBJECT
 public:
     CppIncludeHierarchyFactory();
-    virtual ~CppIncludeHierarchyFactory();
 
-    QString displayName() const;
-    int priority() const;
-    Core::Id id() const;
-    QKeySequence activationSequence() const;
     Core::NavigationView createWidget();
 };
 
diff --git a/src/plugins/cppeditor/cpptypehierarchy.cpp b/src/plugins/cppeditor/cpptypehierarchy.cpp
index d7162a2da2e55fbb26d80c9c31f211aee8200c13..9a34aaf5e6fee6a84b2f3882dbb513f0f5c4548a 100644
--- a/src/plugins/cppeditor/cpptypehierarchy.cpp
+++ b/src/plugins/cppeditor/cpptypehierarchy.cpp
@@ -256,38 +256,17 @@ CppTypeHierarchyStackedWidget::~CppTypeHierarchyStackedWidget()
 
 // CppTypeHierarchyFactory
 CppTypeHierarchyFactory::CppTypeHierarchyFactory()
-{}
-
-CppTypeHierarchyFactory::~CppTypeHierarchyFactory()
-{}
-
-QString CppTypeHierarchyFactory::displayName() const
-{
-    return tr("Type Hierarchy");
-}
-
-int CppTypeHierarchyFactory::priority() const
-{
-    return Constants::TYPE_HIERARCHY_PRIORITY;
-}
-
-Core::Id CppTypeHierarchyFactory::id() const
-{
-    return Core::Id(Constants::TYPE_HIERARCHY_ID);
-}
-
-QKeySequence CppTypeHierarchyFactory::activationSequence() const
 {
-    return QKeySequence();
+    setDisplayName(tr("Type Hierarchy"));
+    setPriority(700);
+    setId(Constants::TYPE_HIERARCHY_ID);
 }
 
 Core::NavigationView CppTypeHierarchyFactory::createWidget()
 {
     CppTypeHierarchyStackedWidget *w = new CppTypeHierarchyStackedWidget;
     static_cast<CppTypeHierarchyWidget *>(w->currentWidget())->perform();
-    Core::NavigationView navigationView;
-    navigationView.widget = w;
-    return navigationView;
+    return Core::NavigationView(w);
 }
 
 } // namespace Internal
diff --git a/src/plugins/cppeditor/cpptypehierarchy.h b/src/plugins/cppeditor/cpptypehierarchy.h
index aaefdc543edd10cb96fc05fa63cff7d33fb5cee8..53514fe927468fdd9bad2af1180df36ab547289a 100644
--- a/src/plugins/cppeditor/cpptypehierarchy.h
+++ b/src/plugins/cppeditor/cpptypehierarchy.h
@@ -109,12 +109,7 @@ class CppTypeHierarchyFactory : public Core::INavigationWidgetFactory
     Q_OBJECT
 public:
     CppTypeHierarchyFactory();
-    virtual ~CppTypeHierarchyFactory();
 
-    virtual QString displayName() const;
-    virtual int priority() const;
-    virtual Core::Id id() const;
-    virtual QKeySequence activationSequence() const;
     virtual Core::NavigationView createWidget();
 };
 
diff --git a/src/plugins/projectexplorer/foldernavigationwidget.cpp b/src/plugins/projectexplorer/foldernavigationwidget.cpp
index 2f6dd7a9d97f12291b6bae3a0cdfc0e160a7a97d..b3e4bfc2aa8d603cbee6145de1c418c9b7feff2f 100644
--- a/src/plugins/projectexplorer/foldernavigationwidget.cpp
+++ b/src/plugins/projectexplorer/foldernavigationwidget.cpp
@@ -415,30 +415,10 @@ void FolderNavigationWidget::ensureCurrentIndex()
 // --------------------FolderNavigationWidgetFactory
 FolderNavigationWidgetFactory::FolderNavigationWidgetFactory()
 {
-}
-
-FolderNavigationWidgetFactory::~FolderNavigationWidgetFactory()
-{
-}
-
-QString FolderNavigationWidgetFactory::displayName() const
-{
-    return tr("File System");
-}
-
-int FolderNavigationWidgetFactory::priority() const
-{
-    return 400;
-}
-
-Core::Id FolderNavigationWidgetFactory::id() const
-{
-    return "File System";
-}
-
-QKeySequence FolderNavigationWidgetFactory::activationSequence() const
-{
-    return QKeySequence(Core::UseMacShortcuts ? tr("Meta+Y") : tr("Alt+Y"));
+    setDisplayName(tr("File System"));
+    setPriority(400);
+    setId("File System");
+    setActivationSequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+Y") : tr("Alt+Y")));
 }
 
 Core::NavigationView FolderNavigationWidgetFactory::createWidget()
diff --git a/src/plugins/projectexplorer/foldernavigationwidget.h b/src/plugins/projectexplorer/foldernavigationwidget.h
index ee465bb75c45c0b61856ac0bcc1c1b2805a963ab..a417cce371b5cfa2695bd3cde4ef9364c2be992a 100644
--- a/src/plugins/projectexplorer/foldernavigationwidget.h
+++ b/src/plugins/projectexplorer/foldernavigationwidget.h
@@ -99,12 +99,7 @@ class FolderNavigationWidgetFactory : public Core::INavigationWidgetFactory
     Q_OBJECT
 public:
     FolderNavigationWidgetFactory();
-    ~FolderNavigationWidgetFactory();
 
-    QString displayName() const;
-    int priority() const;
-    Core::Id id() const;
-    QKeySequence activationSequence() const;
     Core::NavigationView createWidget();
     void saveSettings(int position, QWidget *widget);
     void restoreSettings(int position, QWidget *widget);
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp
index 8600fd9fef4d78899d515ef17096006539429eb4..ba32273f3a46f1c61534e57a7d616d89d3da26a9 100644
--- a/src/plugins/projectexplorer/projecttreewidget.cpp
+++ b/src/plugins/projectexplorer/projecttreewidget.cpp
@@ -406,30 +406,10 @@ bool ProjectTreeWidget::projectFilter()
 
 ProjectTreeWidgetFactory::ProjectTreeWidgetFactory()
 {
-}
-
-ProjectTreeWidgetFactory::~ProjectTreeWidgetFactory()
-{
-}
-
-QString ProjectTreeWidgetFactory::displayName() const
-{
-    return tr("Projects");
-}
-
-int ProjectTreeWidgetFactory::priority() const
-{
-    return 100;
-}
-
-Id ProjectTreeWidgetFactory::id() const
-{
-    return "Projects";
-}
-
-QKeySequence ProjectTreeWidgetFactory::activationSequence() const
-{
-    return QKeySequence(UseMacShortcuts ? tr("Meta+X") : tr("Alt+X"));
+    setDisplayName(tr("Projects"));
+    setPriority(100);
+    setId("Projects");
+    setActivationSequence(QKeySequence(UseMacShortcuts ? tr("Meta+X") : tr("Alt+X")));
 }
 
 NavigationView ProjectTreeWidgetFactory::createWidget()
diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h
index 703660cb81cbdc7132db8572f180d6026f81bdec..c78131e2de842311d3aa56112026816c502b469e 100644
--- a/src/plugins/projectexplorer/projecttreewidget.h
+++ b/src/plugins/projectexplorer/projecttreewidget.h
@@ -107,11 +107,7 @@ class ProjectTreeWidgetFactory : public Core::INavigationWidgetFactory
     Q_OBJECT
 public:
     ProjectTreeWidgetFactory();
-    ~ProjectTreeWidgetFactory();
-    QString displayName() const;
-    int priority() const;
-    Core::Id id() const;
-    QKeySequence activationSequence() const;
+
     Core::NavigationView createWidget();
     void restoreSettings(int position, QWidget *widget);
     void saveSettings(int position, QWidget *widget);
diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp
index 3fc3d2b1dbedec37a946f42118163b8b4bd69db9..cbe749a1ea10f2cefb8c9528139166248c7f166e 100644
--- a/src/plugins/texteditor/outlinefactory.cpp
+++ b/src/plugins/texteditor/outlinefactory.cpp
@@ -175,6 +175,13 @@ void OutlineWidgetStack::updateCurrentEditor(Core::IEditor *editor)
     }
 }
 
+OutlineFactory::OutlineFactory()
+{
+    setDisplayName(tr("Outline"));
+    setId("Outline");
+    setPriority(600);
+}
+
 QList<IOutlineWidgetFactory*> OutlineFactory::widgetFactories() const
 {
     return m_factories;
@@ -185,26 +192,6 @@ void OutlineFactory::setWidgetFactories(QList<IOutlineWidgetFactory*> factories)
     m_factories = factories;
 }
 
-QString OutlineFactory::displayName() const
-{
-    return tr("Outline");
-}
-
-int OutlineFactory::priority() const
-{
-    return 600;
-}
-
-Core::Id OutlineFactory::id() const
-{
-    return "Outline";
-}
-
-QKeySequence OutlineFactory::activationSequence() const
-{
-    return QKeySequence();
-}
-
 Core::NavigationView OutlineFactory::createWidget()
 {
     Core::NavigationView n;
diff --git a/src/plugins/texteditor/outlinefactory.h b/src/plugins/texteditor/outlinefactory.h
index ea001520b390f84f09288c941d4d58adeb445ffd..5b0d6f97fcc842d1b89257ee87befd19f01602ed 100644
--- a/src/plugins/texteditor/outlinefactory.h
+++ b/src/plugins/texteditor/outlinefactory.h
@@ -78,16 +78,12 @@ class OutlineFactory : public Core::INavigationWidgetFactory
 {
     Q_OBJECT
 public:
-    OutlineFactory() {}
+    OutlineFactory();
 
     QList<IOutlineWidgetFactory*> widgetFactories() const;
     void setWidgetFactories(QList<IOutlineWidgetFactory*> factories);
 
     // from INavigationWidgetFactory
-    virtual QString displayName() const;
-    virtual int priority() const;
-    virtual Core::Id id() const;
-    virtual QKeySequence activationSequence() const;
     virtual Core::NavigationView createWidget();
     virtual void saveSettings(int position, QWidget *widget);
     virtual void restoreSettings(int position, QWidget *widget);