diff --git a/src/plugins/cvs/settingspage.cpp b/src/plugins/cvs/settingspage.cpp
index 2a137e93b28ce2963efa626e87b78a9f03ada268..d4106f7f6dd1b4dd5919cf028c8aedbae91f4a91 100644
--- a/src/plugins/cvs/settingspage.cpp
+++ b/src/plugins/cvs/settingspage.cpp
@@ -98,21 +98,6 @@ QString SettingsPage::displayName() const
     return tr("CVS");
 }
 
-QString SettingsPage::category() const
-{
-    return QLatin1String(VCSBase::Constants::VCS_SETTINGS_CATEGORY);
-}
-
-QString SettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("VCSBase", VCSBase::Constants::VCS_SETTINGS_TR_CATEGORY);
-}
-
-QIcon SettingsPage::categoryIcon() const
-{
-    return QIcon(); // TODO: Icon for Version Control
-}
-
 QWidget *SettingsPage::createPage(QWidget *parent)
 {
     m_widget = new SettingsPageWidget(parent);
diff --git a/src/plugins/cvs/settingspage.h b/src/plugins/cvs/settingspage.h
index 141d4b836d0095419f9ec4584aea0e278f6419da..1d9772749c10f8498e1b448ccdbadd95107b9780 100644
--- a/src/plugins/cvs/settingspage.h
+++ b/src/plugins/cvs/settingspage.h
@@ -32,7 +32,7 @@
 
 #include "ui_settingspage.h"
 
-#include <coreplugin/dialogs/ioptionspage.h>
+#include <vcsbase/vcsbaseoptionspage.h>
 
 #include <QtGui/QWidget>
 #include <QtCore/QPointer>
@@ -50,6 +50,7 @@ struct CVSSettings;
 class SettingsPageWidget : public QWidget
 {
     Q_OBJECT
+
 public:
     explicit SettingsPageWidget(QWidget *parent = 0);
 
@@ -63,7 +64,7 @@ private:
 };
 
 
-class SettingsPage : public Core::IOptionsPage
+class SettingsPage : public VCSBase::VCSBaseOptionsPage
 {
     Q_OBJECT
 
@@ -72,9 +73,6 @@ public:
 
     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/git/settingspage.cpp b/src/plugins/git/settingspage.cpp
index 4c50a1581ab5bedf212b49337bb3af3401006b08..e93cc7fea6df33c1fdc28c0f561f95a5c43aa2da 100644
--- a/src/plugins/git/settingspage.cpp
+++ b/src/plugins/git/settingspage.cpp
@@ -112,21 +112,6 @@ QString SettingsPage::displayName() const
     return tr("Git");
 }
 
-QString SettingsPage::category() const
-{
-    return QLatin1String(VCSBase::Constants::VCS_SETTINGS_CATEGORY);
-}
-
-QString SettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("VCSBase", VCSBase::Constants::VCS_SETTINGS_TR_CATEGORY);
-}
-
-QIcon SettingsPage::categoryIcon() const
-{
-    return QIcon(); // TODO: Icon for Version Control
-}
-
 QWidget *SettingsPage::createPage(QWidget *parent)
 {
     m_widget = new SettingsPageWidget(parent);
diff --git a/src/plugins/git/settingspage.h b/src/plugins/git/settingspage.h
index 7d10c032932fd48f64ef00a3648d394268407ce6..6eea5ba8836e603f61f1e6327bd0ac6301139664 100644
--- a/src/plugins/git/settingspage.h
+++ b/src/plugins/git/settingspage.h
@@ -33,7 +33,7 @@
 #include <QtGui/QWidget>
 #include <QtCore/QPointer>
 
-#include <coreplugin/dialogs/ioptionspage.h>
+#include <vcsbase/vcsbaseoptionspage.h>
 
 #include "ui_settingspage.h"
 
@@ -63,7 +63,7 @@ private:
     Ui::SettingsPage m_ui;
 };
 
-class SettingsPage : public Core::IOptionsPage
+class SettingsPage : public VCSBase::VCSBaseOptionsPage
 {
     Q_OBJECT
 
@@ -72,9 +72,6 @@ public:
 
     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/mercurial/mercurialsettings.cpp b/src/plugins/mercurial/mercurialsettings.cpp
index 1105b308f40a9f21fa54564f133e5a96c74e2744..cbe398b9ec7667d7e52a5c89d6849a921d89cc83 100644
--- a/src/plugins/mercurial/mercurialsettings.cpp
+++ b/src/plugins/mercurial/mercurialsettings.cpp
@@ -142,8 +142,8 @@ void MercurialSettings::readSettings(const QSettings *settings)
 
 bool MercurialSettings::equals(const MercurialSettings &rhs) const
 {
- return m_binary == rhs.m_binary && m_standardArguments == rhs.m_standardArguments
-         && m_user == rhs.m_user && m_mail == rhs.m_mail
-         && m_logCount == rhs.m_logCount && m_timeoutSeconds == rhs.m_timeoutSeconds
-         && m_prompt == rhs.m_prompt;
+    return m_binary == rhs.m_binary && m_standardArguments == rhs.m_standardArguments
+            && m_user == rhs.m_user && m_mail == rhs.m_mail
+            && m_logCount == rhs.m_logCount && m_timeoutSeconds == rhs.m_timeoutSeconds
+            && m_prompt == rhs.m_prompt;
 }
diff --git a/src/plugins/mercurial/mercurialsettings.h b/src/plugins/mercurial/mercurialsettings.h
index 57304fa78111a547ae7c1e0633ac753a6fa2386d..46d4af041872dc3b00c465904f1ae33047d0d562 100644
--- a/src/plugins/mercurial/mercurialsettings.h
+++ b/src/plugins/mercurial/mercurialsettings.h
@@ -73,7 +73,6 @@ public:
     bool equals(const MercurialSettings &rhs) const;
 
 private:
-
     void readSettings();
 
     QString m_binary;
@@ -90,7 +89,7 @@ inline bool operator==(const MercurialSettings &s1, const MercurialSettings &s2)
 inline bool operator!=(const MercurialSettings &s1, const MercurialSettings &s2)
 { return !s1.equals(s2); }
 
-} //namespace Internal
-} //namespace Mercurial
+} // namespace Internal
+} // namespace Mercurial
 
 #endif // MERCURIALSETTINGS_H
diff --git a/src/plugins/mercurial/optionspage.cpp b/src/plugins/mercurial/optionspage.cpp
index 8702830a900e377ba535f469b1bba166c931b09f..757ebb78442d7055efa71b248a66c80c453e3731 100644
--- a/src/plugins/mercurial/optionspage.cpp
+++ b/src/plugins/mercurial/optionspage.cpp
@@ -97,21 +97,6 @@ QString OptionsPage::displayName() const
     return tr("Mercurial");
 }
 
-QString OptionsPage::category() const
-{
-    return QLatin1String(VCSBase::Constants::VCS_SETTINGS_CATEGORY);
-}
-
-QString OptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("VCSBase", VCSBase::Constants::VCS_SETTINGS_TR_CATEGORY);
-}
-
-QIcon OptionsPage::categoryIcon() const
-{
-    return QIcon(); // TODO: Icon for Version Control
-}
-
 QWidget *OptionsPage::createPage(QWidget *parent)
 {
     if (!optionsPageWidget)
diff --git a/src/plugins/mercurial/optionspage.h b/src/plugins/mercurial/optionspage.h
index 821fa13703ceb6b962a3802481e7561544b51476..3d465dfdad2862098fb5ea33c8c777ff0d060cc6 100644
--- a/src/plugins/mercurial/optionspage.h
+++ b/src/plugins/mercurial/optionspage.h
@@ -32,7 +32,7 @@
 
 #include "ui_optionspage.h"
 
-#include <coreplugin/dialogs/ioptionspage.h>
+#include <vcsbase/vcsbaseoptionspage.h>
 
 #include <QtGui/QWidget>
 #include <QtCore/QPointer>
@@ -45,6 +45,7 @@ class MercurialSettings;
 class OptionsPageWidget : public QWidget
 {
     Q_OBJECT
+
 public:
     explicit OptionsPageWidget(QWidget *parent = 0);
 
@@ -57,7 +58,7 @@ private:
 };
 
 
-class OptionsPage : public Core::IOptionsPage
+class OptionsPage : public VCSBase::VCSBaseOptionsPage
 {
     Q_OBJECT
 
@@ -65,9 +66,6 @@ public:
     OptionsPage();
     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/perforce/settingspage.cpp b/src/plugins/perforce/settingspage.cpp
index bb3d6dfdab8eef8a93e52d564590663fcc4281d4..b0ab255ef54ea0026bed7239dd581bb61c2c9a16 100644
--- a/src/plugins/perforce/settingspage.cpp
+++ b/src/plugins/perforce/settingspage.cpp
@@ -136,21 +136,6 @@ QString SettingsPage::displayName() const
     return tr("Perforce");
 }
 
-QString SettingsPage::category() const
-{
-    return QLatin1String(VCSBase::Constants::VCS_SETTINGS_CATEGORY);
-}
-
-QString SettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("VCSBase", VCSBase::Constants::VCS_SETTINGS_TR_CATEGORY);
-}
-
-QIcon SettingsPage::categoryIcon() const
-{
-    return QIcon(); // TODO: Icon for Version Control
-}
-
 QWidget *SettingsPage::createPage(QWidget *parent)
 {
     m_widget = new SettingsPageWidget(parent);
diff --git a/src/plugins/perforce/settingspage.h b/src/plugins/perforce/settingspage.h
index 6d10556c68e11064106aa0e3ceb03b841b7e8568..a452336d47cea6e7627f8be25cfb79ef4974036b 100644
--- a/src/plugins/perforce/settingspage.h
+++ b/src/plugins/perforce/settingspage.h
@@ -33,7 +33,7 @@
 #include <QtCore/QPointer>
 #include <QtGui/QWidget>
 
-#include <coreplugin/dialogs/ioptionspage.h>
+#include <vcsbase/vcsbaseoptionspage.h>
 
 #include "ui_settingspage.h"
 
@@ -44,8 +44,10 @@ class PerforceSettings;
 class PerforceChecker;
 struct Settings;
 
-class SettingsPageWidget : public QWidget {
+class SettingsPageWidget : public QWidget
+{
     Q_OBJECT
+
 public:
     explicit SettingsPageWidget(QWidget *parent);
 
@@ -66,7 +68,7 @@ private:
     QPointer<PerforceChecker> m_checker;
 };
 
-class SettingsPage : public Core::IOptionsPage
+class SettingsPage : public VCSBase::VCSBaseOptionsPage
 {
     Q_OBJECT
 
@@ -75,9 +77,6 @@ public:
 
     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/subversion/settingspage.cpp b/src/plugins/subversion/settingspage.cpp
index 36145ccb5a7bdaf7c10c218d2d4732ee62a90486..0583fe3c472ffbecfeec401ef99c04a0675cf7b6 100644
--- a/src/plugins/subversion/settingspage.cpp
+++ b/src/plugins/subversion/settingspage.cpp
@@ -106,21 +106,6 @@ QString SettingsPage::displayName() const
     return tr("Subversion");
 }
 
-QString SettingsPage::category() const
-{
-    return QLatin1String(VCSBase::Constants::VCS_SETTINGS_CATEGORY);
-}
-
-QString SettingsPage::displayCategory() const
-{
-    return QCoreApplication::translate("VCSBase", VCSBase::Constants::VCS_SETTINGS_TR_CATEGORY);
-}
-
-QIcon SettingsPage::categoryIcon() const
-{
-    return QIcon(); // TODO: Icon for Version Control
-}
-
 QWidget *SettingsPage::createPage(QWidget *parent)
 {
     m_widget = new SettingsPageWidget(parent);
diff --git a/src/plugins/subversion/settingspage.h b/src/plugins/subversion/settingspage.h
index cdbf809536d1e541d78699bb152104a3a8fc933a..fd422344f5d87a1692522709ce075e9628f7ac12 100644
--- a/src/plugins/subversion/settingspage.h
+++ b/src/plugins/subversion/settingspage.h
@@ -32,7 +32,7 @@
 
 #include "ui_settingspage.h"
 
-#include <coreplugin/dialogs/ioptionspage.h>
+#include <vcsbase/vcsbaseoptionspage.h>
 
 #include <QtGui/QWidget>
 #include <QtCore/QPointer>
@@ -47,8 +47,10 @@ namespace Internal {
 
 struct SubversionSettings;
 
-class SettingsPageWidget : public QWidget {
+class SettingsPageWidget : public QWidget
+{
     Q_OBJECT
+
 public:
     explicit SettingsPageWidget(QWidget *parent = 0);
 
@@ -62,7 +64,7 @@ private:
 };
 
 
-class SettingsPage : public Core::IOptionsPage
+class SettingsPage : public VCSBase::VCSBaseOptionsPage
 {
     Q_OBJECT
 
@@ -71,9 +73,6 @@ public:
 
     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/vcsbase/commonsettingspage.cpp b/src/plugins/vcsbase/commonsettingspage.cpp
index b300c950622e55a32ed67308c57a19dc22b8ce87..d9d2ffb1511e709fc05776aaad9f11040b2af009 100644
--- a/src/plugins/vcsbase/commonsettingspage.cpp
+++ b/src/plugins/vcsbase/commonsettingspage.cpp
@@ -94,7 +94,7 @@ QString CommonSettingsWidget::searchKeyWordMatchString() const
 
 // --------------- VCSBaseSettingsPage
 CommonOptionsPage::CommonOptionsPage(QObject *parent) :
-    Core::IOptionsPage(parent)
+    VCSBaseOptionsPage(parent)
 {
     m_settings.fromSettings(Core::ICore::instance()->settings());
 }
@@ -117,21 +117,6 @@ QString CommonOptionsPage::displayName() const
     return QCoreApplication::translate("VCSBase", Constants::VCS_COMMON_SETTINGS_NAME);
 }
 
-QString CommonOptionsPage::category() const
-{
-    return QLatin1String(Constants::VCS_SETTINGS_CATEGORY);
-}
-
-QString CommonOptionsPage::displayCategory() const
-{
-    return QCoreApplication::translate("VCSBase", Constants::VCS_SETTINGS_TR_CATEGORY);
-}
-
-QIcon CommonOptionsPage::categoryIcon() const
-{
-    return QIcon(); // TODO: Icon for Version Control
-}
-
 QWidget *CommonOptionsPage::createPage(QWidget *parent)
 {
     m_widget = new CommonSettingsWidget(parent);
diff --git a/src/plugins/vcsbase/commonsettingspage.h b/src/plugins/vcsbase/commonsettingspage.h
index ea478760292c59430a769b85ee24024e9aed706c..b944305f38a797121471d22b770f3fe30538246d 100644
--- a/src/plugins/vcsbase/commonsettingspage.h
+++ b/src/plugins/vcsbase/commonsettingspage.h
@@ -32,7 +32,8 @@
 
 #include "commonvcssettings.h"
 
-#include <coreplugin/dialogs/ioptionspage.h>
+#include "vcsbaseoptionspage.h"
+
 #include <QtCore/QPointer>
 #include <QtGui/QWidget>
 
@@ -48,6 +49,7 @@ namespace Internal {
 class CommonSettingsWidget : public QWidget
 {
     Q_OBJECT
+
 public:
     explicit CommonSettingsWidget(QWidget *parent = 0);
     virtual ~CommonSettingsWidget();
@@ -61,18 +63,16 @@ private:
     Ui::CommonSettingsPage *m_ui;
 };
 
-class CommonOptionsPage : public Core::IOptionsPage
+class CommonOptionsPage : public VCSBaseOptionsPage
 {
     Q_OBJECT
+
 public:
     explicit CommonOptionsPage(QObject *parent = 0);
     virtual ~CommonOptionsPage();
 
     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();
diff --git a/src/plugins/vcsbase/vcsbase.pro b/src/plugins/vcsbase/vcsbase.pro
index 2f3c1c0be6f11acdefad54370aee477e47b3f3c4..acf42be106cd7848bbe3e8fc1e20c2999a0cf439 100644
--- a/src/plugins/vcsbase/vcsbase.pro
+++ b/src/plugins/vcsbase/vcsbase.pro
@@ -26,7 +26,8 @@ HEADERS += vcsbase_global.h \
     checkoutjobs.h \
     basecheckoutwizardpage.h \
     vcsbaseoutputwindow.h \
-    cleandialog.h
+    cleandialog.h \
+    vcsbaseoptionspage.h
 
 SOURCES += vcsplugin.cpp \
     vcsbaseplugin.cpp \
@@ -49,7 +50,8 @@ SOURCES += vcsplugin.cpp \
     checkoutjobs.cpp \
     basecheckoutwizardpage.cpp \
     vcsbaseoutputwindow.cpp \
-    cleandialog.cpp
+    cleandialog.cpp \
+    vcsbaseoptionspage.cpp
 
 RESOURCES += vcsbase.qrc
 
diff --git a/src/plugins/vcsbase/vcsbaseoptionspage.cpp b/src/plugins/vcsbase/vcsbaseoptionspage.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d5a025b7226f2f6a3e0a6dd5faa2376add2b9848
--- /dev/null
+++ b/src/plugins/vcsbase/vcsbaseoptionspage.cpp
@@ -0,0 +1,58 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "vcsbaseoptionspage.h"
+
+#include "vcsbaseconstants.h"
+
+#include <QCoreApplication>
+
+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(); // TODO: Icon for Version Control
+}
+
+} // namespace VCSBase
diff --git a/src/plugins/vcsbase/vcsbaseoptionspage.h b/src/plugins/vcsbase/vcsbaseoptionspage.h
new file mode 100644
index 0000000000000000000000000000000000000000..25c07f290b387e46429ba7d12905d7e8b7f0630e
--- /dev/null
+++ b/src/plugins/vcsbase/vcsbaseoptionspage.h
@@ -0,0 +1,56 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef VCSBASEOPTIONSPAGE_H
+#define VCSBASEOPTIONSPAGE_H
+
+#include <coreplugin/dialogs/ioptionspage.h>
+
+#include "vcsbase_global.h"
+
+namespace VCSBase {
+
+/**
+ * An abstract options page in the Version Control category.
+ */
+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
+
+#endif // VCSBASEOPTIONSPAGE_H