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 db30d082a4c52ac0394af80ae3a0c41402354a2e..ddc263c04ea9ff3aa64625a46bacb9058f8f7fec 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
@@ -22,18 +22,14 @@ import java.util.EventObject;
 import org.eclipse.emf.common.command.CommandStackListener;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.resource.ImageDescriptor;
 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.extension.data.ITopLevelElement;
-import org.fortiss.tooling.kernel.service.ICommandStackService;
-import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
-import org.fortiss.tooling.kernel.service.IElementCompositorService;
 import org.fortiss.tooling.kernel.service.IPersistencyService;
 import org.fortiss.tooling.kernel.service.listener.IPersistencyServiceListener;
-import org.fortiss.tooling.kernel.ui.extension.base.EObjectActionBase;
+import org.fortiss.tooling.kernel.ui.internal.actions.DeleteAction;
+import org.fortiss.tooling.kernel.ui.internal.actions.RedoAction;
+import org.fortiss.tooling.kernel.ui.internal.actions.UndoAction;
 import org.fortiss.tooling.kernel.ui.service.IActionService;
 import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
 
@@ -51,75 +47,20 @@ public class ActionService implements IActionService,
 	/** The menu section ID of the global default action group. */
 	public static final String GLOBAL_DEFAULT_MENU_SECTION_ID = "globalDefaults";
 
-	/** The global undo action. */
-	public final EObjectActionBase globalUndoAction = new EObjectActionBase(
-			"Undo", PlatformUI.getWorkbench().getSharedImages()
-					.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)) {
-
-		@Override
-		public void run() {
-			if (getTarget() != null) {
-				ICommandStackService.INSTANCE.undo(getTarget());
-			}
-		}
-	};
-
-	/** The global redo action. */
-	public final EObjectActionBase globalRedoAction = new EObjectActionBase(
-			"Redo", PlatformUI.getWorkbench().getSharedImages()
-					.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)) {
-
-		@Override
-		public void run() {
-			if (getTarget() != null) {
-				ICommandStackService.INSTANCE.redo(getTarget());
-			}
-		}
-	};
-
 	/** The global delete action. */
-	public final DeleteAction globalDeleteAction = new DeleteAction("Delete",
-			PlatformUI.getWorkbench().getSharedImages()
-					.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
-
-	private static class DeleteAction extends EObjectActionBase {
-
-		private boolean useElementCompositor;
-
-		/**
-		 * @param text
-		 * @param image
-		 */
-		public DeleteAction(String text, ImageDescriptor image) {
-			super(text, image);
-		}
+	public final DeleteAction globalDeleteAction;
 
-		public void setUseElementCompositor(boolean useElementCompositor) {
-			this.useElementCompositor = useElementCompositor;
-		}
+	/** The global undo action. */
+	public final UndoAction globalUndoAction;
 
-		@Override
-		public void run() {
-			final EObject selectedObject = getTarget();
-			if (selectedObject == null) {
-				return;
-			}
-			ICommandStackService.INSTANCE.runAsCommand(selectedObject,
-					new Runnable() {
-						@Override
-						public void run() {
-							IElementCompositorService.INSTANCE
-									.decompose(selectedObject);
-						}
-					});
-		}
-	}
+	/** The global redo action. */
+	public final RedoAction globalRedoAction;
 
 	/** Constructor. */
 	public ActionService() {
-		globalUndoAction.setId(ActionFactory.UNDO.getId());
-		globalRedoAction.setId(ActionFactory.REDO.getId());
-		globalDeleteAction.setId(ActionFactory.DELETE.getId());
+		globalDeleteAction = new DeleteAction();
+		globalUndoAction = new UndoAction();
+		globalRedoAction = new RedoAction();
 
 		for (ITopLevelElement context : IPersistencyService.INSTANCE
 				.getTopLevelElements()) {
@@ -160,35 +101,9 @@ public class ActionService implements IActionService,
 	public void refresh() {
 		EObject target = EObjectSelectionUtils
 				.getCurrentSelectionFirstElement();
-
-		if (target == null) {
-			globalUndoAction.setEnabled(false);
-			globalRedoAction.setEnabled(false);
-			globalDeleteAction.setEnabled(false);
-			return;
-		}
-
-		globalUndoAction.setTarget(target);
-		globalUndoAction.setEnabled(ICommandStackService.INSTANCE
-				.canUndo(target));
-
-		globalRedoAction.setTarget(target);
-		globalRedoAction.setEnabled(ICommandStackService.INSTANCE
-				.canRedo(target));
-
-		globalDeleteAction.setTarget(target);
-		boolean enabled = false;
-		if (!IPersistencyService.INSTANCE.isTopLevelElement(target)) {
-			if (IElementCompositorService.INSTANCE.canDecompose(target)) {
-				enabled = true;
-				globalDeleteAction.setUseElementCompositor(true);
-			} else if (IConnectionCompositorService.INSTANCE
-					.canDisconnect(target)) {
-				enabled = true;
-				globalDeleteAction.setUseElementCompositor(false);
-			}
-		}
-		globalDeleteAction.setEnabled(enabled);
+		globalDeleteAction.refresh(target);
+		globalUndoAction.refresh(target);
+		globalRedoAction.refresh(target);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/DeleteAction.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/DeleteAction.java
new file mode 100644
index 0000000000000000000000000000000000000000..900ffeb927a1e333c2753ffaddaf5fd6363ade4f
--- /dev/null
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/DeleteAction.java
@@ -0,0 +1,97 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.tooling.kernel.ui.internal.actions;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.fortiss.tooling.kernel.service.ICommandStackService;
+import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
+import org.fortiss.tooling.kernel.service.IElementCompositorService;
+import org.fortiss.tooling.kernel.service.IPersistencyService;
+import org.fortiss.tooling.kernel.ui.extension.base.EObjectActionBase;
+
+/**
+ * The {@link DeleteAction} uses the {@link IElementCompositorService} and the
+ * {@link IConnectionCompositorService} to determine the enabled state of this
+ * action.
+ * 
+ * @author hoelzl
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash:
+ */
+public class DeleteAction extends EObjectActionBase {
+
+	/** Flag for using element or connection compositor. */
+	private boolean useElementCompositor;
+
+	/** Constructor. */
+	public DeleteAction() {
+		super("Delete", PlatformUI.getWorkbench().getSharedImages()
+				.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
+		setId(ActionFactory.DELETE.getId());
+	}
+
+	/** Refreshes the action's target and enabled state. */
+	public void refresh(EObject element) {
+		setTarget(element);
+		if (element == null) {
+			setEnabled(false);
+			return;
+		}
+
+		boolean enabled = false;
+		if (!IPersistencyService.INSTANCE.isTopLevelElement(element)) {
+			if (IElementCompositorService.INSTANCE.canDecompose(element)) {
+				enabled = true;
+				useElementCompositor = true;
+				return;
+			} else if (IConnectionCompositorService.INSTANCE
+					.canDisconnect(element)) {
+				enabled = true;
+				useElementCompositor = false;
+				return;
+			}
+		}
+		setEnabled(enabled);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void run() {
+		final EObject selectedObject = getTarget();
+		if (selectedObject == null) {
+			return;
+		}
+		ICommandStackService.INSTANCE.runAsCommand(selectedObject,
+				new Runnable() {
+					@Override
+					public void run() {
+						if (useElementCompositor) {
+							IElementCompositorService.INSTANCE
+									.decompose(selectedObject);
+						} else {
+							IConnectionCompositorService.INSTANCE
+									.disconnect(selectedObject);
+						}
+					}
+				});
+	}
+}
\ No newline at end of file
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/RedoAction.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/RedoAction.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e9cfbb89e756c7bde6eab820aaa42b9e48dd61e
--- /dev/null
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/RedoAction.java
@@ -0,0 +1,63 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.tooling.kernel.ui.internal.actions;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.fortiss.tooling.kernel.service.ICommandStackService;
+import org.fortiss.tooling.kernel.ui.extension.base.EObjectActionBase;
+
+/**
+ * The {@link RedoAction} uses the {@link ICommandStackService} to determine the
+ * enabled state of this action.
+ * 
+ * @author hoelzl
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash:
+ */
+public class RedoAction extends EObjectActionBase {
+
+	/** Constructor. */
+	public RedoAction() {
+		super("Redo", PlatformUI.getWorkbench().getSharedImages()
+				.getImageDescriptor(ISharedImages.IMG_TOOL_REDO));
+		setId(ActionFactory.REDO.getId());
+	}
+
+	/** Refreshes the action's target and enabled state. */
+	public void refresh(EObject element) {
+		setTarget(element);
+		if (element == null) {
+			setEnabled(false);
+			return;
+		}
+
+		setEnabled(ICommandStackService.INSTANCE.canRedo(element));
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void run() {
+		if (getTarget() != null) {
+			ICommandStackService.INSTANCE.redo(getTarget());
+		}
+	}
+}
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/UndoAction.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/UndoAction.java
new file mode 100644
index 0000000000000000000000000000000000000000..e64e63bc9c65d0ed231d7fc46eb5a73b2637538b
--- /dev/null
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/UndoAction.java
@@ -0,0 +1,63 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.tooling.kernel.ui.internal.actions;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.fortiss.tooling.kernel.service.ICommandStackService;
+import org.fortiss.tooling.kernel.ui.extension.base.EObjectActionBase;
+
+/**
+ * The {@link UndoAction} uses the {@link ICommandStackService} to determine the
+ * enabled state of this action.
+ * 
+ * @author hoelzl
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash:
+ */
+public class UndoAction extends EObjectActionBase {
+
+	/** Constructor. */
+	public UndoAction() {
+		super("Undo", PlatformUI.getWorkbench().getSharedImages()
+				.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO));
+		setId(ActionFactory.UNDO.getId());
+	}
+
+	/** Refreshes the action's target and enabled state. */
+	public void refresh(EObject element) {
+		setTarget(element);
+		if (element == null) {
+			setEnabled(false);
+			return;
+		}
+
+		setEnabled(ICommandStackService.INSTANCE.canUndo(element));
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void run() {
+		if (getTarget() != null) {
+			ICommandStackService.INSTANCE.undo(getTarget());
+		}
+	}
+}