diff --git a/src/plugins/analyzerbase/analyzeroptionspage.cpp b/src/plugins/analyzerbase/analyzeroptionspage.cpp
index 50bdcb45d7d964ace10ddaa812ecd4e80fb396bb..f6b06d36454555f9c428a4207c967e33ed4bf118 100644
--- a/src/plugins/analyzerbase/analyzeroptionspage.cpp
+++ b/src/plugins/analyzerbase/analyzeroptionspage.cpp
@@ -40,10 +40,7 @@
 #include <coreplugin/icore.h>
 
 #include <QCoreApplication>
-#include <QLatin1String>
 #include <QDebug>
-
-#include <QIcon>
 #include <QWidget>
 
 using namespace Analyzer;
@@ -53,31 +50,11 @@ AnalyzerOptionsPage::AnalyzerOptionsPage(AbstractAnalyzerSubConfig *config, QObj
     Core::IOptionsPage(parent),
     m_config(config)
 {
-}
-
-QString AnalyzerOptionsPage::id() const
-{
-    return m_config->id();
-}
-
-QString AnalyzerOptionsPage::displayName() const
-{
-    return m_config->displayName();
-}
-
-QString AnalyzerOptionsPage::category() const
-{
-    return QLatin1String("T.Analyzer");
-}
-
-QString AnalyzerOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Analyzer", "Analyzer");
-}
-
-QIcon AnalyzerOptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(":/images/analyzer_category.png"));
+    setId(m_config->id());
+    setDisplayName(m_config->displayName());
+    setCategory(QLatin1String("T.Analyzer"));
+    setDisplayCategory(QCoreApplication::translate("Analyzer", "Analyzer"));
+    setCategoryIcon(QLatin1String(":/images/analyzer_category.png"));
 }
 
 QWidget *AnalyzerOptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/analyzerbase/analyzeroptionspage.h b/src/plugins/analyzerbase/analyzeroptionspage.h
index 47bf633f9f86f91fca237ff6dab43dde244dc326..ef409f14142bcaa984859a654b23f9ec51dc562b 100644
--- a/src/plugins/analyzerbase/analyzeroptionspage.h
+++ b/src/plugins/analyzerbase/analyzeroptionspage.h
@@ -50,13 +50,6 @@ class AnalyzerOptionsPage : public Core::IOptionsPage
 public:
     explicit AnalyzerOptionsPage(AbstractAnalyzerSubConfig *config, QObject *parent = 0);
 
-    // IOptionsPage implementation
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
diff --git a/src/plugins/android/androidsettingspage.cpp b/src/plugins/android/androidsettingspage.cpp
index d65846f6a9d883bfbe81b044cfafb0406a3d6e86..4921c761d130348ac5336c7a1bf9ad9b3bd258fc 100644
--- a/src/plugins/android/androidsettingspage.cpp
+++ b/src/plugins/android/androidsettingspage.cpp
@@ -33,11 +33,9 @@
 #include "androidsettingspage.h"
 
 #include "androidsettingswidget.h"
-
 #include "androidconstants.h"
 
 #include <QCoreApplication>
-#include <QIcon>
 
 namespace Android {
 namespace Internal {
@@ -45,35 +43,12 @@ namespace Internal {
 AndroidSettingsPage::AndroidSettingsPage(QObject *parent)
     : Core::IOptionsPage(parent)
 {
-}
-
-AndroidSettingsPage::~AndroidSettingsPage()
-{
-}
-
-QString AndroidSettingsPage::id() const
-{
-    return QLatin1String(Constants::ANDROID_SETTINGS_ID);
-}
-
-QString AndroidSettingsPage::displayName() const
-{
-    return tr("Android Configurations");
-}
-
-QString AndroidSettingsPage::category() const
-{
-    return QLatin1String(Constants::ANDROID_SETTINGS_CATEGORY);
-}
-
-QString AndroidSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Android", Constants::ANDROID_SETTINGS_TR_CATEGORY);
-}
-
-QIcon AndroidSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::ANDROID_SETTINGS_CATEGORY_ICON));
+    setId(QLatin1String(Constants::ANDROID_SETTINGS_ID));
+    setDisplayName(tr("Android Configurations"));
+    setCategory(QLatin1String(Constants::ANDROID_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Android",
+        Constants::ANDROID_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::ANDROID_SETTINGS_CATEGORY_ICON));
 }
 
 bool AndroidSettingsPage::matches(const QString &searchKeyWord) const
diff --git a/src/plugins/android/androidsettingspage.h b/src/plugins/android/androidsettingspage.h
index 6586cd9d9317d597fc882b443ce02d26d8b68b4e..f49fb771890c37e31c518e7cb64887ad0ac9ca5b 100644
--- a/src/plugins/android/androidsettingspage.h
+++ b/src/plugins/android/androidsettingspage.h
@@ -43,19 +43,14 @@ class AndroidSettingsWidget;
 class AndroidSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
+
 public:
     explicit AndroidSettingsPage(QObject *parent = 0);
-    ~AndroidSettingsPage();
 
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-    virtual bool matches(const QString &searchKeyWord) const;
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
+    bool matches(const QString &searchKeyWord) const;
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
 
 private:
     QString m_keywords;
diff --git a/src/plugins/bazaar/optionspage.cpp b/src/plugins/bazaar/optionspage.cpp
index 088116e5623ee623cf17d4825aa6108c41494b6a..cd00430b45b461d92759b5f4424065f6042909cd 100644
--- a/src/plugins/bazaar/optionspage.cpp
+++ b/src/plugins/bazaar/optionspage.cpp
@@ -95,16 +95,8 @@ QString OptionsPageWidget::searchKeywords() const
 
 OptionsPage::OptionsPage()
 {
-}
-
-QString OptionsPage::id() const
-{
-    return QLatin1String(VcsBase::Constants::VCS_ID_BAZAAR);
-}
-
-QString OptionsPage::displayName() const
-{
-    return tr("Bazaar");
+    setId(QLatin1String(VcsBase::Constants::VCS_ID_BAZAAR));
+    setDisplayName(tr("Bazaar"));
 }
 
 QWidget *OptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/bazaar/optionspage.h b/src/plugins/bazaar/optionspage.h
index be58d10e3963364a25d31a98b239919ed42c9b47..d5e17baf5cef0cb4a34611afbd40b758d37eb1b8 100644
--- a/src/plugins/bazaar/optionspage.h
+++ b/src/plugins/bazaar/optionspage.h
@@ -67,8 +67,6 @@ class OptionsPage : public VcsBase::VcsBaseOptionsPage
 
 public:
     OptionsPage();
-    QString id() const;
-    QString displayName() const;
 
     QWidget *createPage(QWidget *parent);
     void apply();
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
index ffb92c142d0be4f88a2e2e45bf525746cff41fa4..cc8fc8595873b51e5868d2aad1916b8aaa2d4ee2 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
@@ -246,6 +246,13 @@ QString CMakeManager::qtVersionForQMake(const QString &qmakePath)
 CMakeSettingsPage::CMakeSettingsPage()
     :  m_pathchooser(0)
 {
+    setId(QLatin1String("Z.CMake"));
+    setDisplayName(tr("CMake"));
+    setCategory(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("ProjectExplorer",
+       ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
+
     m_userCmake.process = 0;
     m_pathCmake.process = 0;
     m_userCmake.hasCodeBlocksMsvcGenerator = false;
@@ -347,32 +354,6 @@ QString CMakeSettingsPage::findCmakeExecutable() const
     return env.searchInPath(QLatin1String("cmake"));
 }
 
-QString CMakeSettingsPage::id() const
-{
-    return QLatin1String("Z.CMake");
-}
-
-QString CMakeSettingsPage::displayName() const
-{
-    return tr("CMake");
-}
-
-QString CMakeSettingsPage::category() const
-{
-    return QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY);
-}
-
-QString CMakeSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("ProjectExplorer",
-                                       ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon CMakeSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
-}
-
 QWidget *CMakeSettingsPage::createPage(QWidget *parent)
 {
     QWidget *outerWidget = new QWidget(parent);
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
index 67844782d4b93daa755b86b526f60ea3e7b0654c..c0c62dd1f318026716fa7cdff0ceea34dc65d2df 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
@@ -110,26 +110,24 @@ struct CMakeValidator
 class CMakeSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
+
 public:
     CMakeSettingsPage();
-    virtual ~CMakeSettingsPage();
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
+    ~CMakeSettingsPage();
 
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
 
     QString cmakeExecutable() const;
     void setCMakeExecutable(const QString &executable);
     bool isCMakeExecutableValid() const;
     bool hasCodeBlocksMsvcGenerator() const;
+
 private slots:
     void userCmakeFinished();
     void pathCmakeFinished();
+
 private:
     void cmakeFinished(CMakeValidator *cmakeValidator) const;
     void saveSettings() const;
diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.cpp b/src/plugins/coreplugin/actionmanager/commandmappings.cpp
index 0584963e1220a96e2d15205ee72b7568b7242c2c..9053ab5b267f79d27f743cd7fc91c9d12d94478e 100644
--- a/src/plugins/coreplugin/actionmanager/commandmappings.cpp
+++ b/src/plugins/coreplugin/actionmanager/commandmappings.cpp
@@ -62,10 +62,6 @@ CommandMappings::CommandMappings(QObject *parent)
 {
 }
 
-CommandMappings::~CommandMappings()
-{
-}
-
 // IOptionsPage
 
 QWidget *CommandMappings::createPage(QWidget *parent)
diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.h b/src/plugins/coreplugin/actionmanager/commandmappings.h
index 91b89fdc950b8e55a71f15073fec224590365d6c..e62ccfef26698153127ace563e2dcd3eed5f82dd 100644
--- a/src/plugins/coreplugin/actionmanager/commandmappings.h
+++ b/src/plugins/coreplugin/actionmanager/commandmappings.h
@@ -45,16 +45,7 @@ QT_END_NAMESPACE
 
 namespace Core {
 
-class Command;
-
-namespace Internal {
-
-namespace Ui { class CommandMappings; }
-
-class ActionManagerPrivate;
-class MainWindow;
-
-}
+namespace Internal {  namespace Ui { class CommandMappings; }  }
 
 class CORE_EXPORT CommandMappings : public Core::IOptionsPage
 {
@@ -62,7 +53,6 @@ class CORE_EXPORT CommandMappings : public Core::IOptionsPage
 
 public:
     CommandMappings(QObject *parent = 0);
-    ~CommandMappings();
 
 protected slots:
     void commandChanged(QTreeWidgetItem *current);
diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.h b/src/plugins/coreplugin/dialogs/ioptionspage.h
index 0bf1d8a9b29e210d214f9d8483e30efeed3ec1b3..38abd2c1a3d626bb18cdf26b96d4cfb7563ace16 100644
--- a/src/plugins/coreplugin/dialogs/ioptionspage.h
+++ b/src/plugins/coreplugin/dialogs/ioptionspage.h
@@ -35,13 +35,9 @@
 
 #include <coreplugin/core_global.h>
 
+#include <QIcon>
 #include <QObject>
 
-QT_BEGIN_NAMESPACE
-class QIcon;
-class QWidget;
-QT_END_NAMESPACE
-
 namespace Core {
 
 class CORE_EXPORT IOptionsPage : public QObject
@@ -50,18 +46,30 @@ class CORE_EXPORT IOptionsPage : public QObject
 
 public:
     IOptionsPage(QObject *parent = 0) : QObject(parent) {}
-    virtual ~IOptionsPage() {}
 
-    virtual QString id() const = 0;
-    virtual QString displayName() const = 0;
-    virtual QString category() const = 0;
-    virtual QString displayCategory() const = 0;
-    virtual QIcon categoryIcon() const = 0;
-    virtual bool matches(const QString & /* searchKeyWord*/) const { return false; }
+    QString id() const { return m_id; }
+    QString displayName() const { return m_displayName; }
+    QString category() const { return m_category; }
+    QString displayCategory() const { return m_displayCategory; }
+    QIcon categoryIcon() const { return QIcon(m_categoryIcon); }
 
+    virtual bool matches(const QString & /* searchKeyWord*/) const { return false; }
     virtual QWidget *createPage(QWidget *parent) = 0;
     virtual void apply() = 0;
     virtual void finish() = 0;
+
+protected:
+    void setId(const QString &id) { m_id = id; }
+    void setDisplayName(const QString &displayName) { m_displayName = displayName; }
+    void setCategory(const QString &category) { m_category = category; }
+    void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; }
+    void setCategoryIcon(const QString &categoryIcon) { m_categoryIcon = categoryIcon; }
+
+    QString m_id;
+    QString m_displayName;
+    QString m_category;
+    QString m_displayCategory;
+    QString m_categoryIcon;
 };
 
 /*
@@ -78,13 +86,21 @@ class CORE_EXPORT IOptionsPageProvider : public QObject
 
 public:
     IOptionsPageProvider(QObject *parent = 0) : QObject(parent) {}
-    virtual ~IOptionsPageProvider() {}
 
-    virtual QString category() const = 0;
-    virtual QString displayCategory() const = 0;
-    virtual QIcon categoryIcon() const = 0;
+    QString category() const { return m_category; }
+    QString displayCategory() const { return m_displayCategory; }
+    QIcon categoryIcon() const { return QIcon(m_categoryIcon); }
 
     virtual QList<IOptionsPage *> pages() const = 0;
+
+protected:
+    void setCategory(const QString &category) { m_category = category; }
+    void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; }
+    void setCategoryIcon(const QString &categoryIcon) { m_categoryIcon = categoryIcon; }
+
+    QString m_category;
+    QString m_displayCategory;
+    QString m_categoryIcon;
 };
 
 } // namespace Core
diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
index c55e5d862f0931be0ce9eb866d016157b2b944e3..cd1429ba7d77c122bfa49bee1c0f9de0bea84db1 100644
--- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
+++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
@@ -63,38 +63,12 @@ ShortcutSettings::ShortcutSettings(QObject *parent)
 {
     Core::Internal::ActionManagerPrivate *am = ActionManagerPrivate::instance();
     connect(am, SIGNAL(commandListChanged()), this, SLOT(initialize()));
-}
-
-ShortcutSettings::~ShortcutSettings()
-{
-}
-
-// IOptionsPage
 
-
-QString ShortcutSettings::id() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_ID_SHORTCUTS);
-}
-
-QString ShortcutSettings::displayName() const
-{
-    return tr("Keyboard");
-}
-
-QString ShortcutSettings::category() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE);
-}
-
-QString ShortcutSettings::displayCategory() const
-{
-    return QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE);
-}
-
-QIcon ShortcutSettings::categoryIcon() const
-{
-    return QIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
+    setId(QLatin1String(Core::Constants::SETTINGS_ID_SHORTCUTS));
+    setDisplayName(tr("Keyboard"));
+    setCategory(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE));
+    setDisplayCategory(QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE));
+    setCategoryIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
 }
 
 QWidget *ShortcutSettings::createPage(QWidget *parent)
diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.h b/src/plugins/coreplugin/dialogs/shortcutsettings.h
index 38412f6c0896c795519a1aec42e18d9c046ebf3a..945904d175e7448505526d562ec9c90e99a61f13 100644
--- a/src/plugins/coreplugin/dialogs/shortcutsettings.h
+++ b/src/plugins/coreplugin/dialogs/shortcutsettings.h
@@ -64,14 +64,6 @@ class ShortcutSettings : public Core::CommandMappings
 
 public:
     ShortcutSettings(QObject *parent = 0);
-    ~ShortcutSettings();
-
-    // IOptionsPage
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
 
     QWidget *createPage(QWidget *parent);
     void apply();
diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp
index c75caa48e91c2291ace5a2362488837e3673763a..47542e0bf29aed8205039b319b9aa7233eaf96ef 100644
--- a/src/plugins/coreplugin/generalsettings.cpp
+++ b/src/plugins/coreplugin/generalsettings.cpp
@@ -58,31 +58,11 @@ using namespace Core::Internal;
 GeneralSettings::GeneralSettings():
     m_page(0), m_dialog(0)
 {
-}
-
-QString GeneralSettings::id() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_ID_ENVIRONMENT);
-}
-
-QString GeneralSettings::displayName() const
-{
-    return tr("General");
-}
-
-QString GeneralSettings::category() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE);
-}
-
-QString GeneralSettings::displayCategory() const
-{
-    return QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE);
-}
-
-QIcon GeneralSettings::categoryIcon() const
-{
-    return QIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
+    setId(QLatin1String(Core::Constants::SETTINGS_ID_ENVIRONMENT));
+    setDisplayName(tr("General"));
+    setCategory(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE));
+    setDisplayCategory(QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE));
+    setCategoryIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
 }
 
 static bool hasQmFilesForLocale(const QString &locale, const QString &creatorTrPath)
diff --git a/src/plugins/coreplugin/generalsettings.h b/src/plugins/coreplugin/generalsettings.h
index e5b5220d74a0ac27cccde2a3a0c8dc65ca453690..8b20889f286b2361f58a1d63366b9dcfee0402ff 100644
--- a/src/plugins/coreplugin/generalsettings.h
+++ b/src/plugins/coreplugin/generalsettings.h
@@ -54,11 +54,6 @@ class GeneralSettings : public IOptionsPage
 public:
     GeneralSettings();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
     QWidget* createPage(QWidget *parent);
     void apply();
     void finish();
diff --git a/src/plugins/coreplugin/mimetypesettings.cpp b/src/plugins/coreplugin/mimetypesettings.cpp
index 5d7294b4d507d53f83c4182a9085b89b088da97e..10805058bc44017e183d9348993bdc19a5c72c93 100644
--- a/src/plugins/coreplugin/mimetypesettings.cpp
+++ b/src/plugins/coreplugin/mimetypesettings.cpp
@@ -43,14 +43,11 @@
 #include <extensionsystem/pluginmanager.h>
 
 #include <QCoreApplication>
-#include <QLatin1String>
 #include <QStringList>
-#include <QVector>
 #include <QSet>
 #include <QScopedPointer>
 #include <QAbstractTableModel>
 #include <QHash>
-#include <QIcon>
 #include <QTableWidgetItem>
 #include <QMessageBox>
 #include <QtAlgorithms>
@@ -548,36 +545,18 @@ void MimeTypeSettingsPrivate::resetMimeTypes()
 MimeTypeSettings::MimeTypeSettings(QObject *parent)
     : IOptionsPage(parent)
     , d(new MimeTypeSettingsPrivate)
-{}
-
-MimeTypeSettings::~MimeTypeSettings()
-{
-    delete d;
-}
-
-QString MimeTypeSettings::id() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_ID_MIMETYPES);
-}
-
-QString MimeTypeSettings::displayName() const
 {
-    return tr("MIME Types");
+    setId(QLatin1String(Core::Constants::SETTINGS_ID_MIMETYPES));
+    setDisplayName(tr("MIME Types"));
+    setCategory(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE));
+    setDisplayCategory(QCoreApplication::translate("Core",
+        Core::Constants::SETTINGS_TR_CATEGORY_CORE));
+    setCategoryIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
 }
 
-QString MimeTypeSettings::category() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE);
-}
-
-QString MimeTypeSettings::displayCategory() const
-{
-    return QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE);
-}
-
-QIcon MimeTypeSettings::categoryIcon() const
+MimeTypeSettings::~MimeTypeSettings()
 {
-    return QIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
+    delete d;
 }
 
 bool MimeTypeSettings::matches(const QString &s) const
diff --git a/src/plugins/coreplugin/mimetypesettings.h b/src/plugins/coreplugin/mimetypesettings.h
index e19b11fdf5ce6e1a71178d027c268fb3ccc2964f..3e4df0037acfe056785423cefa05226f4638d7e7 100644
--- a/src/plugins/coreplugin/mimetypesettings.h
+++ b/src/plugins/coreplugin/mimetypesettings.h
@@ -48,13 +48,7 @@ public:
     MimeTypeSettings(QObject *parent = 0);
     virtual ~MimeTypeSettings();
 
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
     virtual bool matches(const QString &s) const;
-
     virtual QWidget *createPage(QWidget *parent);
     virtual void apply();
     virtual void finish();
diff --git a/src/plugins/coreplugin/toolsettings.cpp b/src/plugins/coreplugin/toolsettings.cpp
index b8baf32947d3cdaabe555a429522135ba111a4a6..198bb3ca4b47d09dff1888fa06bf36eb34dbc637 100644
--- a/src/plugins/coreplugin/toolsettings.cpp
+++ b/src/plugins/coreplugin/toolsettings.cpp
@@ -53,39 +53,11 @@ using namespace Core::Internal;
 ToolSettings::ToolSettings(QObject *parent) :
     IOptionsPage(parent)
 {
-}
-
-ToolSettings::~ToolSettings()
-{
-}
-
-QString ToolSettings::id() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_ID_TOOLS);
-}
-
-
-QString ToolSettings::displayName() const
-{
-    return tr("External Tools");
-}
-
-
-QString ToolSettings::category() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE);
-}
-
-
-QString ToolSettings::displayCategory() const
-{
-    return QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE);
-}
-
-
-QIcon ToolSettings::categoryIcon() const
-{
-    return QIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
+    setId(QLatin1String(Core::Constants::SETTINGS_ID_TOOLS));
+    setDisplayName(tr("External Tools"));
+    setCategory(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE));
+    setDisplayCategory(QCoreApplication::translate("Core", Constants::SETTINGS_TR_CATEGORY_CORE));
+    setCategoryIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
 }
 
 
diff --git a/src/plugins/coreplugin/toolsettings.h b/src/plugins/coreplugin/toolsettings.h
index aa5d79e01c01b422ccaaa9c7af7070cbaacb8e45..13c7b472fe64fca43880779331cb2d729ceecb09 100644
--- a/src/plugins/coreplugin/toolsettings.h
+++ b/src/plugins/coreplugin/toolsettings.h
@@ -45,17 +45,11 @@ class ExternalToolConfig;
 class ToolSettings : public IOptionsPage
 {
     Q_OBJECT
+
 public:
     explicit ToolSettings(QObject *parent = 0);
-    ~ToolSettings();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
     bool matches(const QString & searchKeyWord) const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
diff --git a/src/plugins/cpaster/codepastersettings.cpp b/src/plugins/cpaster/codepastersettings.cpp
index 2ae6d1fbc1422ab341df33f58b43e0e986f8b8f9..f93cd8da653cc6d17bfe4ecddb51ec13c45c057e 100644
--- a/src/plugins/cpaster/codepastersettings.cpp
+++ b/src/plugins/cpaster/codepastersettings.cpp
@@ -54,6 +54,12 @@ namespace CodePaster {
 
 CodePasterSettingsPage::CodePasterSettingsPage()
 {
+    setId(QLatin1String("C.CodePaster"));
+    setDisplayName(tr("CodePaster"));
+    setCategory(QLatin1String(Constants::CPASTER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("CodePaster",
+        Constants::CPASTER_SETTINGS_TR_CATEGORY));
+
     m_settings = Core::ICore::settings();
     if (m_settings) {
         const QString keyRoot = QLatin1String(settingsGroupC) + QLatin1Char('/');
@@ -61,31 +67,6 @@ CodePasterSettingsPage::CodePasterSettingsPage()
     }
 }
 
-QString CodePasterSettingsPage::id() const
-{
-    return QLatin1String("C.CodePaster");
-}
-
-QString CodePasterSettingsPage::displayName() const
-{
-    return tr("CodePaster");
-}
-
-QString CodePasterSettingsPage::category() const
-{
-    return QLatin1String(Constants::CPASTER_SETTINGS_CATEGORY);
-}
-
-QString CodePasterSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("CodePaster", Constants::CPASTER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon CodePasterSettingsPage::categoryIcon() const
-{
-    return QIcon();
-}
-
 QWidget *CodePasterSettingsPage::createPage(QWidget *parent)
 {
     QWidget *outerWidget = new QWidget(parent);
diff --git a/src/plugins/cpaster/codepastersettings.h b/src/plugins/cpaster/codepastersettings.h
index e4138e39fd666af343341b517c730d758c82b08c..342258e422cf3111cdcd4b8e8b4c2c57751191a6 100644
--- a/src/plugins/cpaster/codepastersettings.h
+++ b/src/plugins/cpaster/codepastersettings.h
@@ -48,17 +48,12 @@ class CodePasterSettingsPage : public Core::IOptionsPage
 public:
     CodePasterSettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
 
     QString hostName() const;
+
 public slots:
     void serverChanged(const QString &host);
 
diff --git a/src/plugins/cpaster/fileshareprotocolsettingspage.cpp b/src/plugins/cpaster/fileshareprotocolsettingspage.cpp
index 028ef9387fab3b4de6237a31eec53cf7cde2460c..9125669c9217e68dbeb89dde53edcbffabe590bf 100644
--- a/src/plugins/cpaster/fileshareprotocolsettingspage.cpp
+++ b/src/plugins/cpaster/fileshareprotocolsettingspage.cpp
@@ -101,31 +101,10 @@ FileShareProtocolSettingsPage::FileShareProtocolSettingsPage(const QSharedPointe
                                                              QObject *parent) :
     Core::IOptionsPage(parent), m_settings(s), m_widget(0)
 {
-}
-
-QString FileShareProtocolSettingsPage::id() const
-{
-    return QLatin1String("X.FileSharePaster");
-}
-
-QString FileShareProtocolSettingsPage::displayName() const
-{
-    return tr("Fileshare");
-}
-
-QString FileShareProtocolSettingsPage::category() const
-{
-    return QLatin1String(Constants::CPASTER_SETTINGS_CATEGORY);
-}
-
-QString FileShareProtocolSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("CodePaster", Constants::CPASTER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon FileShareProtocolSettingsPage::categoryIcon() const
-{
-    return QIcon();
+    setId(QLatin1String("X.FileSharePaster"));
+    setDisplayName(tr("Fileshare"));
+    setCategory(QLatin1String(Constants::CPASTER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("CodePaster", Constants::CPASTER_SETTINGS_TR_CATEGORY));
 }
 
 QWidget *FileShareProtocolSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/cpaster/fileshareprotocolsettingspage.h b/src/plugins/cpaster/fileshareprotocolsettingspage.h
index cccd85acb630f494b7b272490c35a98beb326c15..c34fcbe70f2b91967630b3c35788745a38b20490 100644
--- a/src/plugins/cpaster/fileshareprotocolsettingspage.h
+++ b/src/plugins/cpaster/fileshareprotocolsettingspage.h
@@ -72,19 +72,15 @@ public:
 private:
     Internal::Ui::FileShareProtocolSettingsWidget m_ui;
 };
+
 class FileShareProtocolSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
+
 public:
     explicit FileShareProtocolSettingsPage(const QSharedPointer<FileShareProtocolSettings> &s,
                                            QObject *parent = 0);
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
diff --git a/src/plugins/cpaster/settingspage.cpp b/src/plugins/cpaster/settingspage.cpp
index d20ad35a7910daf767d0d27223d6535fe016d2fc..bb105d978f1556271d1af317518fb6d74ccdc041 100644
--- a/src/plugins/cpaster/settingspage.cpp
+++ b/src/plugins/cpaster/settingspage.cpp
@@ -81,37 +81,18 @@ Settings SettingsWidget::settings()
 SettingsPage::SettingsPage(const QSharedPointer<Settings> &settings) :
     m_settings(settings), m_widget(0)
 {
+    setId(QLatin1String("A.General"));
+    setDisplayName(tr("General"));
+    setCategory(QLatin1String(Constants::CPASTER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("CodePaster",
+        Constants::CPASTER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::SETTINGS_CATEGORY_CPASTER_ICON));
 }
 
 SettingsPage::~SettingsPage()
 {
 }
 
-QString SettingsPage::id() const
-{
-    return QLatin1String("A.General");
-}
-
-QString SettingsPage::displayName() const
-{
-    return tr("General");
-}
-
-QString SettingsPage::category() const
-{
-    return QLatin1String(Constants::CPASTER_SETTINGS_CATEGORY);
-}
-
-QString SettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("CodePaster", Constants::CPASTER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon SettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::SETTINGS_CATEGORY_CPASTER_ICON));
-}
-
 QWidget *SettingsPage::createPage(QWidget *parent)
 {
     m_widget = new SettingsWidget(m_protocols, parent);
diff --git a/src/plugins/cpaster/settingspage.h b/src/plugins/cpaster/settingspage.h
index 7746056f7b91740cd52ceb4a6a6eb457917064ea..1820b6fff8031330cbedaedf0155239d7de32cb2 100644
--- a/src/plugins/cpaster/settingspage.h
+++ b/src/plugins/cpaster/settingspage.h
@@ -67,18 +67,12 @@ class SettingsPage : public Core::IOptionsPage
 
 public:
     explicit SettingsPage(const QSharedPointer<Settings> &settings);
-    virtual ~SettingsPage();
-
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
+    ~SettingsPage();
 
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
     void addProtocol(const QString& name);
 
diff --git a/src/plugins/cpptools/completionsettingspage.cpp b/src/plugins/cpptools/completionsettingspage.cpp
index ca029a0448cc6d23afb3419142949858bd5da394..87782338dfb8fae9a168593c73f561f682dee281 100644
--- a/src/plugins/cpptools/completionsettingspage.cpp
+++ b/src/plugins/cpptools/completionsettingspage.cpp
@@ -51,6 +51,9 @@ CompletionSettingsPage::CompletionSettingsPage(QObject *parent)
 {
     if (QSettings *s = Core::ICore::settings())
         m_commentsSettings.fromSettings(QLatin1String(CPPTOOLS_SETTINGSGROUP), s);
+
+    setId(QLatin1String("P.Completion"));
+    setDisplayName(tr("Completion"));
 }
 
 CompletionSettingsPage::~CompletionSettingsPage()
@@ -58,16 +61,6 @@ CompletionSettingsPage::~CompletionSettingsPage()
     delete m_page;
 }
 
-QString CompletionSettingsPage::id() const
-{
-    return QLatin1String("P.Completion");
-}
-
-QString CompletionSettingsPage::displayName() const
-{
-    return tr("Completion");
-}
-
 QWidget *CompletionSettingsPage::createPage(QWidget *parent)
 {
     QWidget *w = new QWidget(parent);
diff --git a/src/plugins/cpptools/completionsettingspage.h b/src/plugins/cpptools/completionsettingspage.h
index bf4917e8de59218944c8d71e3d52868868f38a10..56f1b45b2dde76eb289508656df0cf3898d52a96 100644
--- a/src/plugins/cpptools/completionsettingspage.h
+++ b/src/plugins/cpptools/completionsettingspage.h
@@ -55,13 +55,10 @@ public:
     CompletionSettingsPage(QObject *parent);
     ~CompletionSettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
     const CommentsSettings &commentsSettings() const;
 
diff --git a/src/plugins/cpptools/cppcodestylesettingspage.cpp b/src/plugins/cpptools/cppcodestylesettingspage.cpp
index 10b6297b8bae5578707af00d319b5530856beb96..d28c4cd53ea3f4a70c1e8baca70e92e3e4a630ad 100644
--- a/src/plugins/cpptools/cppcodestylesettingspage.cpp
+++ b/src/plugins/cpptools/cppcodestylesettingspage.cpp
@@ -479,40 +479,15 @@ void CppCodeStylePreferencesWidget::setVisualizeWhitespace(bool on)
 
 // ------------------ CppCodeStyleSettingsPage
 
-CppCodeStyleSettingsPage::CppCodeStyleSettingsPage(
-        QWidget *parent) :
+CppCodeStyleSettingsPage::CppCodeStyleSettingsPage(QWidget *parent) :
     Core::IOptionsPage(parent),
     m_pageCppCodeStylePreferences(0)
 {
-}
-
-CppCodeStyleSettingsPage::~CppCodeStyleSettingsPage()
-{
-}
-
-QString CppCodeStyleSettingsPage::id() const
-{
-    return QLatin1String(Constants::CPP_CODE_STYLE_SETTINGS_ID);
-}
-
-QString CppCodeStyleSettingsPage::displayName() const
-{
-    return QCoreApplication::translate("CppTools", Constants::CPP_CODE_STYLE_SETTINGS_NAME);
-}
-
-QString CppCodeStyleSettingsPage::category() const
-{
-    return QLatin1String(Constants::CPP_SETTINGS_CATEGORY);
-}
-
-QString CppCodeStyleSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("CppTools", Constants::CPP_SETTINGS_TR_CATEGORY);
-}
-
-QIcon CppCodeStyleSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::SETTINGS_CATEGORY_CPP_ICON));
+    setId(QLatin1String(Constants::CPP_CODE_STYLE_SETTINGS_ID));
+    setDisplayName(QCoreApplication::translate("CppTools", Constants::CPP_CODE_STYLE_SETTINGS_NAME));
+    setCategory(QLatin1String(Constants::CPP_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("CppTools", Constants::CPP_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::SETTINGS_CATEGORY_CPP_ICON));
 }
 
 QWidget *CppCodeStyleSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/cpptools/cppcodestylesettingspage.h b/src/plugins/cpptools/cppcodestylesettingspage.h
index c40fbe9ed68d7375bca89981d4b3c44f2c425b13..03bbd20ee30db8d1a41e73e024c6d988c67aa93a 100644
--- a/src/plugins/cpptools/cppcodestylesettingspage.h
+++ b/src/plugins/cpptools/cppcodestylesettingspage.h
@@ -100,18 +100,11 @@ class CppCodeStyleSettingsPage : public Core::IOptionsPage
 
 public:
     explicit CppCodeStyleSettingsPage(QWidget *parent = 0);
-    ~CppCodeStyleSettingsPage();
-
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish() { }
-    virtual bool matches(const QString &) const;
+
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish() { }
+    bool matches(const QString &) const;
 
 private:
     QString m_searchKeywords;
diff --git a/src/plugins/cpptools/cppfilesettingspage.cpp b/src/plugins/cpptools/cppfilesettingspage.cpp
index 6ab00042a6f224a5ef195a95ec98dd1de1a75e25..79ec4bba716b5e5d0727df6bef4025d3be6447b8 100644
--- a/src/plugins/cpptools/cppfilesettingspage.cpp
+++ b/src/plugins/cpptools/cppfilesettingspage.cpp
@@ -325,35 +325,11 @@ CppFileSettingsPage::CppFileSettingsPage(QSharedPointer<CppFileSettings> &settin
     Core::IOptionsPage(parent),
     m_settings(settings)
 {
-}
-
-CppFileSettingsPage::~CppFileSettingsPage()
-{
-}
-
-QString CppFileSettingsPage::id() const
-{
-    return QLatin1String(Constants::CPP_FILE_SETTINGS_ID);
-}
-
-QString CppFileSettingsPage::displayName() const
-{
-    return QCoreApplication::translate("CppTools", Constants::CPP_FILE_SETTINGS_NAME);
-}
-
-QString CppFileSettingsPage::category() const
-{
-    return QLatin1String(Constants::CPP_SETTINGS_CATEGORY);
-}
-
-QString CppFileSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("CppTools", Constants::CPP_SETTINGS_TR_CATEGORY);
-}
-
-QIcon CppFileSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::SETTINGS_CATEGORY_CPP_ICON));
+    setId(QLatin1String(Constants::CPP_FILE_SETTINGS_ID));
+    setDisplayName(QCoreApplication::translate("CppTools", Constants::CPP_FILE_SETTINGS_NAME));
+    setCategory(QLatin1String(Constants::CPP_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("CppTools", Constants::CPP_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::SETTINGS_CATEGORY_CPP_ICON));
 }
 
 QWidget *CppFileSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/cpptools/cppfilesettingspage.h b/src/plugins/cpptools/cppfilesettingspage.h
index 6fc9a4019b818f727aea9637e1250968d3301230..269083041e0bad9dc54b4fc4579779275ffc9603 100644
--- a/src/plugins/cpptools/cppfilesettingspage.h
+++ b/src/plugins/cpptools/cppfilesettingspage.h
@@ -98,18 +98,11 @@ class CppFileSettingsPage : public Core::IOptionsPage
 public:
     explicit CppFileSettingsPage(QSharedPointer<CppFileSettings> &settings,
                                  QObject *parent = 0);
-    virtual ~CppFileSettingsPage();
-
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish() { }
-    virtual bool matches(const QString &) const;
+
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish() { }
+    bool matches(const QString &) const;
 
 private:
     const QSharedPointer<CppFileSettings> m_settings;
diff --git a/src/plugins/cvs/settingspage.cpp b/src/plugins/cvs/settingspage.cpp
index 8cfadc2fc789aa84c5cfce8690fcd74488c99bb0..9bf0c6a00bb76eb5ce04df135ef33a164010d2f0 100644
--- a/src/plugins/cvs/settingspage.cpp
+++ b/src/plugins/cvs/settingspage.cpp
@@ -94,14 +94,10 @@ QString SettingsPageWidget::searchKeywords() const
     return rc;
 }
 
-QString SettingsPage::id() const
+SettingsPage::SettingsPage()
 {
-    return QLatin1String(VcsBase::Constants::VCS_ID_CVS);
-}
-
-QString SettingsPage::displayName() const
-{
-    return tr("CVS");
+    setId(QLatin1String(VcsBase::Constants::VCS_ID_CVS));
+    setDisplayName(tr("CVS"));
 }
 
 QWidget *SettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/cvs/settingspage.h b/src/plugins/cvs/settingspage.h
index 36ffe2751f3910112c3b43ed7a9a68f722287c2a..775e9711084efb65063b0b8dac65afffad211a79 100644
--- a/src/plugins/cvs/settingspage.h
+++ b/src/plugins/cvs/settingspage.h
@@ -72,10 +72,7 @@ class SettingsPage : public VcsBase::VcsBaseOptionsPage
     Q_OBJECT
 
 public:
-    SettingsPage() {}
-
-    QString id() const;
-    QString displayName() const;
+    SettingsPage();
 
     QWidget *createPage(QWidget *parent);
     void apply();
diff --git a/src/plugins/debugger/cdb/cdboptionspage.cpp b/src/plugins/debugger/cdb/cdboptionspage.cpp
index 703ce9571756ba611693b9acf5b1649f9fe058df..5b9ca2557309234e5bb3dedb3c445dc8004d07b8 100644
--- a/src/plugins/debugger/cdb/cdboptionspage.cpp
+++ b/src/plugins/debugger/cdb/cdboptionspage.cpp
@@ -230,6 +230,13 @@ CdbOptionsPage::CdbOptionsPage() :
 {
     CdbOptionsPage::m_instance = this;
     m_options->fromSettings(Core::ICore::settings());
+
+    setId(QLatin1String("F.Cda")); // before old CDB
+    setDisplayName(tr("CDB"));
+    setCategory(QLatin1String(Debugger::Constants::DEBUGGER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Debugger",
+        Constants::DEBUGGER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
 }
 
 CdbOptionsPage::~CdbOptionsPage()
@@ -237,31 +244,6 @@ CdbOptionsPage::~CdbOptionsPage()
     CdbOptionsPage::m_instance = 0;
 }
 
-QString CdbOptionsPage::settingsId()
-{
-    return QLatin1String("F.Cda"); // before old CDB
-}
-
-QString CdbOptionsPage::displayName() const
-{
-    return tr("CDB");
-}
-
-QString CdbOptionsPage::category() const
-{
-    return QLatin1String(Debugger::Constants::DEBUGGER_SETTINGS_CATEGORY);
-}
-
-QString CdbOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Debugger", Debugger::Constants::DEBUGGER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon CdbOptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Debugger::Constants::DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
-}
-
 QWidget *CdbOptionsPage::createPage(QWidget *parent)
 {
     m_widget = new CdbOptionsPageWidget(parent);
diff --git a/src/plugins/debugger/cdb/cdboptionspage.h b/src/plugins/debugger/cdb/cdboptionspage.h
index 0f4bf4b2290d900bfbf954f7f183c9424cbd7544..ddb70d841ca2732596b39ff48173b55062336298 100644
--- a/src/plugins/debugger/cdb/cdboptionspage.h
+++ b/src/plugins/debugger/cdb/cdboptionspage.h
@@ -102,18 +102,10 @@ public:
     static CdbOptionsPage *instance();
 
     // IOptionsPage
-    virtual QString id() const { return settingsId(); }
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
-    virtual bool matches(const QString &) const;
-
-    static QString settingsId();
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
+    bool matches(const QString &) const;
 
     QSharedPointer<CdbOptions> options() const { return m_options; }
 
diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp
index ce3460b3b6f535bd20fb4236ecc66967801052a2..5292673682a59c03c9ce5dfb07622875975a3c89 100644
--- a/src/plugins/debugger/commonoptionspage.cpp
+++ b/src/plugins/debugger/commonoptionspage.cpp
@@ -152,36 +152,17 @@ void CommonOptionsPageWidget::setGlobalOptions(const GlobalDebuggerOptions &go)
 CommonOptionsPage::CommonOptionsPage(const QSharedPointer<GlobalDebuggerOptions> &go) :
     m_options(go)
 {
+    setId(QLatin1String(DEBUGGER_COMMON_SETTINGS_ID));
+    setDisplayName(QCoreApplication::translate("Debugger", "General"));
+    setCategory(QLatin1String(DEBUGGER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Debugger", DEBUGGER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
 }
 
 CommonOptionsPage::~CommonOptionsPage()
 {
 }
 
-QString CommonOptionsPage::id() const
-{
-    return _(DEBUGGER_COMMON_SETTINGS_ID);
-}
-
-QString CommonOptionsPage::displayName() const
-{
-    return QCoreApplication::translate("Debugger", "General");
-}
-
-QString CommonOptionsPage::category() const
-{
-    return _(DEBUGGER_SETTINGS_CATEGORY);
-}
-
-QString CommonOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Debugger", DEBUGGER_SETTINGS_TR_CATEGORY);}
-
-QIcon CommonOptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
-}
-
 void CommonOptionsPage::apply()
 {
     QTC_ASSERT(!m_widget.isNull() && !m_group.isNull(), return);
@@ -220,34 +201,18 @@ bool CommonOptionsPage::matches(const QString &s) const
 
 ///////////////////////////////////////////////////////////////////////
 //
-// DebuggingHelperOptionPage
+// LocalsAndExpressionsOptionsPage
 //
 ///////////////////////////////////////////////////////////////////////
 
-QString LocalsAndExpressionsOptionsPage::id() const
-{
-    return _("Z.LocalsAndExpressions");
-}
-
-QString LocalsAndExpressionsOptionsPage::displayName() const
+LocalsAndExpressionsOptionsPage::LocalsAndExpressionsOptionsPage()
 {
+    setId(QLatin1String("Z.LocalsAndExpressions"));
     //: '&&' will appear as one (one is marking keyboard shortcut)
-    return QCoreApplication::translate("Debugger", "Locals && Expressions");
-}
-
-QString LocalsAndExpressionsOptionsPage::category() const
-{
-    return _(DEBUGGER_SETTINGS_CATEGORY);
-}
-
-QString LocalsAndExpressionsOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Debugger", DEBUGGER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon LocalsAndExpressionsOptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
+    setDisplayName(QCoreApplication::translate("Debugger", "Locals && Expressions"));
+    setCategory(QLatin1String(DEBUGGER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Debugger", DEBUGGER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
 }
 
 void LocalsAndExpressionsOptionsPage::apply()
diff --git a/src/plugins/debugger/commonoptionspage.h b/src/plugins/debugger/commonoptionspage.h
index 6085364e8c214258bc3f519ce749cb477f9327a3..29c580cf72e227d5ce8971ada8d1273bab3c9fb4 100644
--- a/src/plugins/debugger/commonoptionspage.h
+++ b/src/plugins/debugger/commonoptionspage.h
@@ -73,14 +73,9 @@ class CommonOptionsPage : public Core::IOptionsPage
 
 public:
     explicit CommonOptionsPage(const QSharedPointer<GlobalDebuggerOptions> &go);
-    virtual ~CommonOptionsPage();
+    ~CommonOptionsPage();
 
     // IOptionsPage
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
@@ -103,15 +98,9 @@ private:
 class LocalsAndExpressionsOptionsPage : public Core::IOptionsPage
 {
 public:
-    LocalsAndExpressionsOptionsPage() {}
+    LocalsAndExpressionsOptionsPage();
 
     // IOptionsPage
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp
index 879cef5db9341e29b1bcf5a381590185f5afc345..3c562195a6adc9aca51ad67260845fc440dbfb7d 100644
--- a/src/plugins/debugger/gdb/gdboptionspage.cpp
+++ b/src/plugins/debugger/gdb/gdboptionspage.cpp
@@ -257,31 +257,12 @@ public:
 
 GdbOptionsPage::GdbOptionsPage()
     : m_ui(0)
-{ }
-
-QString GdbOptionsPage::settingsId()
-{
-    return QLatin1String("M.Gdb");
-}
-
-QString GdbOptionsPage::displayName() const
-{
-    return tr("GDB");
-}
-
-QString GdbOptionsPage::category() const
-{
-    return QLatin1String(Constants::DEBUGGER_SETTINGS_CATEGORY);
-}
-
-QString GdbOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Debugger", Constants::DEBUGGER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon GdbOptionsPage::categoryIcon() const
 {
-    return QIcon(QLatin1String(Constants::DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
+    setId(QLatin1String("M.Gdb"));
+    setDisplayName(tr("GDB"));
+    setCategory(QLatin1String(Constants::DEBUGGER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Debugger", Constants::DEBUGGER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
 }
 
 QWidget *GdbOptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/debugger/gdb/gdboptionspage.h b/src/plugins/debugger/gdb/gdboptionspage.h
index e744c3ec59dc324f29ad7320ff981926c14867eb..98a8bf3fafb9c77ea24650e44c182dc529019af1 100644
--- a/src/plugins/debugger/gdb/gdboptionspage.h
+++ b/src/plugins/debugger/gdb/gdboptionspage.h
@@ -36,8 +36,6 @@
 #include <coreplugin/dialogs/ioptionspage.h>
 #include <utils/savedaction.h>
 
-namespace ProjectExplorer { class ToolChain; }
-
 namespace Debugger {
 namespace Internal {
 
@@ -46,21 +44,14 @@ class GdbOptionsPageUi;
 class GdbOptionsPage : public Core::IOptionsPage
 {
     Q_OBJECT
-public:
-    explicit GdbOptionsPage();
 
-    virtual QString id() const { return settingsId(); }
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
-    virtual bool matches(const QString &) const;
+public:
+    GdbOptionsPage();
 
-    static QString settingsId();
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
+    bool matches(const QString &) const;
 
 private:
     GdbOptionsPageUi *m_ui;
diff --git a/src/plugins/debugger/lldb/lldboptionspage.cpp b/src/plugins/debugger/lldb/lldboptionspage.cpp
index 35b9670ed6dd51d117f2e5f53d23ecf84b335928..cce74a60ff5673d04cfe5585cf383da64c055af0 100644
--- a/src/plugins/debugger/lldb/lldboptionspage.cpp
+++ b/src/plugins/debugger/lldb/lldboptionspage.cpp
@@ -72,36 +72,12 @@ void LldbOptionsPageWidget::load()
 // ---------- LldbOptionsPage
 LldbOptionsPage::LldbOptionsPage()
 {
-//    m_options->fromSettings(Core::ICore::settings());
-}
-
-LldbOptionsPage::~LldbOptionsPage()
-{
-}
-
-QString LldbOptionsPage::settingsId()
-{
-    return QLatin1String("F.Lldb");
-}
-
-QString LldbOptionsPage::displayName() const
-{
-    return tr("LLDB");
-}
-
-QString LldbOptionsPage::category() const
-{
-    return QLatin1String(Debugger::Constants::DEBUGGER_SETTINGS_CATEGORY);
-}
-
-QString LldbOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Debugger", Debugger::Constants::DEBUGGER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon LldbOptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Debugger::Constants::DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
+    //    m_options->fromSettings(Core::ICore::settings());
+    setId(QLatin1String("F.Lldb"));
+    setDisplayName(tr("LLDB"));
+    setCategory(QLatin1String(Debugger::Constants::DEBUGGER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Debugger", Constants::DEBUGGER_SETTINGS_TR_CATEGORY);
+    setCategoryIcon(QIcon(QLatin1String(Constants::DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON)));
 }
 
 QWidget *LldbOptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/debugger/lldb/lldboptionspage.h b/src/plugins/debugger/lldb/lldboptionspage.h
index 4ef3b8db3c77e7e2ad3426dc12caf54dd9f0d37b..1b68ea961c06085abe8a66db31c9f7e8d1e5e59b 100644
--- a/src/plugins/debugger/lldb/lldboptionspage.h
+++ b/src/plugins/debugger/lldb/lldboptionspage.h
@@ -65,22 +65,13 @@ class LldbOptionsPage : public Core::IOptionsPage
     Q_OBJECT
 
 public:
-    explicit LldbOptionsPage();
-    virtual ~LldbOptionsPage();
+    LldbOptionsPage();
 
     // IOptionsPage
-    virtual QString id() const { return settingsId(); }
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
-    virtual bool matches(const QString &) const;
-
-    static QString settingsId();
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
+    bool matches(const QString &) const;
 
 private:
     QPointer<LldbOptionsPageWidget> m_widget;
diff --git a/src/plugins/designer/cpp/cppsettingspage.cpp b/src/plugins/designer/cpp/cppsettingspage.cpp
index dd869fd2939a789dba76d7c735e4dfd4c2efa49f..755fffcc9e78097943c46cd2005fa3f30e505b04 100644
--- a/src/plugins/designer/cpp/cppsettingspage.cpp
+++ b/src/plugins/designer/cpp/cppsettingspage.cpp
@@ -108,31 +108,11 @@ QString CppSettingsPageWidget::searchKeywords() const
 CppSettingsPage::CppSettingsPage(QObject *parent) : Core::IOptionsPage(parent)
 {
     m_parameters.fromSettings(Core::ICore::settings());
-}
-
-QString CppSettingsPage::id() const
-{
-    return QLatin1String(Designer::Constants::SETTINGS_CPP_SETTINGS_ID);
-}
-
-QString CppSettingsPage::displayName() const
-{
-    return QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_CPP_SETTINGS_NAME);
-}
-
-QString CppSettingsPage::category() const
-{
-    return QLatin1String(Designer::Constants::SETTINGS_CATEGORY);
-}
-
-QString CppSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_TR_CATEGORY);
-}
-
-QIcon CppSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON));
+    setId(QLatin1String(Designer::Constants::SETTINGS_CPP_SETTINGS_ID));
+    setDisplayName(QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_CPP_SETTINGS_NAME));
+    setCategory(QLatin1String(Designer::Constants::SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON));
 }
 
 QWidget *CppSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/designer/cpp/cppsettingspage.h b/src/plugins/designer/cpp/cppsettingspage.h
index 16b2fc689d6d1e9e9c9c0aa7db3bde1b38958f09..2c6bf717444ebf9cd154c5e3674f5ce129463e7b 100644
--- a/src/plugins/designer/cpp/cppsettingspage.h
+++ b/src/plugins/designer/cpp/cppsettingspage.h
@@ -66,16 +66,10 @@ class CppSettingsPage : public Core::IOptionsPage
 public:
     explicit CppSettingsPage(QObject *parent = 0);
 
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
-    virtual bool matches(const QString &s) const;
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
+    bool matches(const QString &s) const;
 
 private:
     QPointer<CppSettingsPageWidget> m_widget;
diff --git a/src/plugins/designer/settingspage.cpp b/src/plugins/designer/settingspage.cpp
index 12cdab02787d3ec0d563268aa360694a31e5280f..902ad155983050818ad25498dd66af33bf74b923 100644
--- a/src/plugins/designer/settingspage.cpp
+++ b/src/plugins/designer/settingspage.cpp
@@ -49,35 +49,12 @@ using namespace Designer::Internal;
 SettingsPage::SettingsPage(QDesignerOptionsPageInterface *designerPage) :
     m_designerPage(designerPage), m_initialized(false)
 {
-}
-
-SettingsPage::~SettingsPage()
-{
-}
-
-QString SettingsPage::id() const
-{
-    return m_designerPage->name();
-}
-
-QString SettingsPage::displayName() const
-{
-    return m_designerPage->name();
-}
-
-QString SettingsPage::category() const
-{
-    return QLatin1String(Designer::Constants::SETTINGS_CATEGORY);
-}
-
-QString SettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_TR_CATEGORY);
-}
-
-QIcon SettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON));
+    setId(m_designerPage->name());
+    setDisplayName(m_designerPage->name());
+    setCategory(QLatin1String(Designer::Constants::SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Designer",
+        Designer::Constants::SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON));
 }
 
 QWidget *SettingsPage::createPage(QWidget *parent)
@@ -101,25 +78,10 @@ void SettingsPage::finish()
 SettingsPageProvider::SettingsPageProvider(QObject *parent)
     : IOptionsPageProvider(parent), m_initialized(false)
 {
-}
-
-SettingsPageProvider::~SettingsPageProvider()
-{
-}
-
-QString SettingsPageProvider::category() const
-{
-    return QLatin1String(Designer::Constants::SETTINGS_CATEGORY);
-}
-
-QString SettingsPageProvider::displayCategory() const
-{
-    return QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_TR_CATEGORY);
-}
-
-QIcon SettingsPageProvider::categoryIcon() const
-{
-    return QIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON));
+    setCategory(QLatin1String(Designer::Constants::SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Designer",
+        Designer::Constants::SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON));
 }
 
 QList<Core::IOptionsPage *> SettingsPageProvider::pages() const
diff --git a/src/plugins/designer/settingspage.h b/src/plugins/designer/settingspage.h
index e10fe1eb680fd7c0744b2e1faa0ea94aa2822398..f62a83967b96e575549ae6787af989664817abd6 100644
--- a/src/plugins/designer/settingspage.h
+++ b/src/plugins/designer/settingspage.h
@@ -50,17 +50,10 @@ class SettingsPage : public Core::IOptionsPage
 
 public:
     explicit SettingsPage(QDesignerOptionsPageInterface *designerPage);
-    virtual ~SettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
 
 private:
     QDesignerOptionsPageInterface *m_designerPage;
@@ -73,11 +66,6 @@ class SettingsPageProvider : public Core::IOptionsPageProvider
 
 public:
     SettingsPageProvider(QObject *parent = 0);
-    ~SettingsPageProvider();
-
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
 
     QList<Core::IOptionsPage *> pages() const;
 
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index 511e3aa13edf975b333c11ea74acd6491d0c732e..34c7e0affb53e3b386909f804c7e19b3430ff824 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -181,15 +181,14 @@ class FakeVimOptionPage : public Core::IOptionsPage
     Q_OBJECT
 
 public:
-    FakeVimOptionPage() {}
-
-    // IOptionsPage
-    QString id() const { return _(Constants::SETTINGS_ID); }
-    QString displayName() const { return tr("General"); }
-    QString category() const { return _(Constants::SETTINGS_CATEGORY); }
-    QString displayCategory() const { return tr("FakeVim"); }
-    QIcon categoryIcon() const
-        { return QIcon(_(Constants::SETTINGS_CATEGORY_FAKEVIM_ICON)); }
+    FakeVimOptionPage()
+    {
+        setId(_(Constants::SETTINGS_ID));
+        setDisplayName(tr("General"));
+        setCategory(_(Constants::SETTINGS_CATEGORY));
+        setDisplayCategory(tr("FakeVim"));
+        setCategoryIcon(_(Constants::SETTINGS_CATEGORY_FAKEVIM_ICON));
+    }
 
     QWidget *createPage(QWidget *parent);
     void apply() { m_group.apply(ICore::settings()); }
@@ -339,16 +338,15 @@ class FakeVimExCommandsPage : public Core::CommandMappings
     Q_OBJECT
 
 public:
-    FakeVimExCommandsPage(FakeVimPluginPrivate *q) : m_q(q) {}
-    ~FakeVimExCommandsPage() {}
-
-    // IOptionsPage
-    QString id() const { return _(Constants::SETTINGS_EX_CMDS_ID); }
-    QString displayName() const { return tr("Ex Command Mapping"); }
-    QString category() const { return _(Constants::SETTINGS_CATEGORY); }
-    QString displayCategory() const { return tr("FakeVim"); }
-    QIcon categoryIcon() const
-        { return QIcon(_(Constants::SETTINGS_CATEGORY_FAKEVIM_ICON)); }
+    FakeVimExCommandsPage(FakeVimPluginPrivate *q)
+        : m_q(q)
+    {
+        setId(_(Constants::SETTINGS_EX_CMDS_ID));
+        setDisplayName(tr("Ex Command Mapping"));
+        setCategory(_(Constants::SETTINGS_CATEGORY));
+        setDisplayCategory(tr("FakeVim"));
+        setCategoryIcon(_(Constants::SETTINGS_CATEGORY_FAKEVIM_ICON));
+    }
 
     QWidget *createPage(QWidget *parent);
     void initialize();
@@ -565,16 +563,16 @@ class FakeVimUserCommandsPage : public Core::IOptionsPage
     Q_OBJECT
 
 public:
-    FakeVimUserCommandsPage(FakeVimPluginPrivate *q) : m_q(q) {}
-    ~FakeVimUserCommandsPage() {}
-
-    // IOptionsPage
-    QString id() const { return _(Constants::SETTINGS_USER_CMDS_ID); }
-    QString displayName() const { return tr("User Command Mapping"); }
-    QString category() const { return _(Constants::SETTINGS_CATEGORY); }
-    QString displayCategory() const { return tr("FakeVim"); }
-    QIcon categoryIcon() const
-        { return QIcon(_(Constants::SETTINGS_CATEGORY_FAKEVIM_ICON)); }
+    FakeVimUserCommandsPage(FakeVimPluginPrivate *q)
+        : m_q(q)
+    {
+        setId(_(Constants::SETTINGS_USER_CMDS_ID));
+        setDisplayName(tr("User Command Mapping"));
+        setCategory(_(Constants::SETTINGS_CATEGORY));
+        setDisplayCategory(tr("FakeVim"));
+        setCategoryIcon(_(Constants::SETTINGS_CATEGORY_FAKEVIM_ICON));
+    }
+
     void apply();
     void finish() {}
 
diff --git a/src/plugins/git/gerrit/gerritoptionspage.cpp b/src/plugins/git/gerrit/gerritoptionspage.cpp
index ed9acf5ad06606a79f82f600b1273c860aac7802..80c92817b6dbb64c9ae2862196d585960f575a5f 100644
--- a/src/plugins/git/gerrit/gerritoptionspage.cpp
+++ b/src/plugins/git/gerrit/gerritoptionspage.cpp
@@ -50,11 +50,13 @@ GerritOptionsPage::GerritOptionsPage(const QSharedPointer<GerritParameters> &p,
     : VcsBase::VcsBaseOptionsPage(parent)
     , m_parameters(p)
 {
+    setId(optionsId());
+    setDisplayName(tr("Gerrit"));
 }
 
-QString GerritOptionsPage::displayName() const
+QString GerritOptionsPage::optionsId()
 {
-    return tr("Gerrit");
+    return QLatin1String("Gerrit");
 }
 
 QWidget *GerritOptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/git/gerrit/gerritoptionspage.h b/src/plugins/git/gerrit/gerritoptionspage.h
index 066e5f121dcab209f0a3fba001614a5ac490da50..37486dfb71a0480427dfae7caf28e73cb30bf8ad 100644
--- a/src/plugins/git/gerrit/gerritoptionspage.h
+++ b/src/plugins/git/gerrit/gerritoptionspage.h
@@ -73,20 +73,17 @@ private:
 class GerritOptionsPage : public VcsBase::VcsBaseOptionsPage
 {
     Q_OBJECT
+
 public:
     GerritOptionsPage(const QSharedPointer<GerritParameters> &p,
                       QObject *parent = 0);
 
-    static QString optionsId() { return QLatin1String("Gerrit"); }
-
-    QString id() const { return optionsId(); }
-    QString displayName() const;
+    static QString optionsId();
 
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
-
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
 private:
     const QSharedPointer<GerritParameters> &m_parameters;
diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp
index 5c023a33584d873edaa06de0d06b4756b3efc8bf..bbc1b6369b0a9cd8cbde3a24d137ab8d753ad564 100644
--- a/src/plugins/git/settingspage.cpp
+++ b/src/plugins/git/settingspage.cpp
@@ -121,16 +121,8 @@ QString SettingsPageWidget::searchKeywords() const
 SettingsPage::SettingsPage() :
     m_widget(0)
 {
-}
-
-QString SettingsPage::id() const
-{
-    return QLatin1String(VcsBase::Constants::VCS_ID_GIT);
-}
-
-QString SettingsPage::displayName() const
-{
-    return tr("Git");
+    setId(QLatin1String(VcsBase::Constants::VCS_ID_GIT));
+    setDisplayName(tr("Git"));
 }
 
 QWidget *SettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/git/settingspage.h b/src/plugins/git/settingspage.h
index 28f178d2ad0a18242ff1b0f212d630d51d8adccb..01be4a92034965063b90a882403e266e8db6802e 100644
--- a/src/plugins/git/settingspage.h
+++ b/src/plugins/git/settingspage.h
@@ -76,7 +76,7 @@ public:
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
 private:
     QString m_searchKeywords;
diff --git a/src/plugins/help/docsettingspage.cpp b/src/plugins/help/docsettingspage.cpp
index ebebfdc4576616543fe4c1f3351f86dd20d97c1b..9697ec3efbed1e49e28f92d554144f1d88371f02 100644
--- a/src/plugins/help/docsettingspage.cpp
+++ b/src/plugins/help/docsettingspage.cpp
@@ -45,31 +45,11 @@ using namespace Help::Internal;
 
 DocSettingsPage::DocSettingsPage()
 {
-}
-
-QString DocSettingsPage::id() const
-{
-    return QLatin1String("B.Documentation");
-}
-
-QString DocSettingsPage::displayName() const
-{
-    return tr("Documentation");
-}
-
-QString DocSettingsPage::category() const
-{
-    return QLatin1String(Help::Constants::HELP_CATEGORY);
-}
-
-QString DocSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Help", Help::Constants::HELP_TR_CATEGORY);
-}
-
-QIcon DocSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON));
+    setId(QLatin1String("B.Documentation"));
+    setDisplayName(tr("Documentation"));
+    setCategory(QLatin1String(Help::Constants::HELP_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Help", Help::Constants::HELP_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON));
 }
 
 QWidget *DocSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/help/docsettingspage.h b/src/plugins/help/docsettingspage.h
index 24d3a3e099507b04231eaa563b859c6bcb8e8912..dc471677c3877cf675773c6cd84e581288b0343e 100644
--- a/src/plugins/help/docsettingspage.h
+++ b/src/plugins/help/docsettingspage.h
@@ -42,21 +42,14 @@ namespace Internal {
 class DocSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
-    typedef QHash<QString, QString> NameSpaceToPathHash;
 
 public:
     DocSettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() {}
-    virtual bool matches(const QString &s) const;
+    bool matches(const QString &s) const;
 
 private slots:
     void addDocumentation();
@@ -73,6 +66,7 @@ private:
     QString m_searchKeywords;
     QString m_recentDialogPath;
 
+    typedef QHash<QString, QString> NameSpaceToPathHash;
     NameSpaceToPathHash m_filesToRegister;
     NameSpaceToPathHash m_filesToUnregister;
 };
diff --git a/src/plugins/help/filtersettingspage.cpp b/src/plugins/help/filtersettingspage.cpp
index 8d93c92938c7b3cb6e41aa04133ca8e083f81bbf..5a98a5541de311e7e0f99e7aae93a5a715f09921 100644
--- a/src/plugins/help/filtersettingspage.cpp
+++ b/src/plugins/help/filtersettingspage.cpp
@@ -46,31 +46,11 @@ using namespace Help::Internal;
 
 FilterSettingsPage::FilterSettingsPage()
 {
-}
-
-QString FilterSettingsPage::id() const
-{
-    return QLatin1String("D.Filters");
-}
-
-QString FilterSettingsPage::displayName() const
-{
-    return tr("Filters");
-}
-
-QString FilterSettingsPage::category() const
-{
-    return QLatin1String(Help::Constants::HELP_CATEGORY);
-}
-
-QString FilterSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Help", Help::Constants::HELP_TR_CATEGORY);
-}
-
-QIcon FilterSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON));
+    setId(QLatin1String("D.Filters"));
+    setDisplayName(tr("Filters"));
+    setCategory(QLatin1String(Help::Constants::HELP_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Help", Help::Constants::HELP_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON));
 }
 
 QWidget *FilterSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/help/filtersettingspage.h b/src/plugins/help/filtersettingspage.h
index c6f310313b515c300f6a14f5f60de92e37d88b31..3682f807ce41749f8bd1e0a389dbc0520cedcdad 100644
--- a/src/plugins/help/filtersettingspage.h
+++ b/src/plugins/help/filtersettingspage.h
@@ -42,21 +42,14 @@ namespace Internal {
 class FilterSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
-    typedef QMap<QString, QStringList> FilterMap;
 
 public:
     FilterSettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
-    virtual bool matches(const QString &s) const;
+    bool matches(const QString &s) const;
 
 signals:
     void filtersChanged();
@@ -75,6 +68,7 @@ private:
     QString msgFilterLabel(const QString &filter) const;
     Ui::FilterSettingsPage m_ui;
 
+    typedef QMap<QString, QStringList> FilterMap;
     FilterMap m_filterMap;
     FilterMap m_filterMapBackup;
 
diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp
index 40342d117a21652f59c02132a4602ed03580fdc5..81fb8514af49f0c355ac32dd09be93a75876e8ff 100644
--- a/src/plugins/help/generalsettingspage.cpp
+++ b/src/plugins/help/generalsettingspage.cpp
@@ -66,31 +66,11 @@ GeneralSettingsPage::GeneralSettingsPage()
     QWebSettings* webSettings = QWebSettings::globalSettings();
     m_font.setPointSize(webSettings->fontSize(QWebSettings::DefaultFontSize));
 #endif
-}
-
-QString GeneralSettingsPage::id() const
-{
-    return QLatin1String("A.General settings");
-}
-
-QString GeneralSettingsPage::displayName() const
-{
-    return tr("General");
-}
-
-QString GeneralSettingsPage::category() const
-{
-    return QLatin1String(Help::Constants::HELP_CATEGORY);
-}
-
-QString GeneralSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Help", Help::Constants::HELP_TR_CATEGORY);
-}
-
-QIcon GeneralSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON));
+    setId(QLatin1String("A.General settings"));
+    setDisplayName(tr("General"));
+    setCategory(QLatin1String(Help::Constants::HELP_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("Help", Help::Constants::HELP_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON));
 }
 
 QWidget *GeneralSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/help/generalsettingspage.h b/src/plugins/help/generalsettingspage.h
index 7a435574c4a6f03db3db26cd0383383867cfa8a7..87d7a848c5ac79f57c5d156a5a5384f82e24fcee 100644
--- a/src/plugins/help/generalsettingspage.h
+++ b/src/plugins/help/generalsettingspage.h
@@ -48,16 +48,10 @@ class GeneralSettingsPage : public Core::IOptionsPage
 public:
     GeneralSettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
-    virtual bool matches(const QString &s) const;
+    bool matches(const QString &s) const;
 
 signals:
     void fontChanged();
diff --git a/src/plugins/locator/settingspage.cpp b/src/plugins/locator/settingspage.cpp
index 581153269525e0dfb9954f4d700790047e9c06e0..bb760c819ef6dc558fa99c264bf0e054bbf9a7c3 100644
--- a/src/plugins/locator/settingspage.cpp
+++ b/src/plugins/locator/settingspage.cpp
@@ -51,31 +51,11 @@ using namespace Locator::Internal;
 SettingsPage::SettingsPage(LocatorPlugin *plugin)
     : m_plugin(plugin), m_page(0)
 {
-}
-
-QString SettingsPage::id() const
-{
-    return QLatin1String(Constants::FILTER_OPTIONS_PAGE);
-}
-
-QString SettingsPage::displayName() const
-{
-    return QCoreApplication::translate("Locator", Locator::Constants::FILTER_OPTIONS_PAGE);
-}
-
-QString SettingsPage::category() const
-{
-    return QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE);
-}
-
-QString SettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE);
-}
-
-QIcon SettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
+    setId(Constants::FILTER_OPTIONS_PAGE);
+    setDisplayName(QCoreApplication::translate("Locator", Locator::Constants::FILTER_OPTIONS_PAGE));
+    setCategory(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE));
+    setDisplayCategory(QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE));
+    setCategoryIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON));
 }
 
 QWidget *SettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/locator/settingspage.h b/src/plugins/locator/settingspage.h
index 7ce01a2a9f1c5418524350dac5a51d6818e9a7ff..e21d1657dde673b4f31a8120e8385423533e9671 100644
--- a/src/plugins/locator/settingspage.h
+++ b/src/plugins/locator/settingspage.h
@@ -58,16 +58,11 @@ class SettingsPage : public Core::IOptionsPage
 
 public:
     explicit SettingsPage(LocatorPlugin *plugin);
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
 
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
 private slots:
     void updateButtonStates();
diff --git a/src/plugins/macros/macrooptionspage.cpp b/src/plugins/macros/macrooptionspage.cpp
index ed3ccaff0dabde6b892441c928bb12170aca5dc4..f8d20c293296f83327e3e50811ac76075ca236b2 100644
--- a/src/plugins/macros/macrooptionspage.cpp
+++ b/src/plugins/macros/macrooptionspage.cpp
@@ -49,36 +49,11 @@ using namespace Macros::Internal;
 MacroOptionsPage::MacroOptionsPage(QObject *parent)
     : Core::IOptionsPage(parent)
 {
-}
-
-MacroOptionsPage::~MacroOptionsPage()
-{
-}
-
-QString MacroOptionsPage::id() const
-{
-    return Constants::M_OPTIONS_PAGE;
-}
-
-QString MacroOptionsPage::displayName() const
-{
-    return QCoreApplication::translate("Macros", Constants::M_OPTIONS_TR_PAGE);
-}
-
-QString MacroOptionsPage::category() const
-{
-    return TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY;
-}
-
-QString MacroOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("TextEditor",
-                                       TextEditor::Constants::TEXT_EDITOR_SETTINGS_TR_CATEGORY);
-}
-
-QIcon MacroOptionsPage::categoryIcon() const
-{
-    return QIcon();
+    setId(QLatin1String(Constants::M_OPTIONS_PAGE));
+    setDisplayName(QCoreApplication::translate("Macros", Constants::M_OPTIONS_TR_PAGE));
+    setCategory(QLatin1String(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("TextEditor",
+        TextEditor::Constants::TEXT_EDITOR_SETTINGS_TR_CATEGORY));
 }
 
 QWidget *MacroOptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/macros/macrooptionspage.h b/src/plugins/macros/macrooptionspage.h
index 6900b4d8a6c85aab367fd8f771cdd97eff5ff284..1bcd540d36c102fc451d49c1467ffaa89863f0cd 100644
--- a/src/plugins/macros/macrooptionspage.h
+++ b/src/plugins/macros/macrooptionspage.h
@@ -48,16 +48,9 @@ class MACROS_EXPORT MacroOptionsPage : public Core::IOptionsPage
 
 public:
     MacroOptionsPage(QObject *parent = 0);
-    ~MacroOptionsPage();
 
     // IOptionsPage implementation
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
     QWidget *createPage(QWidget *parent);
-
     void apply();
     void finish();
 
diff --git a/src/plugins/madde/maemosettingspages.cpp b/src/plugins/madde/maemosettingspages.cpp
index 4f7a618f9f63956a7cb8b98f421f4112743af417..d35d96c1affc15768ec3cabece5edfc37c5c6b20 100644
--- a/src/plugins/madde/maemosettingspages.cpp
+++ b/src/plugins/madde/maemosettingspages.cpp
@@ -105,35 +105,11 @@ private:
 MaemoQemuSettingsPage::MaemoQemuSettingsPage(QObject *parent)
     : Core::IOptionsPage(parent)
 {
-}
-
-MaemoQemuSettingsPage::~MaemoQemuSettingsPage()
-{
-}
-
-QString MaemoQemuSettingsPage::id() const
-{
-    return pageId();
-}
-
-QString MaemoQemuSettingsPage::displayName() const
-{
-    return tr("MeeGo Qemu Settings");
-}
-
-QString MaemoQemuSettingsPage::category() const
-{
-    return pageCategory();
-}
-
-QString MaemoQemuSettingsPage::displayCategory() const
-{
-    return QString(); // Already set by device configurations page.
-}
-
-QIcon MaemoQemuSettingsPage::categoryIcon() const
-{
-    return QIcon(); // See above.
+    setId(pageId());
+    setDisplayName(tr("MeeGo Qemu Settings"));
+    setCategory(pageCategory());
+    //setDisplayCategory(QString()); // Will be set by device configurations page.
+    //setCategoryIcon(QIcon()) // See above.
 }
 
 bool MaemoQemuSettingsPage::matches(const QString &searchKeyWord) const
diff --git a/src/plugins/madde/maemosettingspages.h b/src/plugins/madde/maemosettingspages.h
index a305c3138775641de2560301c04372a2a84b43e6..9c00abcfe00d01787ffd93d24da0c72866c48502 100644
--- a/src/plugins/madde/maemosettingspages.h
+++ b/src/plugins/madde/maemosettingspages.h
@@ -41,19 +41,14 @@ class MaemoQemuSettingsWidget;
 class MaemoQemuSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
+
 public:
     MaemoQemuSettingsPage(QObject *parent = 0);
-    ~MaemoQemuSettingsPage();
 
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-    virtual bool matches(const QString &searchKeyWord) const;
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
+    bool matches(const QString &searchKeyWord) const;
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
 
     static void showQemuCrashDialog();
     static QString pageId();
diff --git a/src/plugins/mercurial/optionspage.cpp b/src/plugins/mercurial/optionspage.cpp
index a6b189f6d10050b31759f9858d0b9ccea41a3e11..43d36c44cf3c99d55f0bd270920c617e1de6c954 100644
--- a/src/plugins/mercurial/optionspage.cpp
+++ b/src/plugins/mercurial/optionspage.cpp
@@ -94,16 +94,8 @@ QString OptionsPageWidget::searchKeywords() const
 
 OptionsPage::OptionsPage()
 {
-}
-
-QString OptionsPage::id() const
-{
-    return QLatin1String(VcsBase::Constants::VCS_ID_MERCURIAL);
-}
-
-QString OptionsPage::displayName() const
-{
-    return tr("Mercurial");
+    setId(QLatin1String(VcsBase::Constants::VCS_ID_MERCURIAL));
+    setDisplayName(tr("Mercurial"));
 }
 
 QWidget *OptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/perforce/settingspage.cpp b/src/plugins/perforce/settingspage.cpp
index c72f151db9431b653e19eadff82f9f50ef7821a3..cb3182bf918c66fda3043c134ae647f6df829160 100644
--- a/src/plugins/perforce/settingspage.cpp
+++ b/src/plugins/perforce/settingspage.cpp
@@ -140,16 +140,8 @@ QString SettingsPageWidget::searchKeywords() const
 
 SettingsPage::SettingsPage()
 {
-}
-
-QString SettingsPage::id() const
-{
-    return QLatin1String(VcsBase::Constants::VCS_ID_PERFORCE);
-}
-
-QString SettingsPage::displayName() const
-{
-    return tr("Perforce");
+    setId(QLatin1String(VcsBase::Constants::VCS_ID_PERFORCE));
+    setDisplayName(tr("Perforce"));
 }
 
 QWidget *SettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/perforce/settingspage.h b/src/plugins/perforce/settingspage.h
index 8d26f4a0e3a67a9fc001ea37087e154a9f8d1232..65180ad7a44e1b50bd252ae315c9534fe1486e80 100644
--- a/src/plugins/perforce/settingspage.h
+++ b/src/plugins/perforce/settingspage.h
@@ -78,13 +78,10 @@ class SettingsPage : public VcsBase::VcsBaseOptionsPage
 public:
     SettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
 private:
     QString m_searchKeywords;
diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp b/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp
index 9c1345e6535216b51ae5829c4d3225f51ef83b9a..caf1922b451230f76ad1c2b7d8c7a91253371656 100644
--- a/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp
+++ b/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp
@@ -44,35 +44,11 @@ namespace Internal {
 DeviceSettingsPage::DeviceSettingsPage(QObject *parent)
     : Core::IOptionsPage(parent)
 {
-}
-
-DeviceSettingsPage::~DeviceSettingsPage()
-{
-}
-
-QString DeviceSettingsPage::id() const
-{
-    return pageId();
-}
-
-QString DeviceSettingsPage::displayName() const
-{
-    return tr("Devices");
-}
-
-QString DeviceSettingsPage::category() const
-{
-    return pageCategory();
-}
-
-QString DeviceSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("ProjectExplorer", "Devices");
-}
-
-QIcon DeviceSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(":/projectexplorer/images/MaemoDevice.png"));
+    setId(QLatin1String(Constants::DEVICE_SETTINGS_PAGE_ID));
+    setDisplayName(tr("Devices"));
+    setCategory(QLatin1String(Constants::DEVICE_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("ProjectExplorer", "Devices"));
+    setCategoryIcon(QLatin1String(":/projectexplorer/images/MaemoDevice.png"));
 }
 
 bool DeviceSettingsPage::matches(const QString &searchKeyWord) const
@@ -97,15 +73,5 @@ void DeviceSettingsPage::finish()
 {
 }
 
-QString DeviceSettingsPage::pageId()
-{
-    return QLatin1String(Constants::DEVICE_SETTINGS_PAGE_ID);
-}
-
-QString DeviceSettingsPage::pageCategory()
-{
-    return QLatin1String(Constants::DEVICE_SETTINGS_CATEGORY);
-}
-
 } // namespace Internal
 } // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingspage.h b/src/plugins/projectexplorer/devicesupport/devicesettingspage.h
index 15e690ebeabd55270d936cb781943e14339692ee..2fb39cf7e339bc08d757361ed1b497bbc3424838 100644
--- a/src/plugins/projectexplorer/devicesupport/devicesettingspage.h
+++ b/src/plugins/projectexplorer/devicesupport/devicesettingspage.h
@@ -35,27 +35,20 @@
 
 namespace ProjectExplorer {
 namespace Internal {
+
 class DeviceSettingsWidget;
 
 class DeviceSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
+
 public:
     DeviceSettingsPage(QObject *parent = 0);
-    ~DeviceSettingsPage();
-
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-    virtual bool matches(const QString &searchKeyWord) const;
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
 
-    static QString pageId();
-    static QString pageCategory();
+    bool matches(const QString &searchKeyWord) const;
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
 
 private:
     QString m_keywords;
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
index 48489c428b39f0810c126e19aef7635ea9eccf97..50491deaabc2bc2fca64b327cd2adbc47ce9987c 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
@@ -153,32 +153,16 @@ QString ProjectExplorerSettingsWidget::searchKeywords() const
 // ------------------ ProjectExplorerSettingsPage
 ProjectExplorerSettingsPage::ProjectExplorerSettingsPage()
 {
+    setId(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_ID));
+    setDisplayName(tr("General"));
+    setCategory(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("ProjectExplorer",
+        Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
 }
 
-QString ProjectExplorerSettingsPage::id() const
+ProjectExplorerSettingsPage::~ProjectExplorerSettingsPage()
 {
-    return QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_ID);
-}
-
-QString ProjectExplorerSettingsPage::displayName() const
-{
-    return tr("General");
-}
-
-QString ProjectExplorerSettingsPage::category() const
-{
-    return QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY);
-}
-
-QString ProjectExplorerSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("ProjectExplorer",
-                                       Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon ProjectExplorerSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
 }
 
 QWidget *ProjectExplorerSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.h b/src/plugins/projectexplorer/projectexplorersettingspage.h
index d8d92778041500d06528d7a0e406e6f69c80d42d..5bcabbdaf94baff2a53adfc7ad55ede1e0e1818f 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.h
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.h
@@ -73,19 +73,15 @@ private:
 class ProjectExplorerSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
+
 public:
     ProjectExplorerSettingsPage();
+    ~ProjectExplorerSettingsPage();
 
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
-    virtual bool matches(const QString &s) const;
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
+    bool matches(const QString &s) const;
 
 private:
     QString m_searchKeywords;
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp
index 5387a0e79e741cac21786f308e3ada07ee39af1c..afd7dd8345ab2380082141d63436afedf8a97bce 100644
--- a/src/plugins/projectexplorer/toolchainoptionspage.cpp
+++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp
@@ -472,32 +472,13 @@ void ToolChainModel::removeToolChain(ToolChain *tc)
 
 ToolChainOptionsPage::ToolChainOptionsPage() :
     m_ui(0), m_model(0), m_selectionModel(0), m_currentTcWidget(0)
-{ }
-
-QString ToolChainOptionsPage::id() const
-{
-    return QLatin1String(Constants::TOOLCHAIN_SETTINGS_PAGE_ID);
-}
-
-QString ToolChainOptionsPage::displayName() const
-{
-    return tr("Tool Chains");
-}
-
-QString ToolChainOptionsPage::category() const
-{
-    return QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY);
-}
-
-QString ToolChainOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("ProjectExplorer",
-                                       Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon ToolChainOptionsPage::categoryIcon() const
 {
-    return QIcon(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
+    setId(QLatin1String(Constants::TOOLCHAIN_SETTINGS_PAGE_ID));
+    setDisplayName(tr("Tool Chains"));
+    setCategory(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("ProjectExplorer",
+        Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
 }
 
 QWidget *ToolChainOptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.h b/src/plugins/projectexplorer/toolchainoptionspage.h
index 67814b112fba1fdd17c31c8ad1524158460c5ff2..2049154455d3e7f2d7e9a207044272666b568340 100644
--- a/src/plugins/projectexplorer/toolchainoptionspage.h
+++ b/src/plugins/projectexplorer/toolchainoptionspage.h
@@ -123,16 +123,10 @@ class ToolChainOptionsPage : public Core::IOptionsPage
 public:
     ToolChainOptionsPage();
 
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
-    virtual bool matches(const QString &) const;
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
+    bool matches(const QString &) const;
 
 private slots:
     void toolChainSelectionChanged();
diff --git a/src/plugins/qmldesigner/settingspage.cpp b/src/plugins/qmldesigner/settingspage.cpp
index 20742fae3609519d02d364c31df6149bc1780641..86f62cdc25a657d9240b2eb7df80c6529365d0e7 100644
--- a/src/plugins/qmldesigner/settingspage.cpp
+++ b/src/plugins/qmldesigner/settingspage.cpp
@@ -82,31 +82,12 @@ QString SettingsPageWidget::searchKeywords() const
 SettingsPage::SettingsPage() :
     m_widget(0)
 {
-}
-
-QString SettingsPage::id() const
-{
-    return QLatin1String("B.QmlDesigner");
-}
-
-QString SettingsPage::displayName() const
-{
-    return tr("Qt Quick Designer");
-}
-
-QString SettingsPage::category() const
-{
-    return QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML);
-}
-
-QString SettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("QmlJSEditor", QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML);
-}
-
-QIcon SettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::SETTINGS_CATEGORY_QML_ICON));
+    setId(QLatin1String("B.QmlDesigner"));
+    setDisplayName(tr("Qt Quick Designer"));
+    setCategory(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML));
+    setDisplayCategory(QCoreApplication::translate("QmlJSEditor",
+        QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML));
+    setCategoryIcon(QLatin1String(Constants::SETTINGS_CATEGORY_QML_ICON));
 }
 
 QWidget *SettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/qmldesigner/settingspage.h b/src/plugins/qmldesigner/settingspage.h
index 7ba938c5ce57714250b3a50c9964e0d324902007..c03a19d52baa090bdf45c3733707f8274e1fe2bd 100644
--- a/src/plugins/qmldesigner/settingspage.h
+++ b/src/plugins/qmldesigner/settingspage.h
@@ -53,6 +53,7 @@ namespace Internal {
 class SettingsPageWidget : public QWidget
 {
     Q_OBJECT
+
 public:
     explicit SettingsPageWidget(QWidget *parent = 0);
 
@@ -73,16 +74,10 @@ class SettingsPage : public Core::IOptionsPage
 public:
     SettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
 private:
     QString m_searchKeywords;
diff --git a/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp b/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp
index 40ebec1b637e8429f1e75bb72d746f31972a6776..1542d6149221187ec079673035e15db8a0a4cb96 100644
--- a/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp
+++ b/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp
@@ -126,31 +126,12 @@ QuickToolBarSettings QuickToolBarSettings::get()
 QuickToolBarSettingsPage::QuickToolBarSettingsPage() :
     m_widget(0)
 {
-}
-
-QString QuickToolBarSettingsPage::id() const
-{
-    return QLatin1String("C.QmlToolbar");
-}
-
-QString QuickToolBarSettingsPage::displayName() const
-{
-    return tr("Qt Quick ToolBar");
-}
-
-QString QuickToolBarSettingsPage::category() const
-{
-    return QLatin1String(Constants::SETTINGS_CATEGORY_QML);
-}
-
-QString QuickToolBarSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("QmlJSEditor", QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML);
-}
-
-QIcon QuickToolBarSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(QmlDesigner::Constants::SETTINGS_CATEGORY_QML_ICON));
+    setId(QLatin1String("C.QmlToolbar"));
+    setDisplayName(tr("Qt Quick ToolBar"));
+    setCategory(QLatin1String(Constants::SETTINGS_CATEGORY_QML));
+    setDisplayCategory(QCoreApplication::translate("QmlJSEditor",
+        QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML));
+    setCategoryIcon(QLatin1String(QmlDesigner::Constants::SETTINGS_CATEGORY_QML_ICON));
 }
 
 QWidget *QuickToolBarSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/qmljseditor/quicktoolbarsettingspage.h b/src/plugins/qmljseditor/quicktoolbarsettingspage.h
index bfa8e6e4d0b4f6db9f0df4b01817c8f2429ee3a6..0f029ecc2662afd79ff06528dd816fdb38571c03 100644
--- a/src/plugins/qmljseditor/quicktoolbarsettingspage.h
+++ b/src/plugins/qmljseditor/quicktoolbarsettingspage.h
@@ -94,16 +94,10 @@ class QuickToolBarSettingsPage : public Core::IOptionsPage
 public:
     QuickToolBarSettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
-    virtual bool matches(const QString &) const;    
+    bool matches(const QString &) const;
 
 private:
     QString m_searchKeywords;
diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp
index 16131e1269365d20c43a059d0c7aa40d9cdcb9c9..e197cc89bf01ce8691ad60d10a15f38d3c438adf 100644
--- a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp
+++ b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp
@@ -169,35 +169,11 @@ QmlJSCodeStyleSettingsPage::QmlJSCodeStyleSettingsPage(/*QSharedPointer<CppFileS
     Core::IOptionsPage(parent),
     m_pageTabPreferences(0)
 {
-}
-
-QmlJSCodeStyleSettingsPage::~QmlJSCodeStyleSettingsPage()
-{
-}
-
-QString QmlJSCodeStyleSettingsPage::id() const
-{
-    return QLatin1String(Constants::QML_JS_CODE_STYLE_SETTINGS_ID);
-}
-
-QString QmlJSCodeStyleSettingsPage::displayName() const
-{
-    return QCoreApplication::translate("QmlJSTools", Constants::QML_JS_CODE_STYLE_SETTINGS_NAME);
-}
-
-QString QmlJSCodeStyleSettingsPage::category() const
-{
-    return QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML);
-}
-
-QString QmlJSCodeStyleSettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("QmlJSEditor", QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML);
-}
-
-QIcon QmlJSCodeStyleSettingsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(QmlDesigner::Constants::SETTINGS_CATEGORY_QML_ICON));
+    setId(QLatin1String(Constants::QML_JS_CODE_STYLE_SETTINGS_ID));
+    setDisplayName(QCoreApplication::translate("QmlJSTools", Constants::QML_JS_CODE_STYLE_SETTINGS_NAME));
+    setCategory(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML));
+    setDisplayCategory(QCoreApplication::translate("QmlJSEditor", QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML));
+    setCategoryIcon(QLatin1String(QmlDesigner::Constants::SETTINGS_CATEGORY_QML_ICON));
 }
 
 QWidget *QmlJSCodeStyleSettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.h b/src/plugins/qmljstools/qmljscodestylesettingspage.h
index 1e3de252e59c3e9298c15252fa4f65dd50836812..d24aa53c1a3649bcb57adffb0ab71b2d8af96b69 100644
--- a/src/plugins/qmljstools/qmljscodestylesettingspage.h
+++ b/src/plugins/qmljstools/qmljscodestylesettingspage.h
@@ -61,10 +61,9 @@ class QmlJSCodeStylePreferencesWidget : public QWidget
 
 public:
     explicit QmlJSCodeStylePreferencesWidget(QWidget *parent = 0);
-    virtual ~QmlJSCodeStylePreferencesWidget();
+    ~QmlJSCodeStylePreferencesWidget();
 
     void setPreferences(TextEditor::ICodeStylePreferences *preferences);
-
     QString searchKeywords() const;
 
 private slots:
@@ -74,7 +73,6 @@ private slots:
     void updatePreview();
 
 private:
-
     TextEditor::ICodeStylePreferences *m_preferences;
     Ui::QmlJSCodeStyleSettingsPage *m_ui;
 };
@@ -86,19 +84,11 @@ class QmlJSCodeStyleSettingsPage : public Core::IOptionsPage
 
 public:
     explicit QmlJSCodeStyleSettingsPage(QWidget *parent = 0);
-    ~QmlJSCodeStyleSettingsPage();
-
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual QString category() const;
-    virtual QString displayCategory() const;
-    virtual QIcon categoryIcon() const;
-
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish() { }
-    virtual bool matches(const QString &) const;
 
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish() { }
+    bool matches(const QString &) const;
 
 private:
     QString m_searchKeywords;
diff --git a/src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.cpp b/src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.cpp
index f77aa89fed7f3185ae4b481b5022fd1c8da47836..f80057eafff57e9bd95ab26aad63850919fb7313 100644
--- a/src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.cpp
+++ b/src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.cpp
@@ -126,32 +126,12 @@ bool UnConfiguredSettingsWidget::matches(const QString &searchKeyword)
 
 UnConfiguredSettingsOptionPage::UnConfiguredSettingsOptionPage()
 {
-}
-
-QString UnConfiguredSettingsOptionPage::id() const
-{
-    return Constants::UNCONFIGURED_SETTINGS_PAGE_ID;
-}
-
-QString UnConfiguredSettingsOptionPage::displayName() const
-{
-    return QCoreApplication::translate("Qt4ProjectManager", Constants::UNCONFIGURED_SETTINGS_PAGE_NAME);
-}
-
-QString UnConfiguredSettingsOptionPage::category() const
-{
-    return QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY);
-}
-
-QString UnConfiguredSettingsOptionPage::displayCategory() const
-{
-    return QCoreApplication::translate("ProjectExplorer",
-                                       ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon UnConfiguredSettingsOptionPage::categoryIcon() const
-{
-    return QIcon(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON);
+    setId(Constants::UNCONFIGURED_SETTINGS_PAGE_ID);
+    setDisplayName(QCoreApplication::translate("Qt4ProjectManager", Constants::UNCONFIGURED_SETTINGS_PAGE_NAME));
+    setCategory(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("ProjectExplorer",
+        ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
 }
 
 bool UnConfiguredSettingsOptionPage::matches(const QString &searchKeyword) const
diff --git a/src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.h b/src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.h
index d8db4e118a9e23f7a035c577db2a5016b38f8ef8..b97472351ff210f5c45eab7b1a42474a203ce063 100644
--- a/src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.h
+++ b/src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.h
@@ -62,16 +62,11 @@ class UnConfiguredSettingsOptionPage : public Core::IOptionsPage
 public:
     UnConfiguredSettingsOptionPage();
 
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
     bool matches(const QString &searcKeyword) const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
+
 private:
     UnConfiguredSettingsWidget *m_widget;
 };
diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp
index a33b8ae3ffe25c99c6946b0981e1596486044319..fcfb8a8f9fd28383e038bdb76a57f7544acf8b4f 100644
--- a/src/plugins/qtsupport/qtoptionspage.cpp
+++ b/src/plugins/qtsupport/qtoptionspage.cpp
@@ -71,32 +71,12 @@ using namespace QtSupport::Internal;
 QtOptionsPage::QtOptionsPage()
     : m_widget(0)
 {
-}
-
-QString QtOptionsPage::id() const
-{
-    return QLatin1String(Constants::QTVERSION_SETTINGS_PAGE_ID);
-}
-
-QString QtOptionsPage::displayName() const
-{
-    return QCoreApplication::translate("Qt4ProjectManager", Constants::QTVERSION_SETTINGS_PAGE_NAME);
-}
-
-QString QtOptionsPage::category() const
-{
-    return QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY);
-}
-
-QString QtOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("ProjectExplorer",
-                                       ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY);
-}
-
-QIcon QtOptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
+    setId(QLatin1String(Constants::QTVERSION_SETTINGS_PAGE_ID));
+    setDisplayName(QCoreApplication::translate("Qt4ProjectManager", Constants::QTVERSION_SETTINGS_PAGE_NAME));
+    setCategory(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("ProjectExplorer",
+        ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON));
 }
 
 QWidget *QtOptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/qtsupport/qtoptionspage.h b/src/plugins/qtsupport/qtoptionspage.h
index 499ed77cbbe7ae65b4666b3c77870e2894d62ca1..1c4146c30e8f1cde11282b99092a1d06296b9efc 100644
--- a/src/plugins/qtsupport/qtoptionspage.h
+++ b/src/plugins/qtsupport/qtoptionspage.h
@@ -139,17 +139,14 @@ private:
 class QtOptionsPage : public Core::IOptionsPage
 {
     Q_OBJECT
+
 public:
     QtOptionsPage();
-    QString id() const;
-    QString displayName() const;
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
+
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() {}
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
 private:
     QtOptionsPageWidget *m_widget;
diff --git a/src/plugins/subversion/settingspage.cpp b/src/plugins/subversion/settingspage.cpp
index a091a109a484d8f9a8741d9a3f093262a95c4403..1c6854c2e4edca49a8e24ec56a69262ae11f986e 100644
--- a/src/plugins/subversion/settingspage.cpp
+++ b/src/plugins/subversion/settingspage.cpp
@@ -105,16 +105,8 @@ QString SettingsPageWidget::searchKeywords() const
 SettingsPage::SettingsPage() :
     m_widget(0)
 {
-}
-
-QString SettingsPage::id() const
-{
-    return QLatin1String(VcsBase::Constants::VCS_ID_SUBVERSION);
-}
-
-QString SettingsPage::displayName() const
-{
-    return tr("Subversion");
+    setId(QLatin1String(VcsBase::Constants::VCS_ID_SUBVERSION));
+    setDisplayName(tr("Subversion"));
 }
 
 QWidget *SettingsPage::createPage(QWidget *parent)
diff --git a/src/plugins/subversion/settingspage.h b/src/plugins/subversion/settingspage.h
index 91ef2238b176442ac9628c68bb66c567f0bb18ea..a9a1ea20fb3745e298f1b8b8a58a7ef39d9f251d 100644
--- a/src/plugins/subversion/settingspage.h
+++ b/src/plugins/subversion/settingspage.h
@@ -74,13 +74,10 @@ class SettingsPage : public VcsBase::VcsBaseOptionsPage
 public:
     SettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
 private:
     QString m_searchKeywords;
diff --git a/src/plugins/texteditor/behaviorsettingspage.cpp b/src/plugins/texteditor/behaviorsettingspage.cpp
index 1cf6b379b4602acb5cfb4bec6f55178117943349..43b95986a78f1337747b6ccf0c3b89da78796435 100644
--- a/src/plugins/texteditor/behaviorsettingspage.cpp
+++ b/src/plugins/texteditor/behaviorsettingspage.cpp
@@ -102,6 +102,9 @@ BehaviorSettingsPage::BehaviorSettingsPage(const BehaviorSettingsPageParameters
     d->m_defaultCodeStylePool = new CodeStylePool(0, this); // Any language
     d->m_defaultCodeStylePool->addCodeStyle(d->m_codeStyle);
     d->init();
+
+    setId(p.id);
+    setDisplayName(p.displayName);
 }
 
 BehaviorSettingsPage::~BehaviorSettingsPage()
@@ -109,16 +112,6 @@ BehaviorSettingsPage::~BehaviorSettingsPage()
     delete d;
 }
 
-QString BehaviorSettingsPage::id() const
-{
-    return d->m_parameters.id;
-}
-
-QString BehaviorSettingsPage::displayName() const
-{
-    return d->m_parameters.displayName;
-}
-
 QWidget *BehaviorSettingsPage::createPage(QWidget *parent)
 {
     QWidget *w = new QWidget(parent);
diff --git a/src/plugins/texteditor/behaviorsettingspage.h b/src/plugins/texteditor/behaviorsettingspage.h
index 794373b105e374c6750a84f2962b83f7e0fab8a5..fd8843240c014036d89e6640317b667706ceaf81 100644
--- a/src/plugins/texteditor/behaviorsettingspage.h
+++ b/src/plugins/texteditor/behaviorsettingspage.h
@@ -61,12 +61,9 @@ class BehaviorSettingsPage : public TextEditorOptionsPage
 
 public:
     BehaviorSettingsPage(const BehaviorSettingsPageParameters &p, QObject *parent);
-    virtual ~BehaviorSettingsPage();
+    ~BehaviorSettingsPage();
 
     // IOptionsPage
-    QString id() const;
-    QString displayName() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
diff --git a/src/plugins/texteditor/displaysettingspage.cpp b/src/plugins/texteditor/displaysettingspage.cpp
index 5d69ef5bd1cac356b1fbae4524dc09b376f89e95..4c81549be2be7db11efb50c861d68c1baf0b17c1 100644
--- a/src/plugins/texteditor/displaysettingspage.cpp
+++ b/src/plugins/texteditor/displaysettingspage.cpp
@@ -65,6 +65,8 @@ DisplaySettingsPage::DisplaySettingsPage(const DisplaySettingsPageParameters &p,
   : TextEditorOptionsPage(parent),
     d(new DisplaySettingsPagePrivate(p))
 {
+    setId(p.id);
+    setDisplayName(p.displayName);
 }
 
 DisplaySettingsPage::~DisplaySettingsPage()
@@ -72,16 +74,6 @@ DisplaySettingsPage::~DisplaySettingsPage()
     delete d;
 }
 
-QString DisplaySettingsPage::id() const
-{
-    return d->m_parameters.id;
-}
-
-QString DisplaySettingsPage::displayName() const
-{
-    return d->m_parameters.displayName;
-}
-
 QWidget *DisplaySettingsPage::createPage(QWidget *parent)
 {
     QWidget *w = new QWidget(parent);
diff --git a/src/plugins/texteditor/displaysettingspage.h b/src/plugins/texteditor/displaysettingspage.h
index 8622345026b159adccabcf020ae23801747bfe39..b3c389a4e442a1e4edb5ec83e3ceab6f7cd3103c 100644
--- a/src/plugins/texteditor/displaysettingspage.h
+++ b/src/plugins/texteditor/displaysettingspage.h
@@ -55,12 +55,9 @@ class DisplaySettingsPage : public TextEditorOptionsPage
 
 public:
     DisplaySettingsPage(const DisplaySettingsPageParameters &p, QObject *parent);
-    virtual ~DisplaySettingsPage();
+    ~DisplaySettingsPage();
 
     // IOptionsPage
-    QString id() const;
-    QString displayName() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp
index bc4b661824518e050c3943bf7fb87a363fc24ffa..beed737ff49336e95123775c703eb2f3b685171d 100644
--- a/src/plugins/texteditor/fontsettingspage.cpp
+++ b/src/plugins/texteditor/fontsettingspage.cpp
@@ -321,6 +321,8 @@ FontSettingsPage::FontSettingsPage(const FormatDescriptions &fd,
     TextEditorOptionsPage(parent),
     d_ptr(new FontSettingsPagePrivate(fd, id, tr("Font && Colors"), category()))
 {
+    setId(d_ptr->m_id);
+    setDisplayName(d_ptr->m_displayName);
 }
 
 FontSettingsPage::~FontSettingsPage()
@@ -328,16 +330,6 @@ FontSettingsPage::~FontSettingsPage()
     delete d_ptr;
 }
 
-QString FontSettingsPage::id() const
-{
-    return d_ptr->m_id;
-}
-
-QString FontSettingsPage::displayName() const
-{
-    return d_ptr->m_displayName;
-}
-
 QWidget *FontSettingsPage::createPage(QWidget *parent)
 {
     QWidget *w = new QWidget(parent);
diff --git a/src/plugins/texteditor/fontsettingspage.h b/src/plugins/texteditor/fontsettingspage.h
index b110401991cd7b2f9bc10e3dffe14d199c23b547..121b1b71e03441859fe753da6df30ed9976bebb6 100644
--- a/src/plugins/texteditor/fontsettingspage.h
+++ b/src/plugins/texteditor/fontsettingspage.h
@@ -93,13 +93,10 @@ public:
 
     ~FontSettingsPage();
 
-    QString id() const;
-    QString displayName() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
-    virtual bool matches(const QString &) const;
+    bool matches(const QString &) const;
 
     void saveSettings();
 
diff --git a/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp b/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp
index 71f654da7f4576781312e119861dd6f4d4b78491..8fafda76e6a94019a735a4e09309ba5dd5b9380c 100644
--- a/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp
+++ b/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp
@@ -83,6 +83,8 @@ HighlighterSettingsPage::HighlighterSettingsPage(const QString &id, QObject *par
     m_requestMimeTypeRegistration(false),
     m_d(new HighlighterSettingsPagePrivate(id))
 {
+    setId(m_d->m_id);
+    setDisplayName(m_d->m_displayName);
 }
 
 HighlighterSettingsPage::~HighlighterSettingsPage()
@@ -90,16 +92,6 @@ HighlighterSettingsPage::~HighlighterSettingsPage()
     delete m_d;
 }
 
-QString HighlighterSettingsPage::id() const
-{
-    return m_d->m_id;
-}
-
-QString HighlighterSettingsPage::displayName() const
-{
-    return m_d->m_displayName;
-}
-
 QWidget *HighlighterSettingsPage::createPage(QWidget *parent)
 {
     QWidget *w = new QWidget(parent);
diff --git a/src/plugins/texteditor/generichighlighter/highlightersettingspage.h b/src/plugins/texteditor/generichighlighter/highlightersettingspage.h
index 8c5a382f01416e138976fb1a0a23c7f2046fa46f..6567edae774159ad153e479eed7b6344ebb4e408 100644
--- a/src/plugins/texteditor/generichighlighter/highlightersettingspage.h
+++ b/src/plugins/texteditor/generichighlighter/highlightersettingspage.h
@@ -50,12 +50,10 @@ class HighlighterSettings;
 class HighlighterSettingsPage : public TextEditorOptionsPage
 {
     Q_OBJECT
+
 public:
     HighlighterSettingsPage(const QString &id, QObject *parent);
-    virtual ~HighlighterSettingsPage();
-
-    QString id() const;
-    QString displayName() const;
+    ~HighlighterSettingsPage();
 
     QWidget *createPage(QWidget *parent);
     void apply();
diff --git a/src/plugins/texteditor/snippets/snippetssettingspage.cpp b/src/plugins/texteditor/snippets/snippetssettingspage.cpp
index 40eebb44d000d42b4e8b1c620240ba8cee49b923..c79ea6c20f10b1869a2fc55b5f88517db2e43f49 100644
--- a/src/plugins/texteditor/snippets/snippetssettingspage.cpp
+++ b/src/plugins/texteditor/snippets/snippetssettingspage.cpp
@@ -565,21 +565,14 @@ void SnippetsSettingsPagePrivate::decorateEditors(const TextEditor::FontSettings
 SnippetsSettingsPage::SnippetsSettingsPage(const QString &id, QObject *parent) :
     TextEditorOptionsPage(parent),
     d(new SnippetsSettingsPagePrivate(id))
-{}
-
-SnippetsSettingsPage::~SnippetsSettingsPage()
 {
-    delete d;
+    setId(d->id());
+    setDisplayName(d->displayName());
 }
 
-QString SnippetsSettingsPage::id() const
-{
-    return d->id();
-}
-
-QString SnippetsSettingsPage::displayName() const
+SnippetsSettingsPage::~SnippetsSettingsPage()
 {
-    return d->displayName();
+    delete d;
 }
 
 bool SnippetsSettingsPage::matches(const QString &s) const
diff --git a/src/plugins/texteditor/snippets/snippetssettingspage.h b/src/plugins/texteditor/snippets/snippetssettingspage.h
index b32bd7994a3391b9d4f8f55ee6dbc2073a290e7c..900dc4cf0cae1eb2e929105561b649dfb971df06 100644
--- a/src/plugins/texteditor/snippets/snippetssettingspage.h
+++ b/src/plugins/texteditor/snippets/snippetssettingspage.h
@@ -46,14 +46,12 @@ class SnippetsSettingsPage : public TextEditorOptionsPage
 
 public:
     SnippetsSettingsPage(const QString &id, QObject *parent);
-    virtual ~SnippetsSettingsPage();
+    ~SnippetsSettingsPage();
 
-    virtual QString id() const;
-    virtual QString displayName() const;
-    virtual bool matches(const QString &s) const;
-    virtual QWidget *createPage(QWidget *parent);
-    virtual void apply();
-    virtual void finish();
+    bool matches(const QString &s) const;
+    QWidget *createPage(QWidget *parent);
+    void apply();
+    void finish();
 
 private:
     SnippetsSettingsPagePrivate *d;
diff --git a/src/plugins/texteditor/texteditoroptionspage.cpp b/src/plugins/texteditor/texteditoroptionspage.cpp
index cce4908b121fc8b73a898181b1908d43b4e568b2..cc3f80d1cbf2749cfc9a1d75bf5ad7bae0058915 100644
--- a/src/plugins/texteditor/texteditoroptionspage.cpp
+++ b/src/plugins/texteditor/texteditoroptionspage.cpp
@@ -35,26 +35,13 @@
 #include "texteditorconstants.h"
 
 #include <QCoreApplication>
-#include <QIcon>
 
 using namespace TextEditor;
 
 TextEditorOptionsPage::TextEditorOptionsPage(QObject *parent) :
     Core::IOptionsPage(parent)
 {
-}
-
-QString TextEditorOptionsPage::category() const
-{
-    return QLatin1String(Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
-}
-
-QString TextEditorOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("TextEditor", Constants::TEXT_EDITOR_SETTINGS_TR_CATEGORY);
-}
-
-QIcon TextEditorOptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON));
+    setCategory(QLatin1String(Constants::TEXT_EDITOR_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("TextEditor", Constants::TEXT_EDITOR_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON));
 }
diff --git a/src/plugins/texteditor/texteditoroptionspage.h b/src/plugins/texteditor/texteditoroptionspage.h
index fe6e9d1343e08b8abdb0d36061a2799f56485f55..0560e74a03a9b0c9ba64bfe6c7c9974ccf238a01 100644
--- a/src/plugins/texteditor/texteditoroptionspage.h
+++ b/src/plugins/texteditor/texteditoroptionspage.h
@@ -48,11 +48,6 @@ class TEXTEDITOR_EXPORT TextEditorOptionsPage : public Core::IOptionsPage
 
 public:
     explicit TextEditorOptionsPage(QObject *parent = 0);
-
-    // IOptionsPage
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
 };
 
 } // namespace TextEditor
diff --git a/src/plugins/todo/optionspage.cpp b/src/plugins/todo/optionspage.cpp
index f05f45ec199813b5214df9149c3d33197a471508..d29b55ac357196c592d9bf1a729c33d4720deaf9 100644
--- a/src/plugins/todo/optionspage.cpp
+++ b/src/plugins/todo/optionspage.cpp
@@ -51,10 +51,12 @@ OptionsPage::OptionsPage(const Settings &settings, QObject *parent) :
     m_dialog(0)
 {
     setSettings(settings);
-}
 
-OptionsPage::~OptionsPage()
-{
+    setId(QLatin1String("TodoSettings"));
+    setDisplayName(tr("To-Do"));
+    setCategory(QLatin1String("To-Do"));
+    setDisplayCategory(tr("To-Do"));
+    setCategoryIcon(QLatin1String(Constants::ICON_TODO));
 }
 
 void OptionsPage::setSettings(const Settings &settings)
@@ -62,42 +64,6 @@ void OptionsPage::setSettings(const Settings &settings)
     m_settings = settings;
 }
 
-QString OptionsPage::id() const
-{
-    return QLatin1String("TodoSettings");
-}
-
-QString OptionsPage::trName() const
-{
-    return tr("To-Do");
-}
-
-QString OptionsPage::category() const
-{
-    return QLatin1String("To-Do");
-}
-
-QString OptionsPage::trCategory() const
-{
-    return tr("To-Do");
-}
-
-QString OptionsPage::displayName() const
-{
-    return trName();
-}
-
-QString OptionsPage::displayCategory() const
-{
-    return trCategory();
-}
-
-QIcon OptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::ICON_TODO));
-}
-
-
 QWidget *OptionsPage::createPage(QWidget *parent)
 {
     m_dialog = new OptionsDialog(parent);
diff --git a/src/plugins/todo/optionspage.h b/src/plugins/todo/optionspage.h
index bdf25fb54f39a60ffdc138072b53722f109d3003..2e2869e996259220723aedc758b3b7255aa3829d 100644
--- a/src/plugins/todo/optionspage.h
+++ b/src/plugins/todo/optionspage.h
@@ -46,19 +46,12 @@ class OptionsDialog;
 class OptionsPage : public Core::IOptionsPage
 {
     Q_OBJECT
+
 public:
     OptionsPage(const Settings &settings, QObject *parent = 0);
-    ~OptionsPage();
 
     void setSettings(const Settings &settings);
 
-    QString id() const;
-    QString trName() const;
-    QString category() const;
-    QString trCategory() const;
-    QString displayName() const;
-    QIcon categoryIcon() const;
-    QString displayCategory() const;
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish();
diff --git a/src/plugins/vcsbase/commonsettingspage.cpp b/src/plugins/vcsbase/commonsettingspage.cpp
index 3349cbcecaff631c13448fb1eaff26b5a6b46958..a73ae4d40d5111e3c2e86effd8db295f276a46c1 100644
--- a/src/plugins/vcsbase/commonsettingspage.cpp
+++ b/src/plugins/vcsbase/commonsettingspage.cpp
@@ -110,20 +110,9 @@ CommonOptionsPage::CommonOptionsPage(QObject *parent) :
     VcsBaseOptionsPage(parent)
 {
     m_settings.fromSettings(Core::ICore::settings());
-}
-
-void CommonOptionsPage::updateNickNames()
-{
-}
 
-QString CommonOptionsPage::id() const
-{
-    return QLatin1String(Constants::VCS_COMMON_SETTINGS_ID);
-}
-
-QString CommonOptionsPage::displayName() const
-{
-    return QCoreApplication::translate("VcsBase", Constants::VCS_COMMON_SETTINGS_NAME);
+    setId(QLatin1String(Constants::VCS_COMMON_SETTINGS_ID));
+    setDisplayName(QCoreApplication::translate("VcsBase", Constants::VCS_COMMON_SETTINGS_NAME));
 }
 
 QWidget *CommonOptionsPage::createPage(QWidget *parent)
diff --git a/src/plugins/vcsbase/commonsettingspage.h b/src/plugins/vcsbase/commonsettingspage.h
index a5a37afe96fa0d4a246b6b16de7e51814851a5cf..14e64554e7861f543cca32e39cec5d82e83ea01f 100644
--- a/src/plugins/vcsbase/commonsettingspage.h
+++ b/src/plugins/vcsbase/commonsettingspage.h
@@ -69,9 +69,6 @@ class CommonOptionsPage : public VcsBaseOptionsPage
 public:
     explicit CommonOptionsPage(QObject *parent = 0);
 
-    QString id() const;
-    QString displayName() const;
-
     QWidget *createPage(QWidget *parent);
     void apply();
     void finish() { }
@@ -83,8 +80,6 @@ signals:
     void settingsChanged(const VcsBase::Internal::CommonVcsSettings &s);
 
 private:
-    void updateNickNames();
-
     CommonSettingsWidget *m_widget;
     CommonVcsSettings m_settings;
     QString m_searchKeyWords;
diff --git a/src/plugins/vcsbase/vcsbaseoptionspage.cpp b/src/plugins/vcsbase/vcsbaseoptionspage.cpp
index 321c86b0c01c9480064bc2828c64b782fff167eb..de3ae92703d4d870f197d107ccface52f574ccbd 100644
--- a/src/plugins/vcsbase/vcsbaseoptionspage.cpp
+++ b/src/plugins/vcsbase/vcsbaseoptionspage.cpp
@@ -35,7 +35,6 @@
 #include "vcsbaseconstants.h"
 
 #include <QCoreApplication>
-#include <QIcon>
 
 /*!
     \class VcsBase::VcsBaseOptionsPage
@@ -48,21 +47,9 @@ namespace VcsBase {
 VcsBaseOptionsPage::VcsBaseOptionsPage(QObject *parent) :
     Core::IOptionsPage(parent)
 {
-}
-
-QString VcsBaseOptionsPage::category() const
-{
-    return QLatin1String(Constants::VCS_SETTINGS_CATEGORY);
-}
-
-QString VcsBaseOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("VcsBase", Constants::VCS_SETTINGS_TR_CATEGORY);
-}
-
-QIcon VcsBaseOptionsPage::categoryIcon() const
-{
-    return QIcon(QLatin1String(Constants::SETTINGS_CATEGORY_VCS_ICON));
+    setCategory(QLatin1String(Constants::VCS_SETTINGS_CATEGORY));
+    setDisplayCategory(QCoreApplication::translate("VcsBase", Constants::VCS_SETTINGS_TR_CATEGORY));
+    setCategoryIcon(QLatin1String(Constants::SETTINGS_CATEGORY_VCS_ICON));
 }
 
 } // namespace VcsBase
diff --git a/src/plugins/vcsbase/vcsbaseoptionspage.h b/src/plugins/vcsbase/vcsbaseoptionspage.h
index c9e48b99839a9476c805fc295f8fcbda911c73b6..788b82faa3cf42eef48ee7965f67e03f6184c30a 100644
--- a/src/plugins/vcsbase/vcsbaseoptionspage.h
+++ b/src/plugins/vcsbase/vcsbaseoptionspage.h
@@ -41,14 +41,8 @@ namespace VcsBase {
 
 class VCSBASE_EXPORT VcsBaseOptionsPage : public Core::IOptionsPage
 {
-    Q_OBJECT
-
 public:
     explicit VcsBaseOptionsPage(QObject *parent = 0);
-
-    QString category() const;
-    QString displayCategory() const;
-    QIcon categoryIcon() const;
 };
 
 } // namespace VcsBase