diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp
index 2703f9a810352738b65b740556b48601a1d55b1d..9fc8b81141f524d758b75a7ea628ecaee93a32c6 100644
--- a/src/plugins/help/generalsettingspage.cpp
+++ b/src/plugins/help/generalsettingspage.cpp
@@ -108,10 +108,12 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent)
     }
     m_ui.homePageLineEdit->setText(m_homePage);
 
-    int startOption = engine.customValue(QLatin1String("StartOption"), 2).toInt();
+    const int startOption = engine.customValue(QLatin1String("StartOption"),
+        Help::Constants::ShowLastPages).toInt();
     m_ui.helpStartComboBox->setCurrentIndex(startOption);
 
-    int helpOption = engine.customValue(QLatin1String("ContextHelpOption"), 0).toInt();
+    const int helpOption = engine.customValue(QLatin1String("ContextHelpOption"),
+        Help::Constants::SideBySideIfPossible).toInt();
     m_ui.contextHelpComboBox->setCurrentIndex(helpOption);
 
     connect(m_ui.currentPageButton, SIGNAL(clicked()), this, SLOT(setCurrentPage()));
@@ -179,8 +181,6 @@ void GeneralSettingsPage::apply()
 
     const int helpOption = m_ui.contextHelpComboBox->currentIndex();
     engine->setCustomValue(QLatin1String("ContextHelpOption"), helpOption);
-
-    // no need to call setup on the gui engine since we use only core engine
 }
 
 void GeneralSettingsPage::setCurrentPage()
diff --git a/src/plugins/help/helpconstants.h b/src/plugins/help/helpconstants.h
index b44fdf9b9253badffcfba1f9b08785b6fee11025..32606ec3d2e4fb8154e2209cc40dc43c5ae65fe8 100644
--- a/src/plugins/help/helpconstants.h
+++ b/src/plugins/help/helpconstants.h
@@ -41,6 +41,13 @@ enum {
     ShowLastPages = 2
 };
 
+enum {
+    SideBySideIfPossible = 0,
+    SideBySideAlways = 1,
+    FullHelpAlways = 2,
+    ExternalHelpAlways = 3
+};
+
 static const QLatin1String ListSeparator("|");
 static const QLatin1String DefaultZoomFactor("0.0");
 static const QLatin1String AboutBlank("about:blank");
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index 1e012d6146df1c6b5cf13f646265305ddb22603f..f009ba5bfc1528afaf45cd172bf038acccae8cbe 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -580,16 +580,7 @@ void HelpPlugin::modeChanged(Core::IMode *mode, Core::IMode *old)
     Q_UNUSED(old)
     if (mode == m_mode) {
         qApp->setOverrideCursor(Qt::WaitCursor);
-        if (m_firstModeChange) {
-            qApp->processEvents();
-            m_helpManager->setupGuiHelpEngine();
-            setupUi();
-            resetFilter();
-            m_firstModeChange = false;
-            OpenPagesManager::instance().setupInitialPages();
-        } else {
-            m_helpManager->setupGuiHelpEngine();
-        }
+        setup();
         qApp->restoreOverrideCursor();
     }
 }
@@ -643,10 +634,9 @@ HelpViewer* HelpPlugin::viewerForContextMode()
     using namespace Core;
 
     bool showSideBySide = false;
-    const QHelpEngineCore &engine = LocalHelpManager::helpEngine();
     RightPanePlaceHolder *placeHolder = RightPanePlaceHolder::current();
-    switch (engine.customValue(QLatin1String("ContextHelpOption"), 0).toInt()) {
-        case 0: {
+    switch (contextHelpOption()) {
+        case Help::Constants::SideBySideIfPossible: {
             // side by side if possible
             if (IEditor *editor = EditorManager::instance()->currentEditor()) {
                 if (!placeHolder || !placeHolder->isVisible()) {
@@ -659,7 +649,7 @@ HelpViewer* HelpPlugin::viewerForContextMode()
                 }
             }
         }   // fall through
-        case 1: {
+        case Help::Constants::SideBySideAlways: {
             // side by side
             showSideBySide = true;
         }   break;
@@ -901,4 +891,23 @@ void HelpPlugin::handleHelpRequest(const QUrl &url)
     }
 }
 
+void HelpPlugin::setup()
+{
+    m_helpManager->setupGuiHelpEngine();
+    if (m_firstModeChange) {
+        qApp->processEvents();
+        setupUi();
+        resetFilter();
+        m_firstModeChange = false;
+        OpenPagesManager::instance().setupInitialPages();
+    }
+}
+
+int HelpPlugin::contextHelpOption() const
+{
+    const QHelpEngineCore &engine = LocalHelpManager::helpEngine();
+    return engine.customValue(QLatin1String("ContextHelpOption"),
+        Help::Constants::SideBySideIfPossible).toInt();
+}
+
 Q_EXPORT_PLUGIN(HelpPlugin)
diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h
index c25f55189d1e172977a12de4c53723d7452ca130..a56adbbc5735b195a8e48b2b203bf673099d8503 100644
--- a/src/plugins/help/helpplugin.h
+++ b/src/plugins/help/helpplugin.h
@@ -108,6 +108,9 @@ private:
     HelpViewer* viewerForContextMode();
     void createRightPaneContextViewer();
 
+    void setup();
+    int contextHelpOption() const;
+
 private:
     HelpMode *m_mode;
     Core::ICore *m_core;