diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java
index f929e7ba3fd48d57467a6b760a78ef2289d8ba56..14c3016a50f4838c027cfc575094256176b9bef2 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java
@@ -17,6 +17,9 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.kernel.ui.internal;
 
+import java.util.EventObject;
+
+import org.eclipse.emf.common.command.CommandStackListener;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.jface.action.IMenuManager;
@@ -24,6 +27,8 @@ import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.ISharedImages;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.ActionFactory;
+import org.fortiss.tooling.kernel.interfaces.ITopLevelElementChangeListener;
+import org.fortiss.tooling.kernel.interfaces.ITopLevelElementContext;
 import org.fortiss.tooling.kernel.model.IRemovable;
 import org.fortiss.tooling.kernel.services.ICommandStackService;
 import org.fortiss.tooling.kernel.services.IPersistencyService;
@@ -39,7 +44,8 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
  * @version $Rev$
  * @ConQAT.Rating YELLOW Hash: 5DDB14A5557BDA2375928D87F4F4B2BB
  */
-public class ActionService implements IActionService {
+public class ActionService implements IActionService,
+		ITopLevelElementChangeListener, CommandStackListener {
 
 	/** The group id of the global default action group. */
 	public static final String GROUP_GLOBAL_DEFAULTS = "globalDefaults";
@@ -94,6 +100,11 @@ public class ActionService implements IActionService {
 		}
 	};
 
+	/** Constructor. */
+	public ActionService() {
+
+	}
+
 	/** {@inheritDoc} */
 	@Override
 	public void addGlobalDefaultActionSectionToMenu(IMenuManager menuManager) {
@@ -148,4 +159,22 @@ public class ActionService implements IActionService {
 		globalDeleteAction.setTarget(target);
 		globalDeleteAction.setEnabled(canDelete);
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void commandStackChanged(EventObject event) {
+		refresh();
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void topLevelElementAdded(ITopLevelElementContext elementContext) {
+		elementContext.addCommandStackListener(this);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void topLevelElementRemoved(ITopLevelElementContext elementContext) {
+		elementContext.removeCommandStackListener(this);
+	}
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/NavigatorService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/NavigatorService.java
index 08fc34ec90eb5d53a32d08aae88167eda0a11342..bedb37ba6418c7670d7c29eb3657015f481ee62b 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/NavigatorService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/NavigatorService.java
@@ -49,7 +49,6 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
  * @version $Rev$
  * @ConQAT.Rating YELLOW Hash: 0DBA8B19BC7741F646B0FECB369E177F
  */
-// TODO (FH): move UI parts
 public class NavigatorService implements INavigatorService,
 		ITopLevelElementChangeListener, CommandStackListener {
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/BindingContributor.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/BindingContributor.java
index 935be9db111ad122bd6bab3788636eca8c2b2b0b..effb2e0b33521f1d996b5408d824801adb95a217 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/BindingContributor.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/editor/BindingContributor.java
@@ -20,10 +20,8 @@ package org.fortiss.tooling.kernel.ui.internal.editor;
 import org.conqat.lib.commons.assertion.CCSMPre;
 import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.actions.ActionFactory;
 import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
 import org.fortiss.tooling.kernel.ui.interfaces.IActionContributingEditor;
-import org.fortiss.tooling.kernel.ui.internal.ActionService;
 import org.fortiss.tooling.kernel.ui.services.IActionService;
 
 /**
@@ -50,12 +48,7 @@ public final class BindingContributor extends
 	public void setActiveEditor(IEditorPart part) {
 		CCSMPre.isTrue(part instanceof BindingEditor,
 				"This contributor may only be used for CCTSBindingEditors!");
-		IActionBars bars = getActionBars();
-		bars.setGlobalActionHandler(ActionFactory.UNDO.getId(),
-				((ActionService) IActionService.INSTANCE).globalUndoAction);
-		bars.setGlobalActionHandler(ActionFactory.REDO.getId(),
-				((ActionService) IActionService.INSTANCE).globalRedoAction);
-		bars.updateActionBars();
+		IActionService.INSTANCE.registerGlobalActions(getActionBars());
 		super.setActiveEditor(part);
 	}
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementChangeListener.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementChangeListener.java
index 0f411504d503069b5b8d800107ef9765d952662d..82f747e0af678ad5598f6615ae0e70c48f356158 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementChangeListener.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementChangeListener.java
@@ -29,8 +29,8 @@ package org.fortiss.tooling.kernel.interfaces;
 public interface ITopLevelElementChangeListener {
 
 	/** Notifies the listener about the adding of the given element. */
-	void topLevelElementAdded(ITopLevelElementContext elmentContext);
+	void topLevelElementAdded(ITopLevelElementContext elementContext);
 
 	/** Notifies the listener about the removal of the given element. */
-	void topLevelElementRemoved(ITopLevelElementContext elmentContext);
+	void topLevelElementRemoved(ITopLevelElementContext elementContext);
 }