diff --git a/shared/cplusplus/AST.cpp b/shared/cplusplus/AST.cpp
index 11be99ea48a1257371a3a584e5894b9669c55ca1..6889ba6fa8cd4d4ecc4ca8a5ea341f7c0f48e3cd 100644
--- a/shared/cplusplus/AST.cpp
+++ b/shared/cplusplus/AST.cpp
@@ -117,6 +117,9 @@ CatchClauseAST *AST::asCatchClause()
 ClassSpecifierAST *AST::asClassSpecifier()
 { return dynamic_cast<ClassSpecifierAST *>(this); }
 
+CompoundLiteralAST *AST::asCompoundLiteral()
+{ return dynamic_cast<CompoundLiteralAST *>(this); }
+
 CompoundStatementAST *AST::asCompoundStatement()
 { return dynamic_cast<CompoundStatementAST *>(this); }
 
@@ -774,6 +777,42 @@ unsigned BoolLiteralAST::lastToken() const
     return token + 1;
 }
 
+CompoundLiteralAST *CompoundLiteralAST::clone(MemoryPool *pool) const
+{
+    CompoundLiteralAST *ast = new (pool) CompoundLiteralAST;
+    ast->lparen_token = lparen_token;
+    if (type_id)
+        ast->type_id = type_id->clone(pool);
+    ast->rparen_token = rparen_token;
+    if (initializer)
+        ast->initializer = initializer->clone(pool);
+    return ast;
+}
+
+void CompoundLiteralAST::accept0(ASTVisitor *visitor)
+{
+    if (visitor->visit(this)) {
+        accept(type_id, visitor);
+        accept(initializer, visitor);
+    }
+}
+
+unsigned CompoundLiteralAST::firstToken() const
+{
+    return lparen_token;
+}
+
+unsigned CompoundLiteralAST::lastToken() const
+{
+    if (initializer)
+        return initializer->lastToken();
+    else if (rparen_token)
+        return rparen_token + 1;
+    else if (type_id)
+        return type_id->lastToken();
+    return lparen_token + 1;
+}
+
 BreakStatementAST *BreakStatementAST::clone(MemoryPool *pool) const
 {
     BreakStatementAST *ast = new (pool) BreakStatementAST;
diff --git a/shared/cplusplus/AST.h b/shared/cplusplus/AST.h
index 6607e76805b8072094d40bc4f43551d34ff57920..46322fdd6bcc259dde5653223d20f7da45a81598 100644
--- a/shared/cplusplus/AST.h
+++ b/shared/cplusplus/AST.h
@@ -94,6 +94,7 @@ public:
     CastExpressionAST *asCastExpression();
     CatchClauseAST *asCatchClause();
     ClassSpecifierAST *asClassSpecifier();
+    CompoundLiteralAST *asCompoundLiteral();
     CompoundStatementAST *asCompoundStatement();
     ConditionAST *asCondition();
     ConditionalExpressionAST *asConditionalExpression();
@@ -429,6 +430,24 @@ protected:
     virtual void accept0(ASTVisitor *visitor);
 };
 
+class CPLUSPLUS_EXPORT CompoundLiteralAST: public ExpressionAST
+{
+public:
+    unsigned lparen_token;
+    ExpressionAST *type_id;
+    unsigned rparen_token;
+    ExpressionAST *initializer;
+
+public:
+    virtual unsigned firstToken() const;
+    virtual unsigned lastToken() const;
+
+    virtual CompoundLiteralAST *clone(MemoryPool *pool) const;
+
+protected:
+    virtual void accept0(ASTVisitor *visitor);
+};
+
 class CPLUSPLUS_EXPORT QtMethodAST: public ExpressionAST
 {
 public:
diff --git a/shared/cplusplus/ASTVisitor.h b/shared/cplusplus/ASTVisitor.h
index 28097c14f704af8151d5a5a76c63f8d3b6458d93..e7a9aed158415b8ecdf8013dcb68f14d9215bb12 100644
--- a/shared/cplusplus/ASTVisitor.h
+++ b/shared/cplusplus/ASTVisitor.h
@@ -104,6 +104,7 @@ public:
     virtual bool visit(CastExpressionAST *) { return true; }
     virtual bool visit(CatchClauseAST *) { return true; }
     virtual bool visit(ClassSpecifierAST *) { return true; }
+    virtual bool visit(CompoundLiteralAST *) { return true; }
     virtual bool visit(CompoundStatementAST *) { return true; }
     virtual bool visit(ConditionAST *) { return true; }
     virtual bool visit(ConditionalExpressionAST *) { return true; }
diff --git a/shared/cplusplus/ASTfwd.h b/shared/cplusplus/ASTfwd.h
index 79f794f629ed7c90235ba29911c7d3e57f710418..db68992e0224f11eebb881e4caf2321f83a0ecc6 100644
--- a/shared/cplusplus/ASTfwd.h
+++ b/shared/cplusplus/ASTfwd.h
@@ -77,6 +77,7 @@ class CaseStatementAST;
 class CastExpressionAST;
 class CatchClauseAST;
 class ClassSpecifierAST;
+class CompoundLiteralAST;
 class CompoundStatementAST;
 class ConditionAST;
 class ConditionalExpressionAST;
diff --git a/shared/cplusplus/CheckExpression.cpp b/shared/cplusplus/CheckExpression.cpp
index 9976cbf500e874e448cbf4eae1930d139d62cebb..d5d88c3857204152a565a54df8ba41d3e4d39872 100644
--- a/shared/cplusplus/CheckExpression.cpp
+++ b/shared/cplusplus/CheckExpression.cpp
@@ -333,6 +333,13 @@ bool CheckExpression::visit(QtMethodAST *ast)
     return false;
 }
 
+bool CheckExpression::visit(CompoundLiteralAST *ast)
+{
+    /*FullySpecifiedType exprTy = */ semantic()->check(ast->type_id, _scope);
+    /*FullySpecifiedType initTy = */ semantic()->check(ast->initializer, _scope);
+    return false;
+}
+
 bool CheckExpression::visit(CallAST *ast)
 {
     for (ExpressionListAST *it = ast->expression_list; it; it = it->next) {
diff --git a/shared/cplusplus/CheckExpression.h b/shared/cplusplus/CheckExpression.h
index e018e7dc89bca032777ed6d4f942a5aa5608126a..f5c9e7c8e9438989d8294753cd9e857cd006bbd9 100644
--- a/shared/cplusplus/CheckExpression.h
+++ b/shared/cplusplus/CheckExpression.h
@@ -98,6 +98,7 @@ protected:
     virtual bool visit(TypeIdAST *ast);
     virtual bool visit(UnaryExpressionAST *ast);
     virtual bool visit(QtMethodAST *ast);
+    virtual bool visit(CompoundLiteralAST *ast);
 
     //names
     virtual bool visit(QualifiedNameAST *ast);
diff --git a/shared/cplusplus/Parser.cpp b/shared/cplusplus/Parser.cpp
index 407cbc36fd8530b797cee2f181ae1708dcc988d3..d5fe83703dce5e1476a8889e0d77571fc81bf309 100644
--- a/shared/cplusplus/Parser.cpp
+++ b/shared/cplusplus/Parser.cpp
@@ -1621,8 +1621,7 @@ bool Parser::parseInitializerClause(ExpressionAST *&node)
         ArrayInitializerAST *ast = new (_pool) ArrayInitializerAST;
         ast->lbrace_token = consumeToken();
         parseInitializerList(ast->expression_list);
-        if (LA() == T_RBRACE)
-            ast->rbrace_token = consumeToken();
+        match(T_RBRACE, &ast->rbrace_token);
         node = ast;
         return true;
     }
@@ -2702,8 +2701,30 @@ bool Parser::parseCorePostfixExpression(ExpressionAST *&node)
                 return true;
             }
         }
-        blockErrors(blocked);
         rewind(start);
+
+        // look for compound literals
+        if (LA() == T_LPAREN) {
+            unsigned lparen_token = consumeToken();
+            ExpressionAST *type_id = 0;
+            if (parseTypeId(type_id) && LA() == T_RPAREN) {
+                unsigned rparen_token = consumeToken();
+                if (LA() == T_LBRACE) {
+                    blockErrors(blocked);
+
+                    CompoundLiteralAST *ast = new (_pool) CompoundLiteralAST;
+                    ast->lparen_token = lparen_token;
+                    ast->type_id = type_id;
+                    ast->rparen_token = rparen_token;
+                    parseInitializerClause(ast->initializer);
+                    node = ast;
+                    return true;
+                }
+            }
+            rewind(start);
+        }
+
+        blockErrors(blocked);
         return parsePrimaryExpression(node);
     }
 }
@@ -3552,6 +3573,9 @@ bool Parser::parseObjClassInstanceVariables()
 bool Parser::parseObjCInterfaceMemberDeclaration()
 {
     switch (LA()) {
+    case T_AT_END:
+        return false;
+
     case T_AT_REQUIRED:
     case T_AT_OPTIONAL:
         consumeToken();
@@ -3570,9 +3594,20 @@ bool Parser::parseObjCInterfaceMemberDeclaration()
     case T_MINUS:
         return parseObjCMethodPrototype();
 
-    default:
-        return false;
+    case T_ENUM:
+    case T_CLASS:
+    case T_STRUCT:
+    case T_UNION: {
+        DeclarationAST *declaration = 0;
+        return parseSimpleDeclaration(declaration, /*accept struct declarators */ true);
     }
+
+    default: {
+        DeclarationAST *declaration = 0;
+        return parseSimpleDeclaration(declaration, /*accept struct declarators */ true);
+    } // default
+
+    } // switch
 }
 
 // objc-instance-variable-declaration ::= objc-visibility-specifier
@@ -3589,7 +3624,7 @@ bool Parser::parseObjCInstanceVariableDeclaration(DeclarationAST *&node)
         return true;
 
     default:
-        return parseBlockDeclaration(node);
+        return parseSimpleDeclaration(node, true);
     }
 }
 
@@ -3612,7 +3647,7 @@ bool Parser::parseObjCPropertyDeclaration(DeclarationAST *&, SpecifierAST *)
     }
 
     DeclarationAST *simple_declaration = 0;
-    parseSimpleDeclaration(simple_declaration, /*accept-struct-declarators = */ false);
+    parseSimpleDeclaration(simple_declaration, /*accept-struct-declarators = */ true);
     return true;
 }
 
@@ -3736,6 +3771,19 @@ bool Parser::parseObjCKeywordDeclaration()
 
 bool Parser::parseObjCTypeQualifiers()
 {
+    if (LA() != T_IDENTIFIER)
+        return false;
+
+    Identifier *id = tok().identifier;
+    if (! strcmp("in", id->chars())  ||
+        ! strcmp("out", id->chars()) ||
+        ! strcmp("inout", id->chars()) ||
+        ! strcmp("bycopy", id->chars()) ||
+        ! strcmp("byref", id->chars()) ||
+        ! strcmp("oneway", id->chars())) {
+        consumeToken();
+        return true;
+    }
     return false;
 }
 
diff --git a/shared/cplusplus/PrettyPrinter.cpp b/shared/cplusplus/PrettyPrinter.cpp
index 72338576b6b25665a6154cf6bf4090ede03592d9..af80cee197ea98ffb9287a0a04ce25fdf132d9c9 100644
--- a/shared/cplusplus/PrettyPrinter.cpp
+++ b/shared/cplusplus/PrettyPrinter.cpp
@@ -1281,3 +1281,13 @@ bool PrettyPrinter::visit(QtMethodAST *ast)
     out << ')';
     return false;
 }
+
+bool PrettyPrinter::visit(CompoundLiteralAST *ast)
+{
+    out << '(';
+    accept(ast->type_id);
+    out << ')';
+    out << ' ';
+    accept(ast->initializer);
+    return false;
+}
diff --git a/shared/cplusplus/PrettyPrinter.h b/shared/cplusplus/PrettyPrinter.h
index 966ebacd0e60c65326f5743e094497128642ef12..fc59100a3c146b2afe142a3c1fb72a1d8ee6f209 100644
--- a/shared/cplusplus/PrettyPrinter.h
+++ b/shared/cplusplus/PrettyPrinter.h
@@ -66,6 +66,7 @@ protected:
     virtual bool visit(CastExpressionAST *ast);
     virtual bool visit(CatchClauseAST *ast);
     virtual bool visit(ClassSpecifierAST *ast);
+    virtual bool visit(CompoundLiteralAST *ast);
     virtual bool visit(CompoundStatementAST *ast);
     virtual bool visit(ConditionAST *ast);
     virtual bool visit(ConditionalExpressionAST *ast);
diff --git a/src/plugins/bineditor/bineditorplugin.cpp b/src/plugins/bineditor/bineditorplugin.cpp
index ff07d5e876e2c86e6da8bd54fa0b7fb936436be7..b5d4c1d9043c471071d9dbedc85b2b20cb8274d4 100644
--- a/src/plugins/bineditor/bineditorplugin.cpp
+++ b/src/plugins/bineditor/bineditorplugin.cpp
@@ -46,7 +46,7 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/mimedatabase.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <texteditor/texteditorsettings.h>
 #include <texteditor/fontsettings.h>
diff --git a/src/plugins/bookmarks/bookmarksplugin.cpp b/src/plugins/bookmarks/bookmarksplugin.cpp
index 63fbb1c2eefe75d4281ad136a45cdede71b7bd53..c926f868f88255d749dfcb20e5ad9671ac399905 100644
--- a/src/plugins/bookmarks/bookmarksplugin.cpp
+++ b/src/plugins/bookmarks/bookmarksplugin.cpp
@@ -42,7 +42,7 @@
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 
 #include <QtCore/qplugin.h>
 #include <QtCore/QDebug>
@@ -68,7 +68,7 @@ void BookmarksPlugin::extensionsInitialized()
 bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *)
 {
     m_core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>();
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
 
     QList<int> context = QList<int>() << m_core->uniqueIDManager()->
         uniqueIdentifier(Constants::BOOKMARKS_CONTEXT);
diff --git a/src/plugins/coreplugin/actionmanager/actioncontainer.cpp b/src/plugins/coreplugin/actionmanager/actioncontainer.cpp
index bec545cc2627e71c9fa897b226aaaefbf50e4192..3e5ec9c4f7e9ff37ff4fcdb6e3142e66885c1013 100644
--- a/src/plugins/coreplugin/actionmanager/actioncontainer.cpp
+++ b/src/plugins/coreplugin/actionmanager/actioncontainer.cpp
@@ -32,6 +32,8 @@
 ***************************************************************************/
 
 #include "actioncontainer.h"
+#include "actionmanager_p.h"
+
 #include "command.h"
 #include "coreimpl.h"
 
@@ -181,7 +183,7 @@ void ActionContainer::appendGroup(const QString &group, bool global)
     int gid = idmanager->uniqueIdentifier(group);
     m_groups << gid;
     if (global)
-        ActionManager::instance()->registerGlobalGroup(gid, m_id);
+        ActionManagerPrivate::instance()->registerGlobalGroup(gid, m_id);
 }
 
 /*!
@@ -220,7 +222,7 @@ void ActionContainer::addAction(ICommand *action, const QString &group)
     if (!canAddAction(action))
         return;
 
-    ActionManager *am = ActionManager::instance();
+    ActionManagerPrivate *am = ActionManagerPrivate::instance();
     Action *a = static_cast<Action *>(action);
     if (a->stateFlags() & Command::CS_PreLocation) {
         QList<CommandLocation> locs = a->locations();
@@ -251,7 +253,7 @@ void ActionContainer::addMenu(IActionContainer *menu, const QString &group)
     if (!canAddMenu(menu))
         return;
 
-    ActionManager *am = ActionManager::instance();
+    ActionManagerPrivate *am = ActionManagerPrivate::instance();
     MenuActionContainer *mc = static_cast<MenuActionContainer *>(menu);
     if (mc->hasState(ActionContainer::CS_PreLocation)) {
         CommandLocation loc = mc->location();
@@ -396,7 +398,7 @@ void ActionContainer::addMenu(IActionContainer *menu, int pos, bool setpos)
 */
 QAction *ActionContainer::beforeAction(int pos, int *prevKey) const
 {
-    ActionManager *am = ActionManager::instance();
+    ActionManagerPrivate *am = ActionManagerPrivate::instance();
 
     int baId = -1;
 
diff --git a/src/plugins/coreplugin/actionmanager/actioncontainer.h b/src/plugins/coreplugin/actionmanager/actioncontainer.h
index 6d116426f203930228d7d7bf3e521d221455d044..de9217834e5cee15d900dfe6a008911fb2398811 100644
--- a/src/plugins/coreplugin/actionmanager/actioncontainer.h
+++ b/src/plugins/coreplugin/actionmanager/actioncontainer.h
@@ -34,7 +34,7 @@
 #ifndef ACTIONCONTAINER_H
 #define ACTIONCONTAINER_H
 
-#include "actionmanager.h"
+#include "actionmanager_p.h"
 
 #include <coreplugin/actionmanager/iactioncontainer.h>
 #include <coreplugin/actionmanager/icommand.h>
diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp
index bc43374f0e463beee84403254c993e9368e9670f..889bb9eafe6dfa78e382c6e0c946270b2e9fabda 100644
--- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp
+++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp
@@ -31,7 +31,7 @@
 **
 ***************************************************************************/
 
-#include "actionmanager.h"
+#include "actionmanager_p.h"
 #include "mainwindow.h"
 #include "actioncontainer.h"
 #include "command.h"
@@ -52,15 +52,15 @@ namespace {
 }
 
 /*!
-    \class Core::ActionManagerInterface
+    \class Core::ActionManager
     \mainclass
     \ingroup qwb
-    \inheaderfile actionmanagerinterface.h
+    \inheaderfile actionmanager.h
 
     \brief All actions should be registered in the ActionManager, since this enables the user to
     e.g. change their shortcuts at a central place.
 
-    The ActionManagerInterface is the central bookkeeper of actions and their shortcuts and layout.
+    The ActionManager is the central bookkeeper of actions and their shortcuts and layout.
     You get the only implementation of this class from the core interface (ICore::actionManager()).
 
     The main reasons for the need of this class is to provide a central place where the user
@@ -94,59 +94,59 @@ namespace {
 */
 
 /*!
-    \fn virtual IActionContainer *ActionManagerInterface::createMenu(const QString &id) = 0
+    \fn virtual IActionContainer *ActionManager::createMenu(const QString &id) = 0
     ...
 */
 
 /*!
-    \fn virtual IActionContainer *ActionManagerInterface::createMenuBar(const QString &id) = 0
+    \fn virtual IActionContainer *ActionManager::createMenuBar(const QString &id) = 0
     ...
 */
 
 /*!
-    \fn virtual ICommand *ActionManagerInterface::registerAction(QAction *action, const QString &id, const QList<int> &context) = 0
+    \fn virtual ICommand *ActionManager::registerAction(QAction *action, const QString &id, const QList<int> &context) = 0
     ...
 */
 
 /*!
-    \fn virtual ICommand *ActionManagerInterface::registerShortcut(QShortcut *shortcut, const QString &id, const QList<int> &context) = 0
+    \fn virtual ICommand *ActionManager::registerShortcut(QShortcut *shortcut, const QString &id, const QList<int> &context) = 0
     ...
 */
 
 /*!
-    \fn virtual ICommand *ActionManagerInterface::registerAction(QAction *action, const QString &id) = 0
+    \fn virtual ICommand *ActionManager::registerAction(QAction *action, const QString &id) = 0
     ...
 */
 
 /*!
-    \fn virtual void ActionManagerInterface::addAction(ICommand *action, const QString &globalGroup) = 0
+    \fn virtual void ActionManager::addAction(ICommand *action, const QString &globalGroup) = 0
     ...
 */
 
 /*!
-    \fn virtual void ActionManagerInterface::addMenu(IActionContainer *menu, const QString &globalGroup) = 0
+    \fn virtual void ActionManager::addMenu(IActionContainer *menu, const QString &globalGroup) = 0
     ...
 */
 
 /*!
-    \fn virtual ICommand *ActionManagerInterface::command(const QString &id) const = 0
+    \fn virtual ICommand *ActionManager::command(const QString &id) const = 0
     ...
 */
 
 /*!
-    \fn virtual IActionContainer *ActionManagerInterface::actionContainer(const QString &id) const = 0
+    \fn virtual IActionContainer *ActionManager::actionContainer(const QString &id) const = 0
     ...
 */
 
 /*!
-    \fn virtual ActionManagerInterface::~ActionManagerInterface()
+    \fn virtual ActionManager::~ActionManager()
     ...
 */
 
 using namespace Core;
 using namespace Core::Internal;
 
-ActionManager* ActionManager::m_instance = 0;
+ActionManagerPrivate* ActionManagerPrivate::m_instance = 0;
 
 /*!
     \class ActionManager
@@ -159,8 +159,8 @@ ActionManager* ActionManager::m_instance = 0;
 /*!
     ...
 */
-ActionManager::ActionManager(MainWindow *mainWnd, UniqueIDManager *uidmgr) :
-    ActionManagerInterface(mainWnd),
+ActionManagerPrivate::ActionManagerPrivate(MainWindow *mainWnd, UniqueIDManager *uidmgr) :
+    ActionManager(mainWnd),
     m_mainWnd(mainWnd)
 {
     m_defaultGroups << uidmgr->uniqueIdentifier(Constants::G_DEFAULT_ONE);
@@ -173,7 +173,7 @@ ActionManager::ActionManager(MainWindow *mainWnd, UniqueIDManager *uidmgr) :
 /*!
     ...
 */
-ActionManager::~ActionManager()
+ActionManagerPrivate::~ActionManagerPrivate()
 {
     qDeleteAll(m_idCmdMap.values());
     qDeleteAll(m_idContainerMap.values());
@@ -182,7 +182,7 @@ ActionManager::~ActionManager()
 /*!
     ...
 */
-ActionManager* ActionManager::instance()
+ActionManagerPrivate* ActionManagerPrivate::instance()
 {
     return m_instance;
 }
@@ -190,7 +190,7 @@ ActionManager* ActionManager::instance()
 /*!
     ...
 */
-QList<int> ActionManager::defaultGroups() const
+QList<int> ActionManagerPrivate::defaultGroups() const
 {
     return m_defaultGroups;
 }
@@ -198,7 +198,7 @@ QList<int> ActionManager::defaultGroups() const
 /*!
     ...
 */
-QList<Command *> ActionManager::commands() const
+QList<Command *> ActionManagerPrivate::commands() const
 {
     return m_idCmdMap.values();
 }
@@ -206,7 +206,7 @@ QList<Command *> ActionManager::commands() const
 /*!
     ...
 */
-QList<ActionContainer *> ActionManager::containers() const
+QList<ActionContainer *> ActionManagerPrivate::containers() const
 {
     return m_idContainerMap.values();
 }
@@ -214,7 +214,7 @@ QList<ActionContainer *> ActionManager::containers() const
 /*!
     ...
 */
-void ActionManager::registerGlobalGroup(int groupId, int containerId)
+void ActionManagerPrivate::registerGlobalGroup(int groupId, int containerId)
 {
     if (m_globalgroups.contains(groupId)) {
         qWarning() << "registerGlobalGroup: Global group "
@@ -228,7 +228,7 @@ void ActionManager::registerGlobalGroup(int groupId, int containerId)
 /*!
     ...
 */
-bool ActionManager::hasContext(int context) const
+bool ActionManagerPrivate::hasContext(int context) const
 {
     return m_context.contains(context);
 }
@@ -236,7 +236,7 @@ bool ActionManager::hasContext(int context) const
 /*!
     ...
 */
-void ActionManager::setContext(const QList<int> &context)
+void ActionManagerPrivate::setContext(const QList<int> &context)
 {
     // here are possibilities for speed optimization if necessary:
     // let commands (de-)register themselves for contexts
@@ -254,7 +254,7 @@ void ActionManager::setContext(const QList<int> &context)
 /*!
     \internal
 */
-bool ActionManager::hasContext(QList<int> context) const
+bool ActionManagerPrivate::hasContext(QList<int> context) const
 {
     for (int i=0; i<m_context.count(); ++i) {
         if (context.contains(m_context.at(i)))
@@ -266,7 +266,7 @@ bool ActionManager::hasContext(QList<int> context) const
 /*!
     ...
 */
-IActionContainer *ActionManager::createMenu(const QString &id)
+IActionContainer *ActionManagerPrivate::createMenu(const QString &id)
 {
     const int uid = m_mainWnd->uniqueIDManager()->uniqueIdentifier(id);
     const IdContainerMap::const_iterator it = m_idContainerMap.constFind(uid);
@@ -287,7 +287,7 @@ IActionContainer *ActionManager::createMenu(const QString &id)
 /*!
     ...
 */
-IActionContainer *ActionManager::createMenuBar(const QString &id)
+IActionContainer *ActionManagerPrivate::createMenuBar(const QString &id)
 {
     const int uid = m_mainWnd->uniqueIDManager()->uniqueIdentifier(id);
     const IdContainerMap::const_iterator it = m_idContainerMap.constFind(uid);
@@ -308,7 +308,7 @@ IActionContainer *ActionManager::createMenuBar(const QString &id)
 /*!
     ...
 */
-ICommand *ActionManager::registerAction(QAction *action, const QString &id, const QList<int> &context)
+ICommand *ActionManagerPrivate::registerAction(QAction *action, const QString &id, const QList<int> &context)
 {
     OverrideableAction *a = 0;
     ICommand *c = registerOverridableAction(action, id, false);
@@ -321,7 +321,7 @@ ICommand *ActionManager::registerAction(QAction *action, const QString &id, cons
 /*!
     ...
 */
-ICommand *ActionManager::registerAction(QAction *action, const QString &id)
+ICommand *ActionManagerPrivate::registerAction(QAction *action, const QString &id)
 {
     return registerOverridableAction(action, id, true);
 }
@@ -329,7 +329,7 @@ ICommand *ActionManager::registerAction(QAction *action, const QString &id)
 /*!
     \internal
 */
-ICommand *ActionManager::registerOverridableAction(QAction *action, const QString &id, bool checkUnique)
+ICommand *ActionManagerPrivate::registerOverridableAction(QAction *action, const QString &id, bool checkUnique)
 {
     OverrideableAction *a = 0;
     const int uid = m_mainWnd->uniqueIDManager()->uniqueIdentifier(id);
@@ -378,7 +378,7 @@ ICommand *ActionManager::registerOverridableAction(QAction *action, const QStrin
 /*!
     ...
 */
-ICommand *ActionManager::registerShortcut(QShortcut *shortcut, const QString &id, const QList<int> &context)
+ICommand *ActionManagerPrivate::registerShortcut(QShortcut *shortcut, const QString &id, const QList<int> &context)
 {
     Shortcut *sc = 0;
     int uid = m_mainWnd->uniqueIDManager()->uniqueIdentifier(id);
@@ -416,9 +416,9 @@ ICommand *ActionManager::registerShortcut(QShortcut *shortcut, const QString &id
 }
 
 /*!
-    \fn void ActionManager::addAction(Core::ICommand *action, const QString &globalGroup)
+    \fn void ActionManagerPrivate::addAction(Core::ICommand *action, const QString &globalGroup)
 */
-void ActionManager::addAction(ICommand *action, const QString &globalGroup)
+void ActionManagerPrivate::addAction(ICommand *action, const QString &globalGroup)
 {
     const int gid = m_mainWnd->uniqueIDManager()->uniqueIdentifier(globalGroup);
     if (!m_globalgroups.contains(gid)) {
@@ -435,10 +435,10 @@ void ActionManager::addAction(ICommand *action, const QString &globalGroup)
 }
 
 /*!
-    \fn void ActionManager::addMenu(Core::IActionContainer *menu, const QString &globalGroup)
+    \fn void ActionManagerPrivate::addMenu(Core::IActionContainer *menu, const QString &globalGroup)
 
 */
-void ActionManager::addMenu(IActionContainer *menu, const QString &globalGroup)
+void ActionManagerPrivate::addMenu(IActionContainer *menu, const QString &globalGroup)
 {
     const int gid = m_mainWnd->uniqueIDManager()->uniqueIdentifier(globalGroup);
     if (!m_globalgroups.contains(gid)) {
@@ -457,13 +457,13 @@ void ActionManager::addMenu(IActionContainer *menu, const QString &globalGroup)
 /*!
     ...
 */
-ICommand *ActionManager::command(const QString &id) const
+ICommand *ActionManagerPrivate::command(const QString &id) const
 {
     const int uid = m_mainWnd->uniqueIDManager()->uniqueIdentifier(id);
     const IdCmdMap::const_iterator it = m_idCmdMap.constFind(uid);
     if (it == m_idCmdMap.constEnd()) {
         if (warnAboutFindFailures)
-            qWarning() << "ActionManager::command(): failed to find :" << id << '/' << uid;
+            qWarning() << "ActionManagerPrivate::command(): failed to find :" << id << '/' << uid;
         return 0;
     }
     return it.value();
@@ -472,13 +472,13 @@ ICommand *ActionManager::command(const QString &id) const
 /*!
     ...
 */
-IActionContainer *ActionManager::actionContainer(const QString &id) const
+IActionContainer *ActionManagerPrivate::actionContainer(const QString &id) const
 {
     const int uid = m_mainWnd->uniqueIDManager()->uniqueIdentifier(id);
     const IdContainerMap::const_iterator it =  m_idContainerMap.constFind(uid);
     if ( it == m_idContainerMap.constEnd()) {
         if (warnAboutFindFailures)
-            qWarning() << "ActionManager::actionContainer(): failed to find :" << id << '/' << uid;
+            qWarning() << "ActionManagerPrivate::actionContainer(): failed to find :" << id << '/' << uid;
         return 0;
     }
     return it.value();
@@ -487,12 +487,12 @@ IActionContainer *ActionManager::actionContainer(const QString &id) const
 /*!
     ...
 */
-ICommand *ActionManager::command(int uid) const
+ICommand *ActionManagerPrivate::command(int uid) const
 {
     const IdCmdMap::const_iterator it = m_idCmdMap.constFind(uid);
     if (it == m_idCmdMap.constEnd()) {
         if (warnAboutFindFailures)
-            qWarning() << "ActionManager::command(): failed to find :" <<  m_mainWnd->uniqueIDManager()->stringForUniqueIdentifier(uid) << '/' << uid;
+            qWarning() << "ActionManagerPrivate::command(): failed to find :" <<  m_mainWnd->uniqueIDManager()->stringForUniqueIdentifier(uid) << '/' << uid;
         return 0;
     }
     return it.value();
@@ -501,12 +501,12 @@ ICommand *ActionManager::command(int uid) const
 /*!
     ...
 */
-IActionContainer *ActionManager::actionContainer(int uid) const
+IActionContainer *ActionManagerPrivate::actionContainer(int uid) const
 {
     const IdContainerMap::const_iterator it = m_idContainerMap.constFind(uid);
     if (it == m_idContainerMap.constEnd()) {
         if (warnAboutFindFailures)
-            qWarning() << "ActionManager::actionContainer(): failed to find :" <<  m_mainWnd->uniqueIDManager()->stringForUniqueIdentifier(uid) << uid;
+            qWarning() << "ActionManagerPrivate::actionContainer(): failed to find :" <<  m_mainWnd->uniqueIDManager()->stringForUniqueIdentifier(uid) << uid;
         return 0;
     }
     return it.value();
@@ -519,7 +519,7 @@ static const char *sequenceKey = "Keysequence";
 /*!
     \internal
 */
-void ActionManager::initialize()
+void ActionManagerPrivate::initialize()
 {
     QSettings *settings = m_mainWnd->settings();
     const int shortcuts = settings->beginReadArray(QLatin1String(settingsGroup));
@@ -539,7 +539,7 @@ void ActionManager::initialize()
 /*!
     ...
 */
-void ActionManager::saveSettings(QSettings *settings)
+void ActionManagerPrivate::saveSettings(QSettings *settings)
 {
     settings->beginWriteArray(QLatin1String(settingsGroup));
     int count = 0;
diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.h b/src/plugins/coreplugin/actionmanager/actionmanager.h
index dd5e2f61e92a61f3a6c4c91f5a614837da405934..d1c570ae4a63b33130748fbde11e7068a0705348 100644
--- a/src/plugins/coreplugin/actionmanager/actionmanager.h
+++ b/src/plugins/coreplugin/actionmanager/actionmanager.h
@@ -34,97 +34,44 @@
 #ifndef ACTIONMANAGER_H
 #define ACTIONMANAGER_H
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include "coreplugin/core_global.h"
 
-#include <QtCore/QMap>
-#include <QtCore/QHash>
-#include <QtCore/QMultiHash>
+#include <coreplugin/actionmanager/iactioncontainer.h>
+#include <coreplugin/actionmanager/icommand.h>
+
+#include <QtCore/QObject>
+#include <QtCore/QList>
 
 QT_BEGIN_NAMESPACE
-class QSettings;
+class QAction;
+class QShortcut;
+class QString;
 QT_END_NAMESPACE
 
-struct CommandLocation
-{
-    int m_container;
-    int m_position;
-};
-
 namespace Core {
 
-class UniqueIDManager;
-
-namespace Internal {
-
-class ActionContainer;
-class MainWindow;
-class Command;
-
-class ActionManager : public Core::ActionManagerInterface
+class CORE_EXPORT ActionManager : public QObject
 {
     Q_OBJECT
-
 public:
-    ActionManager(MainWindow *mainWnd, UniqueIDManager *uidmgr);
-    ~ActionManager();
-
-    void setContext(const QList<int> &context);
-    static ActionManager* instance();
-
-    void saveSettings(QSettings *settings);
-    QList<int> defaultGroups() const;
-
-    QList<Command *> commands() const;
-    QList<ActionContainer *> containers() const;
-
-    bool hasContext(int context) const;
-
-    ICommand *command(int uid) const;
-    IActionContainer *actionContainer(int uid) const;
-
-    void registerGlobalGroup(int groupId, int containerId);
-
-    void initialize();
-
-    //ActionManager Interface
-    IActionContainer *createMenu(const QString &id);
-    IActionContainer *createMenuBar(const QString &id);
-
-    ICommand *registerAction(QAction *action, const QString &id,
-        const QList<int> &context);
-    ICommand *registerAction(QAction *action, const QString &id);
-    ICommand *registerShortcut(QShortcut *shortcut, const QString &id,
-        const QList<int> &context);
-
-    void addAction(Core::ICommand *action, const QString &globalGroup);
-    void addMenu(Core::IActionContainer *menu, const QString &globalGroup);
-
-    Core::ICommand *command(const QString &id) const;
-    Core::IActionContainer *actionContainer(const QString &id) const;
-
-private:
-    bool hasContext(QList<int> context) const;
-    ICommand *registerOverridableAction(QAction *action, const QString &id,
-        bool checkUnique);
-
-    static ActionManager* m_instance;
-    QList<int> m_defaultGroups;
+    ActionManager(QObject *parent = 0) : QObject(parent) {}
+    virtual ~ActionManager() {}
 
-    typedef QHash<int, Command *> IdCmdMap;
-    IdCmdMap m_idCmdMap;
+    virtual IActionContainer *createMenu(const QString &id) = 0;
+    virtual IActionContainer *createMenuBar(const QString &id) = 0;
 
-    typedef QHash<int, ActionContainer *> IdContainerMap;
-    IdContainerMap m_idContainerMap;
+    virtual ICommand *registerAction(QAction *action, const QString &id, const QList<int> &context) = 0;
+    virtual ICommand *registerShortcut(QShortcut *shortcut, const QString &id, const QList<int> &context) = 0;
 
-    typedef QMap<int, int> GlobalGroupMap;
-    GlobalGroupMap m_globalgroups;
+    virtual ICommand *registerAction(QAction *action, const QString &id) = 0;
 
-    QList<int> m_context;
+    virtual void addAction(ICommand *action, const QString &globalGroup) = 0;
+    virtual void addMenu(IActionContainer *menu, const QString &globalGroup) = 0;
 
-    MainWindow *m_mainWnd;
+    virtual ICommand *command(const QString &id) const = 0;
+    virtual IActionContainer *actionContainer(const QString &id) const = 0;
 };
 
-} // namespace Internal
 } // namespace Core
 
 #endif // ACTIONMANAGER_H
diff --git a/src/plugins/coreplugin/actionmanager/actionmanager_p.h b/src/plugins/coreplugin/actionmanager/actionmanager_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..5ca979ed6de5cb2e0acff37a9f168f3fcffaccfc
--- /dev/null
+++ b/src/plugins/coreplugin/actionmanager/actionmanager_p.h
@@ -0,0 +1,130 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact:  Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#ifndef ACTIONMANAGERPRIVATE_H
+#define ACTIONMANAGERPRIVATE_H
+
+#include <coreplugin/actionmanager/actionmanager.h>
+
+#include <QtCore/QMap>
+#include <QtCore/QHash>
+#include <QtCore/QMultiHash>
+
+QT_BEGIN_NAMESPACE
+class QSettings;
+QT_END_NAMESPACE
+
+struct CommandLocation
+{
+    int m_container;
+    int m_position;
+};
+
+namespace Core {
+
+class UniqueIDManager;
+
+namespace Internal {
+
+class ActionContainer;
+class MainWindow;
+class Command;
+
+class ActionManagerPrivate : public Core::ActionManager
+{
+    Q_OBJECT
+
+public:
+    ActionManagerPrivate(MainWindow *mainWnd, UniqueIDManager *uidmgr);
+    ~ActionManagerPrivate();
+
+    void setContext(const QList<int> &context);
+    static ActionManagerPrivate* instance();
+
+    void saveSettings(QSettings *settings);
+    QList<int> defaultGroups() const;
+
+    QList<Command *> commands() const;
+    QList<ActionContainer *> containers() const;
+
+    bool hasContext(int context) const;
+
+    ICommand *command(int uid) const;
+    IActionContainer *actionContainer(int uid) const;
+
+    void registerGlobalGroup(int groupId, int containerId);
+
+    void initialize();
+
+    //ActionManager Interface
+    IActionContainer *createMenu(const QString &id);
+    IActionContainer *createMenuBar(const QString &id);
+
+    ICommand *registerAction(QAction *action, const QString &id,
+        const QList<int> &context);
+    ICommand *registerAction(QAction *action, const QString &id);
+    ICommand *registerShortcut(QShortcut *shortcut, const QString &id,
+        const QList<int> &context);
+
+    void addAction(Core::ICommand *action, const QString &globalGroup);
+    void addMenu(Core::IActionContainer *menu, const QString &globalGroup);
+
+    Core::ICommand *command(const QString &id) const;
+    Core::IActionContainer *actionContainer(const QString &id) const;
+
+private:
+    bool hasContext(QList<int> context) const;
+    ICommand *registerOverridableAction(QAction *action, const QString &id,
+        bool checkUnique);
+
+    static ActionManagerPrivate* m_instance;
+    QList<int> m_defaultGroups;
+
+    typedef QHash<int, Command *> IdCmdMap;
+    IdCmdMap m_idCmdMap;
+
+    typedef QHash<int, ActionContainer *> IdContainerMap;
+    IdContainerMap m_idContainerMap;
+
+    typedef QMap<int, int> GlobalGroupMap;
+    GlobalGroupMap m_globalgroups;
+
+    QList<int> m_context;
+
+    MainWindow *m_mainWnd;
+};
+
+} // namespace Internal
+} // namespace Core
+
+#endif // ACTIONMANAGERPRIVATE_H
diff --git a/src/plugins/coreplugin/actionmanager/actionmanagerinterface.h b/src/plugins/coreplugin/actionmanager/actionmanagerinterface.h
deleted file mode 100644
index f77e9ca484c0b8b5c0eae31da4ae44b150e57e7c..0000000000000000000000000000000000000000
--- a/src/plugins/coreplugin/actionmanager/actionmanagerinterface.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/***************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact:  Qt Software Information (qt-info@nokia.com)
-**
-**
-** Non-Open Source Usage
-**
-** Licensees may use this file in accordance with the Qt Beta Version
-** License Agreement, Agreement version 2.2 provided with the Software or,
-** alternatively, in accordance with the terms contained in a written
-** agreement between you and Nokia.
-**
-** GNU General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the packaging
-** of this file.  Please review the following information to ensure GNU
-** General Public Licensing requirements will be met:
-**
-** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt GPL Exception
-** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
-**
-***************************************************************************/
-
-#ifndef ACTIONMANAGERINTERFACE_H
-#define ACTIONMANAGERINTERFACE_H
-
-#include "coreplugin/core_global.h"
-
-#include <coreplugin/actionmanager/iactioncontainer.h>
-#include <coreplugin/actionmanager/icommand.h>
-
-#include <QtCore/QObject>
-#include <QtCore/QList>
-
-QT_BEGIN_NAMESPACE
-class QAction;
-class QShortcut;
-class QString;
-QT_END_NAMESPACE
-
-namespace Core {
-
-class CORE_EXPORT ActionManagerInterface : public QObject
-{
-    Q_OBJECT
-public:
-    ActionManagerInterface(QObject *parent = 0) : QObject(parent) {}
-    virtual ~ActionManagerInterface() {}
-
-    virtual IActionContainer *createMenu(const QString &id) = 0;
-    virtual IActionContainer *createMenuBar(const QString &id) = 0;
-
-    virtual ICommand *registerAction(QAction *action, const QString &id, const QList<int> &context) = 0;
-    virtual ICommand *registerShortcut(QShortcut *shortcut, const QString &id, const QList<int> &context) = 0;
-
-    virtual ICommand *registerAction(QAction *action, const QString &id) = 0;
-
-    virtual void addAction(ICommand *action, const QString &globalGroup) = 0;
-    virtual void addMenu(IActionContainer *menu, const QString &globalGroup) = 0;
-
-    virtual ICommand *command(const QString &id) const = 0;
-    virtual IActionContainer *actionContainer(const QString &id) const = 0;
-};
-
-} // namespace Core
-
-#endif // ACTIONMANAGERINTERFACE_H
diff --git a/src/plugins/coreplugin/actionmanager/command.h b/src/plugins/coreplugin/actionmanager/command.h
index 848114c8b96475221b2c29997e3f11767f468d9a..1c854a94fa6c4705ff126197ea21ffe2863813e6 100644
--- a/src/plugins/coreplugin/actionmanager/command.h
+++ b/src/plugins/coreplugin/actionmanager/command.h
@@ -35,7 +35,7 @@
 #define COMMAND_H
 
 #include "icommand.h"
-#include "actionmanager.h"
+#include "actionmanager_p.h"
 
 #include <QtCore/QList>
 #include <QtCore/QMultiMap>
diff --git a/src/plugins/coreplugin/coreimpl.cpp b/src/plugins/coreplugin/coreimpl.cpp
index cd96a9c24fc882a49eefc5715db0b10a257beb75..8d500dcd8e7367630f89bf94ec64f8e3fdc1c125 100644
--- a/src/plugins/coreplugin/coreimpl.cpp
+++ b/src/plugins/coreplugin/coreimpl.cpp
@@ -64,7 +64,7 @@ void CoreImpl::showOptionsDialog(const QString &group, const QString &page)
     m_mainwindow->showOptionsDialog(group, page);
 }
 
-ActionManagerInterface *CoreImpl::actionManager() const
+ActionManager *CoreImpl::actionManager() const
 {
     return m_mainwindow->actionManager();
 }
@@ -94,7 +94,7 @@ EditorManager *CoreImpl::editorManager() const
     return m_mainwindow->editorManager();
 }
 
-ProgressManagerInterface *CoreImpl::progressManager() const
+ProgressManager *CoreImpl::progressManager() const
 {
     return m_mainwindow->progressManager();
 }
diff --git a/src/plugins/coreplugin/coreimpl.h b/src/plugins/coreplugin/coreimpl.h
index fc5375d37017496ff6827c782f3f4ea68aaff77a..01c29e4656d7429295692e0e2159e84d4f3f0613 100644
--- a/src/plugins/coreplugin/coreimpl.h
+++ b/src/plugins/coreplugin/coreimpl.h
@@ -56,13 +56,13 @@ public:
     void showOptionsDialog(const QString &group = QString(),
                                    const QString &page = QString());
 
-    ActionManagerInterface *actionManager() const;
+    ActionManager *actionManager() const;
     FileManager *fileManager() const ;
     UniqueIDManager *uniqueIDManager() const;
     MessageManager *messageManager() const;
     ExtensionSystem::PluginManager *pluginManager() const;
     EditorManager *editorManager() const;
-    ProgressManagerInterface *progressManager() const;
+    ProgressManager *progressManager() const;
     ScriptManagerInterface *scriptManager() const;
     VariableManager *variableManager() const;
     VCSManager *vcsManager() const;
diff --git a/src/plugins/coreplugin/coreplugin.pro b/src/plugins/coreplugin/coreplugin.pro
index 2dc558a542284910306a36453b7602119f609f75..d87ab4bb036c8b23924a06fb97540a202fb74b01 100644
--- a/src/plugins/coreplugin/coreplugin.pro
+++ b/src/plugins/coreplugin/coreplugin.pro
@@ -99,9 +99,9 @@ HEADERS += mainwindow.h \
     editormanager/ieditor.h \
     editormanager/ieditorfactory.h \
     actionmanager/iactioncontainer.h \
-    actionmanager/actionmanagerinterface.h \
-    actionmanager/icommand.h \
     actionmanager/actionmanager.h \
+    actionmanager/icommand.h \
+    actionmanager/actionmanager_p.h \
     actionmanager/command.h \
     actionmanager/actioncontainer.h \
     actionmanager/commandsfile.h \
@@ -112,11 +112,11 @@ HEADERS += mainwindow.h \
     dialogs/openwithdialog.h \
     dialogs/iwizard.h \
     dialogs/ioptionspage.h \
-    progressmanager/progressmanager.h \
+    progressmanager/progressmanager_p.h \
     progressmanager/progressview.h \
     progressmanager/progresspie.h \
     progressmanager/futureprogress.h \
-    progressmanager/progressmanagerinterface.h \
+    progressmanager/progressmanager.h \
     icontext.h \
     icore.h \
     ifile.h \
diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
index ec1c3975c4dd62ee8772c5852e3dbd76de8b4aa9..5d6ae28147f5635d236ba101f835fac80d33d893 100644
--- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
+++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
@@ -33,7 +33,7 @@
 
 #include "shortcutsettings.h"
 #include "ui_shortcutsettings.h"
-#include "actionmanager.h"
+#include "actionmanager_p.h"
 #include "command.h"
 #include "coreconstants.h"
 #include "coreimpl.h"
@@ -281,7 +281,7 @@ void ShortcutSettings::initialize()
 {
     QMap<QString, QTreeWidgetItem *> categories;
 
-    m_am = ActionManager::instance();
+    m_am = ActionManagerPrivate::instance();
     UniqueIDManager *uidm =
         CoreImpl::instance()->uniqueIDManager();
 
diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.h b/src/plugins/coreplugin/dialogs/shortcutsettings.h
index 99d4a8fbbc433880aaf9f439cf1c013213aae7c5..f79bf89386bda3854cfcf73d2acbdfe015724025 100644
--- a/src/plugins/coreplugin/dialogs/shortcutsettings.h
+++ b/src/plugins/coreplugin/dialogs/shortcutsettings.h
@@ -51,7 +51,7 @@ class ICommand;
 
 namespace Internal {
 
-class ActionManager;
+class ActionManagerPrivate;
 class Command;
 class MainWindow;
 
@@ -101,7 +101,7 @@ private:
     int translateModifiers(Qt::KeyboardModifiers state, const QString &text);
 
     QList<ShortcutItem *> m_scitems;
-    ActionManager *m_am;
+    ActionManagerPrivate *m_am;
     int m_key[4], m_keyNum;
     Ui_ShortcutSettings *m_page;
 };
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 1eb3abb133d72665bfd8aa03dff64a7a1c0cc717..923f90ce0c45390cf43ee874a5ffc8559778abca 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -48,7 +48,7 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/modemanager.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/ieditorfactory.h>
 #include <coreplugin/baseview.h>
 #include <coreplugin/imode.h>
@@ -207,7 +207,7 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) :
     const QList<int> editManagerContext =
             QList<int>() << m_d->m_core->uniqueIDManager()->uniqueIdentifier(Constants::C_EDITORMANAGER);
 
-    ActionManagerInterface *am = m_d->m_core->actionManager();
+    ActionManager *am = m_d->m_core->actionManager();
     IActionContainer *mfile = am->actionContainer(Constants::M_FILE);
 
     //Revert to saved
diff --git a/src/plugins/coreplugin/editormanager/editorsplitter.cpp b/src/plugins/coreplugin/editormanager/editorsplitter.cpp
index 370cae409fdc9117f876547b77f0f49b604fd2ae..dbb9e0c20b8d5885e5d4a3de45c7454fc79bced2 100644
--- a/src/plugins/coreplugin/editormanager/editorsplitter.cpp
+++ b/src/plugins/coreplugin/editormanager/editorsplitter.cpp
@@ -41,7 +41,7 @@
 #include <coreplugin/icore.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 
 #include <utils/qtcassert.h>
 
@@ -72,7 +72,7 @@ void EditorSplitter::registerActions()
     const QList<int> editorManagerContext =
             QList<int>() << m_core->uniqueIDManager()->uniqueIdentifier(Constants::C_EDITORMANAGER);
 
-    ActionManagerInterface *am = m_core->actionManager();
+    ActionManager *am = m_core->actionManager();
     IActionContainer *mwindow = am->actionContainer(Constants::M_WINDOW);
     ICommand *cmd;
 
diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp
index 317ebbbc45ad48ad085600e2639075b1b9cc4955..5cdc3733dd0fa42ec4779ee8af97b7250d533a9e 100644
--- a/src/plugins/coreplugin/icore.cpp
+++ b/src/plugins/coreplugin/icore.cpp
@@ -51,7 +51,7 @@
 */
 
 /*!
-    \fn ActionManagerInterface *ICore::actionManager() const
+    \fn ActionManager *ICore::actionManager() const
     \brief Returns the application's action manager.
 
     The action manager is responsible for registration of menus and
@@ -98,7 +98,7 @@
 */
 
 /*!
-    \fn ProgressManagerInterface *ICore::progressManager() const
+    \fn ProgressManager *ICore::progressManager() const
     \brief Returns the application's progress manager.
 
     Use the progress manager to register a concurrent task to
diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h
index 53ff1e96f909fef98631bfc88006f55adc085621..4a138b4baaecff75e03f0fa2e8f685c504d0786c 100644
--- a/src/plugins/coreplugin/icore.h
+++ b/src/plugins/coreplugin/icore.h
@@ -50,14 +50,14 @@ QT_END_NAMESPACE
 namespace Core {
 
 // forward declarations
-class ActionManagerInterface;
+class ActionManager;
 class IFile;
 class FileManager;
 class MessageManager;
 class IEditor;
 class UniqueIDManager;
 class EditorManager;
-class ProgressManagerInterface;
+class ProgressManager;
 class ScriptManagerInterface;
 class VariableManager;
 class IContext;
@@ -81,13 +81,13 @@ public:
     virtual void showOptionsDialog(const QString &group = QString(),
                                    const QString &page = QString()) = 0;
 
-    virtual ActionManagerInterface *actionManager() const = 0;
+    virtual ActionManager *actionManager() const = 0;
     virtual FileManager *fileManager() const = 0;
     virtual UniqueIDManager *uniqueIDManager() const = 0;
     virtual MessageManager *messageManager() const = 0;
     virtual ExtensionSystem::PluginManager *pluginManager() const = 0;
     virtual EditorManager *editorManager() const = 0;
-    virtual ProgressManagerInterface *progressManager() const = 0;
+    virtual ProgressManager *progressManager() const = 0;
     virtual ScriptManagerInterface *scriptManager() const = 0;
     virtual VariableManager *variableManager() const = 0;
     virtual VCSManager *vcsManager() const = 0;
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index b368ad8cf4dcce84e36d4461209f9fa5ef7f2435..ce1517194942c1a1ad06fdcb2c0961f112303637 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -33,7 +33,7 @@
 
 #include "mainwindow.h"
 #include "actioncontainer.h"
-#include "actionmanager.h"
+#include "actionmanager_p.h"
 #include "basemode.h"
 #include "coreimpl.h"
 #include "coreconstants.h"
@@ -49,7 +49,7 @@
 #include "newdialog.h"
 #include "outputpane.h"
 #include "plugindialog.h"
-#include "progressmanager.h"
+#include "progressmanager_p.h"
 #include "progressview.h"
 #include "shortcutsettings.h"
 #include "vcsmanager.h"
@@ -115,10 +115,10 @@ MainWindow::MainWindow() :
     m_additionalContexts(m_globalContext),
     m_settings(new QSettings(QSettings::IniFormat, QSettings::UserScope, QLatin1String("Nokia"), QLatin1String("QtCreator"), this)),
     m_printer(0),
-    m_actionManager(new ActionManager(this, m_uniqueIDManager)),
+    m_actionManager(new ActionManagerPrivate(this, m_uniqueIDManager)),
     m_editorManager(0),
     m_fileManager(new FileManager(m_coreImpl, this)),
-    m_progressManager(new ProgressManager()),
+    m_progressManager(new ProgressManagerPrivate()),
     m_scriptManager(new ScriptManager(this, m_coreImpl)),
     m_variableManager(new VariableManager(this)),
     m_vcsManager(new VCSManager()),
@@ -362,9 +362,9 @@ QStatusBar *MainWindow::statusBar() const
 
 void MainWindow::registerDefaultContainers()
 {
-    ActionManager *am = m_actionManager;
+    ActionManagerPrivate *am = m_actionManager;
 
-    IActionContainer *menubar = m_actionManager->createMenuBar(Constants::MENU_BAR);
+    IActionContainer *menubar = am->createMenuBar(Constants::MENU_BAR);
 
 #ifndef Q_WS_MAC // System menu bar on Mac
     setMenuBar(menubar->menuBar());
@@ -427,7 +427,7 @@ void MainWindow::registerDefaultContainers()
     ac->appendGroup(Constants::G_HELP_ABOUT, true);
 }
 
-static ICommand *createSeparator(ActionManager *am, QObject *parent,
+static ICommand *createSeparator(ActionManagerPrivate *am, QObject *parent,
                                  const QString &name,
                                  const QList<int> &context)
 {
@@ -439,7 +439,7 @@ static ICommand *createSeparator(ActionManager *am, QObject *parent,
 
 void MainWindow::registerDefaultActions()
 {
-    ActionManager *am = m_actionManager;
+    ActionManagerPrivate *am = m_actionManager;
     IActionContainer *mfile = am->actionContainer(Constants::M_FILE);
     IActionContainer *medit = am->actionContainer(Constants::M_EDIT);
     IActionContainer *mtools = am->actionContainer(Constants::M_TOOLS);
@@ -815,7 +815,7 @@ void MainWindow::openFileWith()
     }
 }
 
-ActionManagerInterface *MainWindow::actionManager() const
+ActionManager *MainWindow::actionManager() const
 {
     return m_actionManager;
 }
@@ -845,7 +845,7 @@ EditorManager *MainWindow::editorManager() const
     return m_editorManager;
 }
 
-ProgressManagerInterface *MainWindow::progressManager() const
+ProgressManager *MainWindow::progressManager() const
 {
     return m_progressManager;
 }
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index 913e6728e71e7b8491d82de18a959f153b1150d0..2fe06cd76f71c8e33e8290bee1757a02f8dcaa8a 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -55,7 +55,7 @@ class PluginManager;
 
 namespace Core {
 
-class ActionManagerInterface;
+class ActionManager;
 class BaseMode;
 class BaseView;
 class EditorManager;
@@ -64,7 +64,7 @@ class IContext;
 class MessageManager;
 class MimeDatabase;
 class ModeManager;
-class ProgressManagerInterface;
+class ProgressManager;
 class RightPaneWidget;
 class ScriptManagerInterface;
 class UniqueIDManager;
@@ -74,13 +74,13 @@ class ViewManagerInterface;
 
 namespace Internal {
 
-class ActionManager;
+class ActionManagerPrivate;
 class CoreImpl;
 class FancyTabWidget;
 class GeneralSettings;
 class NavigationWidget;
 class OutputPane;
-class ProgressManager;
+class ProgressManagerPrivate;
 class ShortcutSettings;
 class ViewManager;
 class VersionDialog;
@@ -105,13 +105,13 @@ public:
 
     //ICore
     inline ExtensionSystem::PluginManager *pluginManager() { return m_pluginManager; }
-    Core::ActionManagerInterface *actionManager() const;
+    Core::ActionManager *actionManager() const;
     Core::FileManager *fileManager() const;
     Core::UniqueIDManager *uniqueIDManager() const;
     Core::MessageManager *messageManager() const;
     ExtensionSystem::PluginManager *pluginManager() const;
     Core::EditorManager *editorManager() const;
-    Core::ProgressManagerInterface *progressManager() const;
+    Core::ProgressManager *progressManager() const;
     Core::ScriptManagerInterface *scriptManager() const;
     Core::VariableManager *variableManager() const;
     Core::ModeManager *modeManager() const;
@@ -176,11 +176,11 @@ private:
     QList<int> m_additionalContexts;
     QSettings *m_settings;
     mutable QPrinter *m_printer;
-    ActionManager *m_actionManager;
+    ActionManagerPrivate *m_actionManager;
     EditorManager *m_editorManager;
     FileManager *m_fileManager;
     MessageManager *m_messageManager;
-    ProgressManager *m_progressManager;
+    ProgressManagerPrivate *m_progressManager;
     ScriptManagerInterface *m_scriptManager;
     VariableManager *m_variableManager;
     VCSManager *m_vcsManager;
diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp
index 2e1713d05f93633c31728639805099e28a41be98..f26efaf9789a63fd416f67ff4f0e7b83517feb41 100644
--- a/src/plugins/coreplugin/modemanager.cpp
+++ b/src/plugins/coreplugin/modemanager.cpp
@@ -39,7 +39,7 @@
 
 #include <aggregation/aggregate.h>
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/icommand.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/coreimpl.h>
@@ -140,7 +140,7 @@ void ModeManager::objectAdded(QObject *obj)
     m_modeStack->insertTab(index, mode->widget(), mode->icon(), mode->name());
 
     // Register mode shortcut
-    ActionManagerInterface *am = m_mainWindow->actionManager();
+    ActionManager *am = m_mainWindow->actionManager();
     const QString shortcutId = QLatin1String("QtCreator.Mode.") + mode->uniqueModeName();
     QShortcut *shortcut = new QShortcut(m_mainWindow);
     shortcut->setWhatsThis(tr("Switch to %1 mode").arg(mode->name()));
diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp
index 491c394343820bea218a06fa4098b08a5f1136d3..80d71f5b41b11da8c3a02218fac5ca4812756ab9 100644
--- a/src/plugins/coreplugin/navigationwidget.cpp
+++ b/src/plugins/coreplugin/navigationwidget.cpp
@@ -38,7 +38,7 @@
 #include <coreplugin/inavigationwidgetfactory.h>
 #include <coreplugin/modemanager.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <extensionsystem/ExtensionSystemInterfaces>
 
 #include <QtGui/QAction>
@@ -316,7 +316,7 @@ void NavigationWidget::objectAdded(QObject * obj)
         return;
 
     Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>();
-    Core::ActionManagerInterface *am = core->actionManager();
+    Core::ActionManager *am = core->actionManager();
     QList<int> navicontext = QList<int>() << core->uniqueIDManager()->
         uniqueIdentifier(Core::Constants::C_NAVIGATION_PANE);
 
diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp
index 6b5c3b146d11580fa68bc299ab7690c1702ee440..1f0f7d983c4815eb1b219f7fb81292c40eb9beed 100644
--- a/src/plugins/coreplugin/outputpane.cpp
+++ b/src/plugins/coreplugin/outputpane.cpp
@@ -37,7 +37,7 @@
 #include "mainwindow.h"
 #include "modemanager.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/iactioncontainer.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/editormanager/editorgroup.h>
@@ -210,7 +210,7 @@ void OutputPane::init(ICore *core, ExtensionSystem::PluginManager *pm)
     m_pluginManager = pm;
     m_core = core;
 
-    ActionManagerInterface *am = m_core->actionManager();
+    ActionManager *am = m_core->actionManager();
     IActionContainer *mwindow = am->actionContainer(Constants::M_WINDOW);
 
     // Window->Output Panes
diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp
index ab1b0370323ab5a508e0a6510bc2bfbb4b28ddd2..18a32ad81581ac074f7b10f527aad666564d07a1 100644
--- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp
+++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp
@@ -31,7 +31,7 @@
 **
 ***************************************************************************/
 
-#include "progressmanager.h"
+#include "progressmanager_p.h"
 #include "progressview.h"
 #include "coreimpl.h"
 #include "baseview.h"
@@ -44,23 +44,23 @@
 using namespace Core;
 using namespace Core::Internal;
 
-ProgressManager::ProgressManager(QObject *parent)
-  : ProgressManagerInterface(parent)
+ProgressManagerPrivate::ProgressManagerPrivate(QObject *parent)
+  : ProgressManager(parent)
 {
     m_progressView = new ProgressView;
     ICore *core = CoreImpl::instance();
     connect(core, SIGNAL(coreAboutToClose()), this, SLOT(cancelAllRunningTasks()));
 }
 
-ProgressManager::~ProgressManager()
+ProgressManagerPrivate::~ProgressManagerPrivate()
 {
 }
 
-void ProgressManager::init()
+void ProgressManagerPrivate::init()
 {
 }
 
-void ProgressManager::cancelTasks(const QString &type)
+void ProgressManagerPrivate::cancelTasks(const QString &type)
 {
     QMap<QFutureWatcher<void> *, QString>::iterator task = m_runningTasks.begin();
     while (task != m_runningTasks.end()) {
@@ -75,7 +75,7 @@ void ProgressManager::cancelTasks(const QString &type)
     }
 }
 
-void ProgressManager::cancelAllRunningTasks()
+void ProgressManagerPrivate::cancelAllRunningTasks()
 {
     QMap<QFutureWatcher<void> *, QString>::const_iterator task = m_runningTasks.constBegin();
     while (task != m_runningTasks.constEnd()) {
@@ -87,7 +87,7 @@ void ProgressManager::cancelAllRunningTasks()
     m_runningTasks.clear();
 }
 
-FutureProgress *ProgressManager::addTask(const QFuture<void> &future, const QString &title, const QString &type, PersistentType persistency)
+FutureProgress *ProgressManagerPrivate::addTask(const QFuture<void> &future, const QString &title, const QString &type, PersistentType persistency)
 {
     QFutureWatcher<void> *watcher = new QFutureWatcher<void>();
     m_runningTasks.insert(watcher, type);
@@ -96,12 +96,12 @@ FutureProgress *ProgressManager::addTask(const QFuture<void> &future, const QStr
     return m_progressView->addTask(future, title, type, persistency);
 }
 
-QWidget *ProgressManager::progressView()
+QWidget *ProgressManagerPrivate::progressView()
 {
     return m_progressView;
 }
 
-void ProgressManager::taskFinished()
+void ProgressManagerPrivate::taskFinished()
 {
     QObject *taskObject = sender();
     QTC_ASSERT(taskObject, return);
diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.h b/src/plugins/coreplugin/progressmanager/progressmanager.h
index 7df78fe26b845b29bef1d160b7c9f8228d4d784a..c3f940186fcfa31394245a5ba31e043dcb544e96 100644
--- a/src/plugins/coreplugin/progressmanager/progressmanager.h
+++ b/src/plugins/coreplugin/progressmanager/progressmanager.h
@@ -34,41 +34,30 @@
 #ifndef PROGRESSMANAGER_H
 #define PROGRESSMANAGER_H
 
-#include "progressmanagerinterface.h"
+#include <coreplugin/core_global.h>
+#include <coreplugin/progressmanager/futureprogress.h>
 
-#include <QtCore/QPointer>
-#include <QtCore/QList>
-#include <QtCore/QFutureWatcher>
+#include <QtCore/QObject>
+#include <QtCore/QFuture>
+#include <QtGui/QIcon>
 
 namespace Core {
-namespace Internal {
 
-class ProgressView;
-
-class ProgressManager : public Core::ProgressManagerInterface
+class CORE_EXPORT ProgressManager : public QObject
 {
     Q_OBJECT
 public:
-    ProgressManager(QObject *parent = 0);
-    ~ProgressManager();
-    void init();
+    enum PersistentType { CloseOnSuccess, KeepOnFinish };
 
-    FutureProgress *addTask(const QFuture<void> &future, const QString &title, const QString &type, PersistentType persistency);
+    ProgressManager(QObject *parent = 0) : QObject(parent) {}
+    virtual ~ProgressManager() {}
 
-    QWidget *progressView();
+    virtual FutureProgress *addTask(const QFuture<void> &future, const QString &title, const QString &type, PersistentType persistency = KeepOnFinish) = 0;
 
 public slots:
-    void cancelTasks(const QString &type);
-
-private slots:
-    void taskFinished();
-    void cancelAllRunningTasks();
-private:
-    QPointer<ProgressView> m_progressView;
-    QMap<QFutureWatcher<void> *, QString> m_runningTasks;
+    virtual void cancelTasks(const QString &type) = 0;
 };
 
-} // namespace Internal
 } // namespace Core
 
-#endif // PROGRESSMANAGER_H
+#endif //PROGRESSMANAGER_H
diff --git a/src/plugins/coreplugin/progressmanager/progressmanagerinterface.h b/src/plugins/coreplugin/progressmanager/progressmanager_p.h
similarity index 63%
rename from src/plugins/coreplugin/progressmanager/progressmanagerinterface.h
rename to src/plugins/coreplugin/progressmanager/progressmanager_p.h
index 8bb55cc96dde77478941c9f3cd1bcb81a4edebd5..d173babda2aa0ad5a4ad6880e3685240102147c8 100644
--- a/src/plugins/coreplugin/progressmanager/progressmanagerinterface.h
+++ b/src/plugins/coreplugin/progressmanager/progressmanager_p.h
@@ -31,33 +31,44 @@
 **
 ***************************************************************************/
 
-#ifndef PROGRESSMANAGERINTERFACE_H
-#define PROGRESSMANAGERINTERFACE_H
+#ifndef PROGRESSMANAGER_P_H
+#define PROGRESSMANAGER_P_H
 
-#include <coreplugin/core_global.h>
-#include <coreplugin/progressmanager/futureprogress.h>
+#include "progressmanager.h"
 
-#include <QtCore/QObject>
-#include <QtCore/QFuture>
-#include <QtGui/QIcon>
+#include <QtCore/QPointer>
+#include <QtCore/QList>
+#include <QtCore/QFutureWatcher>
 
 namespace Core {
+namespace Internal {
 
-class CORE_EXPORT ProgressManagerInterface : public QObject
+class ProgressView;
+
+class ProgressManagerPrivate : public Core::ProgressManager
 {
     Q_OBJECT
 public:
-    enum PersistentType { CloseOnSuccess, KeepOnFinish };
+    ProgressManagerPrivate(QObject *parent = 0);
+    ~ProgressManagerPrivate();
+    void init();
 
-    ProgressManagerInterface(QObject *parent = 0) : QObject(parent) {}
-    virtual ~ProgressManagerInterface() {}
+    FutureProgress *addTask(const QFuture<void> &future, const QString &title, const QString &type, PersistentType persistency);
 
-    virtual FutureProgress *addTask(const QFuture<void> &future, const QString &title, const QString &type, PersistentType persistency = KeepOnFinish) = 0;
+    QWidget *progressView();
 
 public slots:
-    virtual void cancelTasks(const QString &type) = 0;
+    void cancelTasks(const QString &type);
+
+private slots:
+    void taskFinished();
+    void cancelAllRunningTasks();
+private:
+    QPointer<ProgressView> m_progressView;
+    QMap<QFutureWatcher<void> *, QString> m_runningTasks;
 };
 
+} // namespace Internal
 } // namespace Core
 
-#endif //PROGRESSMANAGERINTERFACE_H
+#endif // PROGRESSMANAGER_P_H
diff --git a/src/plugins/coreplugin/progressmanager/progressview.cpp b/src/plugins/coreplugin/progressmanager/progressview.cpp
index a4e686d494b09bfaf1823cfd8900d9437eef8994..db17eb81449165f485feb13e39cd83a71c35f3e1 100644
--- a/src/plugins/coreplugin/progressmanager/progressview.cpp
+++ b/src/plugins/coreplugin/progressmanager/progressview.cpp
@@ -62,7 +62,7 @@ ProgressView::~ProgressView()
 FutureProgress *ProgressView::addTask(const QFuture<void> &future,
                                       const QString &title,
                                       const QString &type,
-                                      ProgressManagerInterface::PersistentType persistency)
+                                      ProgressManager::PersistentType persistency)
 {
     removeOldTasks(type);
     if (m_taskList.size() == 3)
@@ -73,7 +73,7 @@ FutureProgress *ProgressView::addTask(const QFuture<void> &future,
     m_layout->insertWidget(0, progress);
     m_taskList.append(progress);
     m_type.insert(progress, type);
-    m_keep.insert(progress, (persistency == ProgressManagerInterface::KeepOnFinish));
+    m_keep.insert(progress, (persistency == ProgressManager::KeepOnFinish));
     connect(progress, SIGNAL(finished()), this, SLOT(slotFinished()));
     return progress;
 }
diff --git a/src/plugins/coreplugin/progressmanager/progressview.h b/src/plugins/coreplugin/progressmanager/progressview.h
index 455362009cfeccb980b080a05a3a94599fa02f74..4aa04d6da1c9e272cfa66e9f4d555a77996161d2 100644
--- a/src/plugins/coreplugin/progressmanager/progressview.h
+++ b/src/plugins/coreplugin/progressmanager/progressview.h
@@ -34,7 +34,7 @@
 #ifndef PROGRESSVIEW_H
 #define PROGRESSVIEW_H
 
-#include "progressmanagerinterface.h"
+#include "progressmanager.h"
 
 #include <QtCore/QFuture>
 #include <QtGui/QWidget>
@@ -59,7 +59,7 @@ public:
     FutureProgress *addTask(const QFuture<void> &future,
                             const QString &title,
                             const QString &type,
-                            ProgressManagerInterface::PersistentType persistency);
+                            ProgressManager::PersistentType persistency);
 
 private slots:
     void slotFinished();
diff --git a/src/plugins/coreplugin/sidebar.cpp b/src/plugins/coreplugin/sidebar.cpp
index 17887450d9bc5fe1fba312ffecb9252d9d0b5475..8d4299a9f9edee7d462ecaff57a03f4a6692074d 100644
--- a/src/plugins/coreplugin/sidebar.cpp
+++ b/src/plugins/coreplugin/sidebar.cpp
@@ -35,7 +35,7 @@
 #include "imode.h"
 #include "modemanager.h"
 
-#include "actionmanager/actionmanagerinterface.h"
+#include "actionmanager/actionmanager.h"
 
 #include <QtCore/QDebug>
 #include <QtCore/QEvent>
diff --git a/src/plugins/coreplugin/viewmanager.cpp b/src/plugins/coreplugin/viewmanager.cpp
index 5032d45b4d486a2964a26d5ee153d8f556fc6c4e..400f3d551830ebb330e081237d5ada7ce328c10a 100644
--- a/src/plugins/coreplugin/viewmanager.cpp
+++ b/src/plugins/coreplugin/viewmanager.cpp
@@ -38,7 +38,7 @@
 #include "uniqueidmanager.h"
 #include "iview.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/icommand.h>
 #include <extensionsystem/ExtensionSystemInterfaces>
 #include <aggregation/aggregate.h>
diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp
index 548c48be7d3fd1b1e7e059867c488476a6eefd9c..ba56ad542af5f7cec927b68b0a78ba10ae7a8b54 100644
--- a/src/plugins/cpaster/cpasterplugin.cpp
+++ b/src/plugins/cpaster/cpasterplugin.cpp
@@ -43,7 +43,7 @@
 #include <coreplugin/filemanager.h>
 #include <coreplugin/messagemanager.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <texteditor/itexteditor.h>
 #include <coreplugin/messageoutputwindow.h>
@@ -95,7 +95,7 @@ bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_m
     addObject(m_settingsPage);
 
     //register actions
-    Core::ActionManagerInterface *actionManager = gCoreInstance->actionManager();
+    Core::ActionManager *actionManager = gCoreInstance->actionManager();
 
     Core::IActionContainer *toolsContainer =
         actionManager->actionContainer(Core::Constants::M_TOOLS);
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 1eb298aa3780571abe1d91afbbc85bd926aa09ac..a5de130a7affe386f890cbdb48e395002e49cb54 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -55,7 +55,7 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/ieditor.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <projectexplorer/projectexplorerconstants.h>
diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp
index c30bc97f29d7d77c2ba1d94eca5de145d72e2bf2..ccb1a87ec12fba3f02845772db2b2a3fe15e9cf2 100644
--- a/src/plugins/cppeditor/cppplugin.cpp
+++ b/src/plugins/cppeditor/cppplugin.cpp
@@ -44,7 +44,7 @@
 #include <coreplugin/mimedatabase.h>
 #include <coreplugin/uniqueidmanager.h>
 #include <coreplugin/fileiconprovider.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/icommand.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <texteditor/completionsupport.h>
@@ -194,7 +194,7 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess
     QList<int> context;
     context << m_core->uniqueIDManager()->uniqueIdentifier(CppEditor::Constants::C_CPPEDITOR);
 
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
     am->createMenu(CppEditor::Constants::M_CONTEXT);
 
     Core::ICommand *cmd;
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index df611294751d5e2d5dab55339751a675035273bc..f190fcaa7c4c235f81694f413ad98a1304929ca7 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -606,7 +606,7 @@ QFuture<void> CppModelManager::refreshSourceFiles(const QStringList &sourceFiles
         if (sourceFiles.count() > 1) {
             m_core->progressManager()->addTask(result, tr("Indexing"),
                             CppTools::Constants::TASK_INDEX,
-                            Core::ProgressManagerInterface::CloseOnSuccess);
+                            Core::ProgressManager::CloseOnSuccess);
         }
         return result;
     }
diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp
index 866a3d05c9460e2ced1d283ba86ea0707f470edf..a8b4366bab8179e7cad65368e6e6d818062d66e7 100644
--- a/src/plugins/cpptools/cpptoolsplugin.cpp
+++ b/src/plugins/cpptools/cpptoolsplugin.cpp
@@ -45,7 +45,7 @@
 #include <coreplugin/mimedatabase.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <cppeditor/cppeditorconstants.h>
 
@@ -81,7 +81,7 @@ CppToolsPlugin::~CppToolsPlugin()
 bool CppToolsPlugin::initialize(const QStringList & /*arguments*/, QString *)
 {
     m_core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>();
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
 
     // Objects
     m_modelManager = new CppModelManager(this);
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index d65f9ac9acd8f1831b5ae37fb98e34be50295b02..401bafad7f14a15f80959e2ce0437fb310ffd857 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -40,7 +40,7 @@
 #include "gdbengine.h"
 #include "mode.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/icore.h>
@@ -227,7 +227,7 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes
     ICore *core = m_pm->getObject<Core::ICore>();
     QTC_ASSERT(core, return false);
 
-    Core::ActionManagerInterface *actionManager = core->actionManager();
+    Core::ActionManager *actionManager = core->actionManager();
     QTC_ASSERT(actionManager, return false);
 
     Core::UniqueIDManager *uidm = core->uniqueIDManager();
diff --git a/src/plugins/debugger/mode.cpp b/src/plugins/debugger/mode.cpp
index 4499414858306e24ce626fda72518dd0f7946394..fdb94ea18758302aeb85309275a17e49823c6192 100644
--- a/src/plugins/debugger/mode.cpp
+++ b/src/plugins/debugger/mode.cpp
@@ -40,7 +40,7 @@
 #include <coreplugin/icore.h>
 #include <coreplugin/modemanager.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/minisplitter.h>
 #include <coreplugin/findplaceholder.h>
@@ -151,7 +151,7 @@ QToolBar *DebugMode::createToolBar()
     IDebuggerManagerAccessForDebugMode *managerAccess =
         m_manager->debugModeInterface();
 
-    Core::ActionManagerInterface *am =
+    Core::ActionManager *am =
             ExtensionSystem::PluginManager::instance()
             ->getObject<Core::ICore>()->actionManager();
     QToolBar *debugToolBar = new QToolBar;
diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp
index 59e64c4cf9a82d993b7c35dd7c4070dfa68be93b..d7f176d6e1c88570ce311f27dd78337bcbbcb3fa 100644
--- a/src/plugins/designer/formeditorw.cpp
+++ b/src/plugins/designer/formeditorw.cpp
@@ -41,7 +41,7 @@
 
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <utils/qtcassert.h>
 
@@ -99,7 +99,7 @@ static inline QIcon designerIcon(const QString &iconName)
 // Create an action to activate a designer tool
 static inline QAction *createEditModeAction(QActionGroup *ag,
                                      const QList<int> &context,
-                                     Core::ActionManagerInterface *am,
+                                     Core::ActionManager *am,
                                      Core::IActionContainer *medit,
                                      const QString &actionName,
                                      const QString &name,
@@ -124,7 +124,7 @@ static inline QAction *createEditModeAction(QActionGroup *ag,
 
 // Create a menu separato
 static inline QAction * createSeparator(QObject *parent,
-                                 Core::ActionManagerInterface *am,
+                                 Core::ActionManager *am,
                                  const QList<int> &context,
                                  Core::IActionContainer *container,
                                  const QString &name = QString(),
@@ -139,7 +139,7 @@ static inline QAction * createSeparator(QObject *parent,
 
 // Create a tool action
 static inline void addToolAction(QAction *a,
-                   Core::ActionManagerInterface *am,
+                   Core::ActionManager *am,
                    const QList<int> &context,
                    const QString &name,
                    Core::IActionContainer *c1,
@@ -305,7 +305,7 @@ void FormEditorW::deleteInstance()
 
 void FormEditorW::setupActions()
 {
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
     Core::ICommand *command;
 
     //menus
@@ -443,7 +443,7 @@ QToolBar *FormEditorW::createEditorToolBar() const
 {
     QToolBar *rc = new QToolBar;
     rc->addSeparator();
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
     const QStringList::const_iterator cend = m_toolActionIds.constEnd();
     for (QStringList::const_iterator it = m_toolActionIds.constBegin(); it != cend; ++it) {
         Core::ICommand *cmd = am->command(*it);
@@ -457,7 +457,7 @@ QToolBar *FormEditorW::createEditorToolBar() const
     return rc;
 }
 
-Core::IActionContainer *FormEditorW::createPreviewStyleMenu(Core::ActionManagerInterface *am,
+Core::IActionContainer *FormEditorW::createPreviewStyleMenu(Core::ActionManager *am,
                                                             QActionGroup *actionGroup)
 {
     const QString menuId = QLatin1String(M_FORMEDITOR_PREVIEW);
diff --git a/src/plugins/designer/formeditorw.h b/src/plugins/designer/formeditorw.h
index 0e36ff3b9ffb55a51051e60162888230d7dc5fc6..164c985a3f105801a660b3bb803876ebaa2b7b02 100644
--- a/src/plugins/designer/formeditorw.h
+++ b/src/plugins/designer/formeditorw.h
@@ -65,7 +65,7 @@ namespace qdesigner_internal {
 QT_END_NAMESPACE
 
 namespace Core {
-class ActionManagerInterface;
+class ActionManager;
 class IActionContainer;
 class ICore;
 class IEditor;
@@ -142,7 +142,7 @@ private:
     typedef QList<FormWindowEditor *> EditorList;
 
     void setupActions();
-    Core::IActionContainer *createPreviewStyleMenu(Core::ActionManagerInterface *am,
+    Core::IActionContainer *createPreviewStyleMenu(Core::ActionManager *am,
                                                    QActionGroup *actionGroup);
 
     void critical(const QString &errorMessage);
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index 15e69b3c8faeebf951e501179701f0a08d6edd25..07557d55c2135fd461fc69436400298c57cdc3e2 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -36,7 +36,7 @@
 #include "fakevimconstants.h"
 #include "fakevimhandler.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/icore.h>
@@ -116,7 +116,7 @@ bool FakeVimPlugin::initialize(const QStringList &arguments, QString *error_mess
     m_core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>();
     QTC_ASSERT(m_core, return false);
 
-    Core::ActionManagerInterface *actionManager = m_core->actionManager();
+    Core::ActionManager *actionManager = m_core->actionManager();
     QTC_ASSERT(actionManager, return false);
 
     QList<int> globalcontext;
diff --git a/src/plugins/find/findplugin.cpp b/src/plugins/find/findplugin.cpp
index 0bf2ec4fdb929487f2e600807c6075eaef1a070c..a61e22df48908a0e564e25137ee80c6fc8ef3ba2 100644
--- a/src/plugins/find/findplugin.cpp
+++ b/src/plugins/find/findplugin.cpp
@@ -38,7 +38,7 @@
 #include "findtoolwindow.h"
 #include "searchresultwindow.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/iactioncontainer.h>
 #include <coreplugin/actionmanager/icommand.h>
 #include <coreplugin/coreconstants.h>
@@ -126,7 +126,7 @@ void FindPlugin::openFindFilter()
 
 void FindPlugin::setupMenu()
 {
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
     Core::IActionContainer *medit = am->actionContainer(Core::Constants::M_EDIT);
     Core::IActionContainer *mfind = am->createMenu(Constants::M_FIND);
     medit->addMenu(mfind, Core::Constants::G_EDIT_FIND);
@@ -149,7 +149,7 @@ void FindPlugin::setupMenu()
 
 void FindPlugin::setupFilterMenuItems()
 {
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
     QList<IFindFilter*> findInterfaces =
         ExtensionSystem::PluginManager::instance()->getObjects<IFindFilter>();
     Core::ICommand *cmd;
diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp
index edfb5015baaa1ac5a85e23471c71354264e66e0a..359b4a4e9c79bb100350fdb80c6bf87ff5318870 100644
--- a/src/plugins/find/findtoolbar.cpp
+++ b/src/plugins/find/findtoolbar.cpp
@@ -37,7 +37,7 @@
 
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/findplaceholder.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/iactioncontainer.h>
 #include <coreplugin/actionmanager/icommand.h>
 
@@ -138,7 +138,7 @@ FindToolBar::FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumen
     QList<int> globalcontext;
     globalcontext << Core::Constants::C_GLOBAL_ID;
 
-    Core::ActionManagerInterface *am = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()->actionManager();
+    Core::ActionManager *am = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()->actionManager();
     Core::IActionContainer *mfind = am->actionContainer(Constants::M_FIND);
     Core::ICommand *cmd;
 
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 5ae6d0b7dac1bb5bf0fe86d5af041055772c7482..0886d1336a657745df89bd8c66939377b307ffdf 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -38,12 +38,12 @@
 #include "gitplugin.h"
 #include "gitsubmiteditor.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/messagemanager.h>
-#include <coreplugin/progressmanager/progressmanagerinterface.h>
+#include <coreplugin/progressmanager/progressmanager.h>
 #include <coreplugin/uniqueidmanager.h>
 #include <texteditor/itexteditor.h>
 #include <utils/qtcassert.h>
@@ -999,7 +999,7 @@ void GitCommand::execute(const QStringList &arguments,
     Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>();
     core->progressManager()->addTask(task, taskName
                             , QLatin1String("Git.action")
-                            , Core::ProgressManagerInterface::CloseOnSuccess);
+                            , Core::ProgressManager::CloseOnSuccess);
 }
 
 void GitCommand::run(const QStringList &arguments,
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 50214c7c3542f0b37c1e03ab75310a0a5415316a..159249760129369590c7eb4ee97855eb2b05a5e6 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -47,7 +47,7 @@
 #include <coreplugin/filemanager.h>
 #include <coreplugin/messagemanager.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 
 #include <utils/qtcassert.h>
@@ -210,14 +210,10 @@ GitPlugin *GitPlugin::instance()
 static const VCSBase::VCSBaseSubmitEditorParameters submitParameters = {
     Git::Constants::SUBMIT_MIMETYPE,
     Git::Constants::GITSUBMITEDITOR_KIND,
-    Git::Constants::C_GITSUBMITEDITOR,
-    Core::Constants::UNDO,
-    Core::Constants::REDO,
-    Git::Constants::SUBMIT_CURRENT,
-    Git::Constants::DIFF_SELECTED
+    Git::Constants::C_GITSUBMITEDITOR
 };
 
-static Core::ICommand *createSeparator(Core::ActionManagerInterface *am,
+static Core::ICommand *createSeparator(Core::ActionManager *am,
                                        const QList<int> &context,
                                        const QString &id,
                                        QObject *parent)
@@ -267,7 +263,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *error_message)
     addObject(m_versionControl);
 
     //register actions
-    Core::ActionManagerInterface *actionManager = m_core->actionManager();
+    Core::ActionManager *actionManager = m_core->actionManager();
 
     Core::IActionContainer *toolsContainer =
         actionManager->actionContainer(Core::Constants::M_TOOLS);
@@ -640,10 +636,7 @@ Core::IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const Commit
     QTC_ASSERT(submitEditor, return 0);
     // The actions are for some reason enabled by the context switching
     // mechanism. Disable them correctly.
-    m_submitCurrentAction->setEnabled(!cd.stagedFiles.empty());
-    m_diffSelectedFilesAction->setEnabled(false);
-    m_undoAction->setEnabled(false);
-    m_redoAction->setEnabled(false);
+    submitEditor->registerActions(m_undoAction, m_redoAction, m_submitCurrentAction, m_diffSelectedFilesAction);
     submitEditor->setCommitData(cd);
     connect(submitEditor, SIGNAL(diffStaged(QStringList)), this, SLOT(submitEditorDiffStaged(QStringList)));
     connect(submitEditor, SIGNAL(diffUnstaged(QStringList)), this, SLOT(submitEditorDiffUnstaged(QStringList)));
diff --git a/src/plugins/helloworld/helloworldplugin.cpp b/src/plugins/helloworld/helloworldplugin.cpp
index a8eb79c051914076687af58b9f659b58a648bb79..e4e93bd82bc313b183fc45199791a34b56a38f80 100644
--- a/src/plugins/helloworld/helloworldplugin.cpp
+++ b/src/plugins/helloworld/helloworldplugin.cpp
@@ -91,7 +91,7 @@ bool HelloWorldPlugin::initialize(const QStringList &arguments, QString *error_m
     connect(helloWorldAction, SIGNAL(triggered()), SLOT(sayHelloWorld()));
 
     // Register the action with the action manager
-    Core::ActionManagerInterface *actionManager = core->actionManager();
+    Core::ActionManager *actionManager = core->actionManager();
     Core::ICommand *command =
             actionManager->registerAction(
                     helloWorldAction, "HelloWorld.HelloWorldAction", context);
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index 3ed3263478d36ec732d984170715cf3d84c688f7..a5854d27e54e79c150beef2f03964c39c1051681 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -49,7 +49,7 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/modemanager.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/minisplitter.h>
 #include <coreplugin/modemanager.h>
 #include <coreplugin/rightpane.h>
@@ -165,7 +165,7 @@ bool HelpPlugin::initialize(const QStringList & /*arguments*/, QString *)
     connect(m_bookmarkWidget, SIGNAL(addBookmark()),
         this, SLOT(addBookmark()));
 
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
     Core::ICommand *cmd;
 
     // Add Home, Previous and Next actions (used in the toolbar)
@@ -607,7 +607,7 @@ void HelpPlugin::activateSearch()
 QToolBar *HelpPlugin::createToolBar()
 {
     QToolBar *toolWidget = new QToolBar;
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
     toolWidget->addAction(am->command(QLatin1String("Help.Home"))->action());
     toolWidget->addAction(am->command(QLatin1String("Help.Previous"))->action());
     toolWidget->addAction(am->command(QLatin1String("Help.Next"))->action());
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index aa4b0a4fa4841f82e734a245067294ef6dde6d69..ac916b4831aa5b007af73d24f0832fb1e2c08cd2 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -43,7 +43,7 @@
 #include "perforceversioncontrol.h"
 #include "settingspage.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/filemanager.h>
@@ -179,11 +179,7 @@ PerforcePlugin::PerforcePlugin() :
 static const VCSBase::VCSBaseSubmitEditorParameters submitParameters = {
     Perforce::Constants::SUBMIT_MIMETYPE,
     Perforce::Constants::PERFORCESUBMITEDITOR_KIND,
-    Perforce::Constants::C_PERFORCESUBMITEDITOR,
-    Core::Constants::UNDO,
-    Core::Constants::REDO,
-    Perforce::Constants::SUBMIT_CURRENT,
-    Perforce::Constants::DIFF_SELECTED
+    Perforce::Constants::C_PERFORCESUBMITEDITOR
 };
 
 bool PerforcePlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage)
@@ -229,7 +225,7 @@ bool PerforcePlugin::initialize(const QStringList & /*arguments*/, QString *erro
 
 
     //register actions
-    Core::ActionManagerInterface *am = m_coreInstance->actionManager();
+    Core::ActionManager *am = m_coreInstance->actionManager();
 
     Core::IActionContainer *mtools =
         am->actionContainer(Core::Constants::M_TOOLS);
@@ -558,12 +554,8 @@ Core::IEditor *PerforcePlugin::openPerforceSubmitEditor(const QString &fileName,
     PerforceSubmitEditor *submitEditor = dynamic_cast<PerforceSubmitEditor*>(editor);
     QTC_ASSERT(submitEditor, return 0);
     submitEditor->restrictToProjectFiles(depotFileNames);
+    submitEditor->registerActions(m_undoAction, m_redoAction, m_submitCurrentLogAction, m_diffSelectedFiles);
     connect(submitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(slotDiff(QStringList)));
-    // The actions are for some reason enabled by the context switching
-    // mechanism. Disable them correctly.
-    m_diffSelectedFiles->setEnabled(false);
-    m_undoAction->setEnabled(false);
-    m_redoAction->setEnabled(false);
     return editor;
 }
 
diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp
index 72eb1766f11f24661d25671d53c2a4ae06995c97..5338865f504bf35059c9c4a6b89434217d456d8c 100644
--- a/src/plugins/projectexplorer/buildmanager.cpp
+++ b/src/plugins/projectexplorer/buildmanager.cpp
@@ -40,7 +40,7 @@
 #include "projectexplorer.h"
 #include "taskwindow.h"
 
-#include <coreplugin/progressmanager/progressmanagerinterface.h>
+#include <coreplugin/progressmanager/progressmanager.h>
 #include <coreplugin/progressmanager/futureprogress.h>
 #include <extensionsystem/pluginmanager.h>
 #include <utils/qtcassert.h>
@@ -178,7 +178,7 @@ void BuildManager::startBuildQueue()
 {
     if (!m_running) {
         // Progress Reporting
-        Core::ProgressManagerInterface *progressManager =
+        Core::ProgressManager *progressManager =
                 ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()->progressManager();
         m_progressFutureInterface = new QFutureInterface<void>;
         m_progressWatcher.setFuture(m_progressFutureInterface->future());
diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp
index 597a6daba6ee7c2266d38c96b29b75668dda7fdc..af396124b5070870cd9fc4a9051e130f18c78262 100644
--- a/src/plugins/projectexplorer/outputwindow.cpp
+++ b/src/plugins/projectexplorer/outputwindow.cpp
@@ -35,7 +35,7 @@
 #include "projectexplorerconstants.h"
 #include "runconfiguration.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icore.h>
 #include <find/basetextfind.h>
@@ -78,7 +78,7 @@ OutputPane::OutputPane(Core::ICore *core)
             this, SLOT(reRunRunControl()));
 
     // Stop
-    Core::ActionManagerInterface *am = core->actionManager();
+    Core::ActionManager *am = core->actionManager();
     QList<int> globalcontext;
     globalcontext.append(Core::Constants::C_GLOBAL_ID);
 
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 3548023d641f3448fc44af02d09830892714a224..081b57b941a23701ccc75e8b57a3845894516fc6 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -66,7 +66,7 @@
 #include <coreplugin/filemanager.h>
 #include <coreplugin/modemanager.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/editormanager/ieditor.h>
 #include <coreplugin/editormanager/ieditorfactory.h>
@@ -155,7 +155,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin
 {
     ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
     m_core = pm->getObject<Core::ICore>();
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
 
     addObject(this);
 
diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp
index c8fdaf50c98085aa204198b05111e9ed268b45e0..42f967c762e928ec96332679fec1536540325db4 100644
--- a/src/plugins/projectexplorer/session.cpp
+++ b/src/plugins/projectexplorer/session.cpp
@@ -45,7 +45,7 @@
 #include <coreplugin/filemanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/editormanager/ieditor.h>
-#include <coreplugin/progressmanager/progressmanagerinterface.h>
+#include <coreplugin/progressmanager/progressmanager.h>
 #include <coreplugin/modemanager.h>
 
 #include <texteditor/itexteditor.h>
@@ -161,7 +161,7 @@ bool SessionFile::load(const QString &fileName)
 
     m_core->progressManager()->addTask(future.future(), tr("Session"),
        QLatin1String("ProjectExplorer.SessionFile.Load"),
-       Core::ProgressManagerInterface::CloseOnSuccess);
+       Core::ProgressManager::CloseOnSuccess);
 
     const QStringList &keys = reader.restoreValue(QLatin1String("valueKeys")).toStringList();
     foreach (const QString &key, keys) {
diff --git a/src/plugins/qhelpproject/qhelpprojectmanager.cpp b/src/plugins/qhelpproject/qhelpprojectmanager.cpp
index 88870e675e0b5e136ddd484c5b56dd35acfe1850..34d7cf7674cdc2faca54f185d8614af7a2a418bb 100644
--- a/src/plugins/qhelpproject/qhelpprojectmanager.cpp
+++ b/src/plugins/qhelpproject/qhelpprojectmanager.cpp
@@ -52,7 +52,7 @@ bool QHelpProjectManager::init(ExtensionSystem::PluginManager *pm, QString *erro
 {
     m_pm = pm;
     m_core = m_pm->interface<QWorkbench::ICore>();
-    QWorkbench::ActionManagerInterface *am = m_core->actionManager();
+    QWorkbench::ActionManager *am = m_core->actionManager();
 
     m_projectContext = m_core->uniqueIDManager()->
         uniqueIdentifier(QLatin1String("QHelpProject"));
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
index debb89dae447d23d8f0aba962afc127251c53835..9e246cf109525d1a58771e63e8a2210242656991 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
@@ -52,7 +52,7 @@
 #include <projectexplorer/projectnodes.h>
 #include <coreplugin/uniqueidmanager.h>
 #include <coreplugin/mimedatabase.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <texteditor/texteditoractionhandler.h>
 
 #include <QtCore/qplugin.h>
@@ -82,7 +82,7 @@ Qt4ProjectManagerPlugin::~Qt4ProjectManagerPlugin()
     delete m_qt4ProjectManager;
 }
 /*
-static Core::ICommand *createSeparator(Core::ActionManagerInterface *am,
+static Core::ICommand *createSeparator(Core::ActionManager *am,
                                        QObject *parent,
                                        const QString &name,
                                        const QList<int> &context)
@@ -100,7 +100,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList & /*arguments*/, QStr
 
     m_projectExplorer = m_core->pluginManager()->getObject<ProjectExplorer::ProjectExplorerPlugin>();
 
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
 
     //create and register objects
     m_qt4ProjectManager = new Qt4Manager(this, m_core);
diff --git a/src/plugins/qtscripteditor/qtscripteditor.cpp b/src/plugins/qtscripteditor/qtscripteditor.cpp
index 39ba4f0d9426d1fa7b76792f2255dc7eda52fba3..d471583a8011026600415054adba3baef9813187 100644
--- a/src/plugins/qtscripteditor/qtscripteditor.cpp
+++ b/src/plugins/qtscripteditor/qtscripteditor.cpp
@@ -39,7 +39,7 @@
 #include <indenter.h>
 
 #include <coreplugin/icore.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <texteditor/basetextdocument.h>
 #include <texteditor/fontsettings.h>
 #include <texteditor/textblockiterator.h>
diff --git a/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp b/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp
index f51d8a8329e29a558ea4f3fa73790eb7cb204b98..0ed9105c181fe2b7d1ad84e4408a45f42356154b 100644
--- a/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp
+++ b/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp
@@ -35,7 +35,7 @@
 #include "qtscripteditorconstants.h"
 #include "qtscripteditor.h"
 
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/scriptmanager/scriptmanagerinterface.h>
 
 #include <QtGui/QAction>
diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
index d03692b9d6d3d6b453382908c358889fad591b59..2c14ccd713c14c7139571d4942c62ab2d9dc4292 100644
--- a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
+++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
@@ -42,7 +42,7 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/mimedatabase.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <texteditor/fontsettings.h>
 #include <texteditor/storagesettings.h>
 #include <texteditor/texteditorconstants.h>
@@ -131,7 +131,7 @@ void QtScriptEditorPlugin::initializeEditor(QtScriptEditor::Internal::ScriptEdit
 
 void QtScriptEditorPlugin::registerActions(Core::ICore *core)
 {
-    Core::ActionManagerInterface *am = core->actionManager();
+    Core::ActionManager *am = core->actionManager();
     Core::IActionContainer *mcontext = am->createMenu(QtScriptEditor::Constants::M_CONTEXT);
 
     QAction *action = new QAction(this);
diff --git a/src/plugins/quickopen/quickopenplugin.cpp b/src/plugins/quickopen/quickopenplugin.cpp
index d38502815dee1a50cae6e678e32549e4ad97db62..6eedeee68f5b2ff20da93d362f6ad19329083965 100644
--- a/src/plugins/quickopen/quickopenplugin.cpp
+++ b/src/plugins/quickopen/quickopenplugin.cpp
@@ -48,7 +48,7 @@
 #include <coreplugin/baseview.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/progressmanager/progressmanagerinterface.h>
+#include <coreplugin/progressmanager/progressmanager.h>
 #include <coreplugin/actionmanager/actionmanager.h>
 #include <qtconcurrent/QtConcurrentTools>
 
@@ -246,7 +246,7 @@ void QuickOpenPlugin::refresh(QList<IQuickOpenFilter*> filters)
         filters = m_filter;
     QFuture<void> task = QtConcurrent::run(&IQuickOpenFilter::refresh, filters);
     Core::FutureProgress *progress = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()
-            ->progressManager()->addTask(task, tr("Indexing"), Constants::TASK_INDEX, Core::ProgressManagerInterface::CloseOnSuccess);
+            ->progressManager()->addTask(task, tr("Indexing"), Constants::TASK_INDEX, Core::ProgressManager::CloseOnSuccess);
     connect(progress, SIGNAL(finished()), this, SLOT(saveSettings()));
 }
 
diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp
index 2d8c3370bf09dfb1274165248eba95cbc0cc39ba..382297d1a8e24181e6a8f5099c1f929e8d700227 100644
--- a/src/plugins/resourceeditor/resourceeditorplugin.cpp
+++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp
@@ -42,7 +42,7 @@
 #include <coreplugin/mimedatabase.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 
 #include <utils/qtcassert.h>
@@ -88,7 +88,7 @@ bool ResourceEditorPlugin::initialize(const QStringList & /*arguments*/, QString
     error_message->clear();
 
     // Register undo and redo
-    Core::ActionManagerInterface * const actionManager = m_core->actionManager();
+    Core::ActionManager * const actionManager = m_core->actionManager();
     int const pluginId = m_core->uniqueIDManager()->uniqueIdentifier(
             Constants::C_RESOURCEEDITOR);
     QList<int> const idList = QList<int>() << pluginId;
diff --git a/src/plugins/snippets/snippetsplugin.cpp b/src/plugins/snippets/snippetsplugin.cpp
index d46e773b7327cbae5409ac8eb3df5099fcb799db..f0ad500ce6ec00f61eccd9540427e8d7b4912cf6 100644
--- a/src/plugins/snippets/snippetsplugin.cpp
+++ b/src/plugins/snippets/snippetsplugin.cpp
@@ -72,7 +72,7 @@ void SnippetsPlugin::extensionsInitialized()
 bool SnippetsPlugin::initialize(const QStringList & /*arguments*/, QString *)
 {
     m_core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>();
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
 
     QList<int> context;
     context << m_core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR);
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 36182eb94a0474badab795228e9e90c717a3c6be..3f1f1ec0c5f51427225cde7fde5a08a8e3afcf02 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -53,7 +53,7 @@
 #include <coreplugin/messagemanager.h>
 #include <coreplugin/mimedatabase.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <projectexplorer/ProjectExplorerInterfaces>
 #include <utils/qtcassert.h>
@@ -245,11 +245,7 @@ void SubversionPlugin::cleanChangeTmpFile()
 static const VCSBase::VCSBaseSubmitEditorParameters submitParameters = {
     Subversion::Constants::SUBVERSION_SUBMIT_MIMETYPE,
     Subversion::Constants::SUBVERSIONCOMMITEDITOR_KIND,
-    Subversion::Constants::SUBVERSIONCOMMITEDITOR,
-    Core::Constants::UNDO,
-    Core::Constants::REDO,
-    Subversion::Constants::SUBMIT_CURRENT,
-    Subversion::Constants::DIFF_SELECTED
+    Subversion::Constants::SUBVERSIONCOMMITEDITOR
 };
 
 bool SubversionPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage)
@@ -293,7 +289,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments*/, QString *er
     addObject(m_subversionOutputWindow);
 
     //register actions
-    Core::ActionManagerInterface *ami = m_coreInstance->actionManager();
+    Core::ActionManager *ami = m_coreInstance->actionManager();
     Core::IActionContainer *toolsContainer = ami->actionContainer(M_TOOLS);
 
     Core::IActionContainer *subversionMenu =
@@ -529,11 +525,7 @@ SubversionSubmitEditor *SubversionPlugin::openSubversionSubmitEditor(const QStri
     Core::IEditor *editor = m_coreInstance->editorManager()->openEditor(fileName, QLatin1String(Constants::SUBVERSIONCOMMITEDITOR_KIND));
     SubversionSubmitEditor *submitEditor = qobject_cast<SubversionSubmitEditor*>(editor);
     QTC_ASSERT(submitEditor, /**/);
-    // The actions are for some reason enabled by the context switching
-    // mechanism. Disable them correctly.
-    m_submitDiffAction->setEnabled(false);
-    m_submitUndoAction->setEnabled(false);
-    m_submitRedoAction->setEnabled(false);
+    submitEditor->registerActions(m_submitUndoAction, m_submitRedoAction, m_submitCurrentLogAction, m_submitDiffAction);
     connect(submitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(diffFiles(QStringList)));
 
     return submitEditor;
diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp
index 60072084c7b9533124f6f04639010f8eabb6841c..01effb036dabc69c7ebeaf059b4f2d1392792f0b 100644
--- a/src/plugins/texteditor/basefilefind.cpp
+++ b/src/plugins/texteditor/basefilefind.cpp
@@ -34,7 +34,7 @@
 #include "basefilefind.h"
 
 #include <coreplugin/stylehelper.h>
-#include <coreplugin/progressmanager/progressmanagerinterface.h>
+#include <coreplugin/progressmanager/progressmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <find/textfindconstants.h>
 #include <texteditor/itexteditor.h>
diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp
index 12475d221b1cc98d02fba1aa8a245a472d41ef51..b9209d33abe4951a319cf28f41cfede38cf5ab7b 100644
--- a/src/plugins/texteditor/texteditoractionhandler.cpp
+++ b/src/plugins/texteditor/texteditoractionhandler.cpp
@@ -40,7 +40,7 @@
 #include <quickopen/quickopenmanager.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <utils/qtcassert.h>
 
@@ -111,7 +111,7 @@ void TextEditorActionHandler::createActions()
     m_gotoAction      = registerNewAction(QLatin1String(Core::Constants::GOTO),      this, SLOT(gotoAction()));
     m_printAction     = registerNewAction(QLatin1String(Core::Constants::PRINT),     this, SLOT(printAction()));
 
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
 
     Core::IActionContainer *medit = am->actionContainer(Core::Constants::M_EDIT);
     Core::IActionContainer *advancedMenu = am->actionContainer(Core::Constants::M_EDIT_ADVANCED);
diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp
index 01a6ccdf95fa3137cd35e5b4d89c5806a9e08396..948a6f6ca45e54d4d5e1efeea032d735aaff5488 100644
--- a/src/plugins/texteditor/texteditorplugin.cpp
+++ b/src/plugins/texteditor/texteditorplugin.cpp
@@ -46,7 +46,7 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/mimedatabase.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/icommand.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <texteditor/texteditoractionhandler.h>
@@ -120,7 +120,7 @@ bool TextEditorPlugin::initialize(const QStringList & /*arguments*/, QString *er
 
     int contextId = m_core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR);
     QList<int> context = QList<int>() << contextId;
-    Core::ActionManagerInterface *am = m_core->actionManager();
+    Core::ActionManager *am = m_core->actionManager();
 
     // Add shortcut for invoking automatic completion
     QShortcut *completionShortcut = new QShortcut(m_core->mainWindow());
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index 25fbce7634c63e8a6f206df75ef113bd91448039..2bb179a531e2c270cae9701c2a03c94a7b385e4e 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -37,7 +37,7 @@
 #include <coreplugin/ifile.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/actionmanager/actionmanagerinterface.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 
 #include <utils/submiteditorwidget.h>
 #include <find/basetextfind.h>
@@ -57,17 +57,6 @@
 enum { debug = 0 };
 enum { wantToolBar = 0 };
 
-static inline QAction *actionFromId(const Core::ICore *core, const char *id)
-{
-    QAction *rc = 0;
-    if (id)
-       if (const Core::ICommand *cmd = core->actionManager()->command(id))
-            rc = cmd->action();
-    if (debug)
-        qDebug() << Q_FUNC_INFO << id << rc;
-    return rc;
-}
-
 namespace VCSBase {
 
 struct VCSBaseSubmitEditorPrivate {
@@ -83,10 +72,8 @@ struct VCSBaseSubmitEditorPrivate {
     VCSBase::Internal::SubmitEditorFile *m_file;
     QList<int> m_contexts;
 
-    QPointer<QAction> m_undoAction;
-    QPointer<QAction> m_redoAction;
-    QPointer<QAction> m_submitAction;
     QPointer<QAction> m_diffAction;
+    QPointer<QAction> m_submitAction;
 };
 
 VCSBaseSubmitEditorPrivate::VCSBaseSubmitEditorPrivate(const VCSBaseSubmitEditorParameters *parameters,
@@ -96,11 +83,7 @@ VCSBaseSubmitEditorPrivate::VCSBaseSubmitEditorPrivate(const VCSBaseSubmitEditor
     m_widget(editorWidget),
     m_toolWidget(0),
     m_parameters(parameters),
-    m_file(new VCSBase::Internal::SubmitEditorFile(QLatin1String(m_parameters->mimeType), q)),
-    m_undoAction(actionFromId(m_core, m_parameters->undoActionId)),
-    m_redoAction(actionFromId(m_core, m_parameters->redoActionId)),
-    m_submitAction(actionFromId(m_core, m_parameters->submitActionId)),
-    m_diffAction(actionFromId(m_core, m_parameters->diffActionId))
+    m_file(new VCSBase::Internal::SubmitEditorFile(QLatin1String(m_parameters->mimeType), q))
 {
     m_contexts << m_core->uniqueIDManager()->uniqueIdentifier(m_parameters->context);
 }
@@ -113,7 +96,6 @@ VCSBaseSubmitEditor::VCSBaseSubmitEditor(const VCSBaseSubmitEditorParameters *pa
     // We are always clean to prevent the editor manager from asking to save.
     connect(m_d->m_file, SIGNAL(saveMe(QString)), this, SLOT(save(QString)));
 
-    m_d->m_widget->registerActions(m_d->m_undoAction, m_d->m_redoAction,  m_d->m_submitAction, m_d->m_diffAction);
     connect(m_d->m_widget, SIGNAL(diffSelected(QStringList)), this, SLOT(slotDiffSelectedVCSFiles(QStringList)));
     connect(m_d->m_widget->descriptionEdit(), SIGNAL(textChanged()), this, SLOT(slotDescriptionChanged()));
 
@@ -129,6 +111,20 @@ VCSBaseSubmitEditor::~VCSBaseSubmitEditor()
     delete m_d;
 }
 
+void VCSBaseSubmitEditor::registerActions(QAction *editorUndoAction,  QAction *editorRedoAction,
+                                          QAction *submitAction, QAction *diffAction)\
+{
+    m_d->m_widget->registerActions(editorUndoAction, editorRedoAction, submitAction, diffAction);
+    m_d->m_diffAction = diffAction;
+    m_d->m_submitAction = submitAction;
+}
+
+void VCSBaseSubmitEditor::unregisterActions(QAction *editorUndoAction,  QAction *editorRedoAction,
+                           QAction *submitAction, QAction *diffAction)
+{
+    m_d->m_widget->unregisterActions(editorUndoAction, editorRedoAction, submitAction, diffAction);
+    m_d->m_diffAction = m_d->m_submitAction = 0;
+}
 int VCSBaseSubmitEditor::fileNameColumn() const
 {
     return m_d->m_widget->fileNameColumn();
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h
index d3e9166b35fd0be98a7b158755e43812e1fe692d..a11d117f00bb0c1a40888bd4c15f4bf4ee6f68fe 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.h
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h
@@ -44,6 +44,7 @@
 QT_BEGIN_NAMESPACE
 class QIcon;
 class QAbstractItemModel;
+class QAction;
 QT_END_NAMESPACE
 
 namespace Core {
@@ -61,10 +62,6 @@ struct VCSBASE_EXPORT VCSBaseSubmitEditorParameters {
     const char *mimeType;
     const char *kind;
     const char *context;
-    const char *undoActionId;
-    const char *redoActionId;
-    const char *submitActionId;
-    const char *diffActionId;
 };
 
 /* Base class for a submit editor based on the Core::Utils::SubmitEditorWidget
@@ -86,7 +83,8 @@ struct VCSBASE_EXPORT VCSBaseSubmitEditorParameters {
  * signal and then asking the IFile interface of the editor to save the file
  * within a IFileManager::blockFileChange() section
  * and to launch the submit process. In addition, the action registered
- * for submit should be connected to a slot triggering the close of the
+ * for submit sho src/libs/utils/submiteditorwidget.h
+uld be connected to a slot triggering the close of the
  * current editor in the editor manager. */
 
 class VCSBASE_EXPORT VCSBaseSubmitEditor : public Core::IEditor
@@ -102,6 +100,12 @@ protected:
                                  Core::Utils::SubmitEditorWidget *editorWidget);
 
 public:
+    // Register the actions with the submit editor widget.
+    void registerActions(QAction *editorUndoAction,  QAction *editorRedoAction,
+                         QAction *submitAction = 0, QAction *diffAction = 0);
+    void unregisterActions(QAction *editorUndoAction,  QAction *editorRedoAction,
+                           QAction *submitAction = 0, QAction *diffAction = 0);
+
     virtual ~VCSBaseSubmitEditor();
 
     int fileNameColumn() const;