diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ContextMenuSubMenuContributorBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ContextMenuSubMenuContributorBase.java
index 264c8c3f4f83b9b76b3a48323a24f832056daaf1..23d44a7d66a66e0c8da068b7765259d6b4f01231 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ContextMenuSubMenuContributorBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ContextMenuSubMenuContributorBase.java
@@ -28,9 +28,9 @@ import org.eclipse.jface.action.IContributionItem;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.fortiss.tooling.kernel.model.INamedElement;
+import org.eclipse.ui.actions.ActionFactory;
 import org.fortiss.tooling.kernel.ui.extension.IContextMenuContributor;
-import org.fortiss.tooling.kernel.ui.extension.base.MenuActionBase.ActionFactory;
+import org.fortiss.tooling.kernel.ui.extension.base.EObjectActionBase.EObjectActionFactory;
 import org.fortiss.tooling.kernel.ui.extension.data.ContextMenuContextProvider;
 import org.fortiss.tooling.kernel.ui.service.IContextMenuService;
 
@@ -39,11 +39,9 @@ import org.fortiss.tooling.kernel.ui.service.IContextMenuService;
  * {@link IMenuManager} with actions provided by actions factories
  * {@link ActionFactory} returned by {@link #getActionFactories()}.
  * 
- * TODO @review This class implements its interface with default values, e.g.
- * getMenuSectionID. This should be documented here. See ModelElementHandlerBase
- * for example.
- * <p>
- * TODO @review What is or where is <T> here?
+ * The class implements interface methods {@link #getMenuIcon()} and
+ * {@link #getMenuId()} returning {@code null} by default. Classes providing an
+ * own icon or id should override them.
  * 
  * The generic type parameter {@code T} indicated the type of selection
  * elements.
@@ -51,27 +49,21 @@ import org.fortiss.tooling.kernel.ui.service.IContextMenuService;
  * @author trachtenherz
  * @author $Author: hoelzl $
  * @version $Rev: 18709 $
- * @ConQAT.Rating YELLOW Hash: 839C689F53DDF4A697F294BBD4DB2B74
+ * @ConQAT.Rating YELLOW Hash: DE788BDCC0598D12129DAA00E06DDE3E
  */
-public abstract class ContextMenuSubMenuContributorBase implements
-		IContextMenuContributor {
-
-	/** Constructor. */
-	public ContextMenuSubMenuContributorBase() {
-		// TODO @review unnecessary contructor
-		super();
-	}
+public abstract class ContextMenuSubMenuContributorBase<T extends EObject>
+		implements IContextMenuContributor {
 
 	/** The name of the sub-menu */
 	protected abstract String getMenuName();
 
 	/** Returns the action factories for the actions to be shown in the menu */
-	protected abstract Collection<ActionFactory<INamedElement>> getActionFactories();
+	protected abstract Collection<EObjectActionFactory<? super T>> getActionFactories();
 
 	/** Creates action instances for the given selection. */
-	protected Collection<Action> createActionsForElement(INamedElement selection) {
+	protected Collection<Action> createActionsForElement(T selection) {
 		ArrayList<Action> list = new ArrayList<Action>();
-		for (ActionFactory<INamedElement> factory : getActionFactories()) {
+		for (EObjectActionFactory<? super T> factory : getActionFactories()) {
 			list.add(factory.createAction(selection));
 		}
 		return list;
@@ -100,14 +92,14 @@ public abstract class ContextMenuSubMenuContributorBase implements
 	}
 
 	/** {@inheritDoc} */
+	@SuppressWarnings("unchecked")
 	@Override
 	public final List<IContributionItem> getContributedItems(EObject selection,
 			ContextMenuContextProvider contextProvider) {
-		if (selection instanceof INamedElement
-				&& acceptSelection((INamedElement) selection, contextProvider)) {
+		if (acceptSelection(selection, contextProvider)) {
 			List<IContributionItem> contributionItems = new ArrayList<IContributionItem>();
 			contributionItems
-					.add(createMenu(createActionsForElement((INamedElement) selection)));
+					.add(createMenu(createActionsForElement((T) selection)));
 			return contributionItems;
 		}
 		return Collections.emptyList();
@@ -119,7 +111,10 @@ public abstract class ContextMenuSubMenuContributorBase implements
 		return IContextMenuService.BOTTOM_MOST_MENU_SECTION_ID;
 	}
 
-	/** Returns {@code true} if the selected element is acceptable. */
-	protected abstract boolean acceptSelection(INamedElement selection,
+	/**
+	 * Returns {@code true} if the selected element is acceptable. This method
+	 * must also ensure that {@code selection} is an instance of {@code T}
+	 */
+	protected abstract boolean acceptSelection(EObject selection,
 			ContextMenuContextProvider contextProvider);
 }
\ No newline at end of file
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/EObjectActionBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/EObjectActionBase.java
index ab3cce8858232f2821f3eb92cb310b6c0d2b57dc..aaf4f4c5adee2e8f809fc85506c35d83884daaf2 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/EObjectActionBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/EObjectActionBase.java
@@ -27,10 +27,16 @@ import org.eclipse.jface.resource.ImageDescriptor;
  * @author hoelzlf
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating GREEN Hash: 9995CEA8009A5730AC380E5017A51C5F
+ * @ConQAT.Rating YELLOW Hash: 4C545F6468D6051419AA91C0E3774061
  */
 public abstract class EObjectActionBase<T extends EObject> extends Action {
 
+	/** Factory for the action instances used for this menu */
+	public static interface EObjectActionFactory<T extends EObject> {
+		/** Creates and returns an action instance for the given target. */
+		EObjectActionBase<T> createAction(T target);
+	}
+
 	/** Stores the target element. */
 	private T target;
 
@@ -39,6 +45,22 @@ public abstract class EObjectActionBase<T extends EObject> extends Action {
 		super(text, image);
 	}
 
+	/** Constructor. */
+	public EObjectActionBase(String text) {
+		this(text, null);
+	}
+
+	/** Constructor. */
+	public EObjectActionBase(T target, String text, ImageDescriptor image) {
+		this(text, image);
+		setTarget(target);
+	}
+
+	/** Constructor. */
+	public EObjectActionBase(T target, String text) {
+		this(target, text, null);
+	}
+
 	/** Sets the target object. */
 	public void setTarget(T target) {
 		this.target = target;
@@ -50,6 +72,12 @@ public abstract class EObjectActionBase<T extends EObject> extends Action {
 	}
 
 	/** Refreshes the action's target and enabled state. */
+	// TODO @review DT: should a user take setTarget or refresh for a new
+	// element?
+	// Should a constructor take setTarget or refresh? should there be a refresh
+	// method for the currently set element, i. e. refresh(). Possibility:
+	// refresh() for current element and refresh(element){setTarget(element);
+	// refresh()}.
 	public final void refresh(T element) {
 		setTarget(element);
 		if (element == null) {