diff --git a/src/plugins/help/filtersettingspage.cpp b/src/plugins/help/filtersettingspage.cpp
index d4429133a34d75d8e80577353a1995eed7eee9d1..bcff6a1a74b66c8106cd06428f6e77e9a67c6157 100644
--- a/src/plugins/help/filtersettingspage.cpp
+++ b/src/plugins/help/filtersettingspage.cpp
@@ -31,7 +31,6 @@
 
 #include "filternamedialog.h"
 #include "helpconstants.h"
-#include "helpmanager.h"
 
 #include <coreplugin/helpmanager.h>
 
@@ -40,12 +39,9 @@
 #include <QtGui/QFileDialog>
 #include <QtGui/QMessageBox>
 
-#include <QtHelp/QHelpEngine>
-
 using namespace Help::Internal;
 
 FilterSettingsPage::FilterSettingsPage()
-    : m_helpManager(0)
 {
 }
 
@@ -79,8 +75,7 @@ QWidget *FilterSettingsPage::createPage(QWidget *parent)
     QWidget *widget = new QWidget(parent);
     m_ui.setupUi(widget);
 
-    m_helpManager->setupGuiHelpEngine();
-    updateFilterPage(); // does call setupData on the engine
+    updateFilterPage();
 
     connect(m_ui.attributeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)),
         this, SLOT(updateFilterMap()));
@@ -109,25 +104,28 @@ void FilterSettingsPage::updateFilterPage()
 
     QString lastTrUnfiltered;
     const QString trUnfiltered = tr("Unfiltered");
-    const QHelpEngineCore &engine = LocalHelpManager::helpEngine();
-    if (engine.customValue(Help::Constants::WeAddedFilterKey).toInt() == 1) {
+    Core::HelpManager *manager = Core::HelpManager::instance();
+    if (manager->customValue(Help::Constants::WeAddedFilterKey).toInt() == 1) {
         lastTrUnfiltered =
-            engine.customValue(Help::Constants::PreviousFilterNameKey).toString();
+            manager->customValue(Help::Constants::PreviousFilterNameKey).toString();
     }
 
-    const QStringList &filters = engine.customFilters();
-    foreach (const QString &filter, filters) {
+    QSet<QString> attributes;
+    const Core::HelpManager::Filters &filters = manager->filters();
+
+    Core::HelpManager::Filters::const_iterator it;
+    for (it = filters.constBegin(); it != filters.constEnd(); ++it) {
+        const QString &filter = it.key();
         if (filter == trUnfiltered || filter == lastTrUnfiltered)
             continue;
 
-        const QStringList &attributes = engine.filterAttributes(filter);
-        m_filterMapBackup.insert(filter, attributes);
+        attributes += it.value().toSet();
+        m_filterMapBackup.insert(filter, it.value());
         if (!m_filterMap.contains(filter))
-            m_filterMap.insert(filter, attributes);
+            m_filterMap.insert(filter, it.value());
     }
     m_ui.filterWidget->addItems(m_filterMap.keys());
 
-    const QStringList &attributes = engine.filterAttributes();
     foreach (const QString &attribute, attributes)
         new QTreeWidgetItem(m_ui.attributeWidget, QStringList(attribute));
 
@@ -227,13 +225,13 @@ void FilterSettingsPage::apply()
     }
 
     if (changed) {
-        QHelpEngineCore *engine = &LocalHelpManager::helpEngine();
+        Core::HelpManager *manager = Core::HelpManager::instance();
         foreach (const QString &filter, m_removedFilters)
-           engine->removeCustomFilter(filter);
+           manager->removeUserDefinedFilter(filter);
 
         FilterMap::const_iterator it;
         for (it = m_filterMap.constBegin(); it != m_filterMap.constEnd(); ++it)
-            engine->addCustomFilter(it.key(), it.value());
+            manager->addUserDefinedFilter(it.key(), it.value());
 
         // emit this signal to the help plugin, since we don't want
         // to force gui help engine setup if we are not in help mode
@@ -245,8 +243,3 @@ bool FilterSettingsPage::matches(const QString &s) const
 {
     return m_searchKeywords.contains(s, Qt::CaseInsensitive);
 }
-
-void FilterSettingsPage::setHelpManager(LocalHelpManager *manager)
-{
-    m_helpManager = manager;
-}
diff --git a/src/plugins/help/filtersettingspage.h b/src/plugins/help/filtersettingspage.h
index 96b2a57778d1ad42e63a4db9d0ea66232e9fe8cf..b8f74d5359d97860b71a2c9dd7a276c2c557a2aa 100644
--- a/src/plugins/help/filtersettingspage.h
+++ b/src/plugins/help/filtersettingspage.h
@@ -36,8 +36,6 @@
 namespace Help {
 namespace Internal {
 
-class LocalHelpManager;
-
 class FilterSettingsPage : public Core::IOptionsPage
 {
     Q_OBJECT
@@ -57,8 +55,6 @@ public:
     void finish() {}
     virtual bool matches(const QString &s) const;
 
-    void setHelpManager(LocalHelpManager *manager);
-
 signals:
     void filtersChanged();
 
@@ -77,8 +73,6 @@ private:
 
     QString m_searchKeywords;
     QStringList m_removedFilters;
-
-    LocalHelpManager *m_helpManager;
 };
 
 } // namespace Help
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index 6964afe233782639daf8b303ff4b657614acd1c4..dc6fa523ae251a3592fca56264bca46886351d7c 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -161,7 +161,7 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
         SLOT(contextHelpOptionChanged()));
     connect(Core::HelpManager::instance(), SIGNAL(helpRequested(QUrl)), this,
         SLOT(handleHelpRequest(QUrl)));
-    m_filterSettingsPage->setHelpManager(m_helpManager);
+
     connect(m_filterSettingsPage, SIGNAL(filtersChanged()), this,
         SLOT(setupHelpEngineIfNeeded()));
     connect(Core::HelpManager::instance(), SIGNAL(documentationChanged()), this,