diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/model/servicebehavior.ecore b/edu.kit.ipd.descartes.mm.applicationlevel/model/servicebehavior.ecore
index 4f939b958b2c586c08c72f02b7c0c539191a6018..a5966d6cb0f8e6283149b48ebef4499fa7286c4d 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/model/servicebehavior.ecore
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/model/servicebehavior.ecore
@@ -42,7 +42,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1"
         eType="#//AbstractAction" containment="true" eOpposite="#//AbstractAction/parentBehavior"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AbstractAction" abstract="true">
+  <eClassifiers xsi:type="ecore:EClass" name="AbstractAction" abstract="true" eSuperTypes="../../edu.kit.ipd.descartes.core/model/core.ecore#//Entity">
     <eStructuralFeatures xsi:type="ecore:EReference" name="parentBehavior" lowerBound="1"
         eType="#//ComponentInternalBehavior" eOpposite="#//ComponentInternalBehavior/actions"/>
   </eClassifiers>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/model/servicebehavior.ecore.oclinecore b/edu.kit.ipd.descartes.mm.applicationlevel/model/servicebehavior.ecore.oclinecore
index 0b64702b65359f3edc8ca1bbbc47c4650ede76d0..1f5e64de9ec092747ed551d8d78312f44ffddfd3 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/model/servicebehavior.ecore.oclinecore
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/model/servicebehavior.ecore.oclinecore
@@ -33,7 +33,7 @@ package servicebehavior : servicebehavior = 'http://www.descartes-research.net/m
 		property actions#parentBehavior : AbstractAction[*] { composes, ordered };
 	}
 	
-	abstract class AbstractAction {
+	abstract class AbstractAction extends core_0::Entity {
 		property parentBehavior#actions : ComponentInternalBehavior[1];
 	}	
 	class AcquireAction extends AbstractAction {
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/AbstractAction.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/AbstractAction.java
index cfc9cee8e1e35aa62fa33881e6fd9a83c9ae94cf..6aeb613424e44c83a7d919929fe33414201cc48c 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/AbstractAction.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/AbstractAction.java
@@ -3,7 +3,7 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior;
 
-import org.eclipse.emf.ecore.EObject;
+import edu.kit.ipd.descartes.core.Entity;
 
 /**
  * <!-- begin-user-doc -->
@@ -21,7 +21,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model abstract="true"
  * @generated
  */
-public interface AbstractAction extends EObject {
+public interface AbstractAction extends Entity {
 	/**
 	 * Returns the value of the '<em><b>Parent Behavior</b></em>' container reference.
 	 * It is bidirectional and its opposite is '{@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior#getActions <em>Actions</em>}'.
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/BlackBoxBehavior.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/BlackBoxBehavior.java
index 1d71ebba0b57216534ac73274c87c8230cfec18f..4719a7a06341e87b4796246633249dd6d1658bf5 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/BlackBoxBehavior.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/BlackBoxBehavior.java
@@ -3,7 +3,6 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior;
 
-import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingEntity;
 
 /**
  * <!-- begin-user-doc -->
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/FineGrainedBehavior.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/FineGrainedBehavior.java
index ed4a170b84a9098283d9f407eeca4afdfeebd596..99b569a0206827c624b7cefe39536bc1e965c76f 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/FineGrainedBehavior.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/FineGrainedBehavior.java
@@ -3,7 +3,6 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior;
 
-import edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent;
 
 /**
  * <!-- begin-user-doc -->
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ResourceDemand.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ResourceDemand.java
index 078301a59579103fcc43df6f8b0fa57cdf6b5bf8..124fe65cd85aca99bad4edb8bf4cb48e0f4cea52 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ResourceDemand.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ResourceDemand.java
@@ -3,12 +3,9 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior;
 
-import edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
-
 import edu.kit.ipd.descartes.mm.resourcetype.ResourceType;
 
 /**
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ResponseTime.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ResponseTime.java
index 84111891914d3c373849667c9334375d5dbd2fd8..6fbeaf6b3ead30bfbb7a0358b745e7273167dd44 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ResponseTime.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ResponseTime.java
@@ -3,8 +3,6 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior;
 
-import edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ServicebehaviorPackage.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ServicebehaviorPackage.java
index 08085a61bcfd796b1e83a086d1e88a555310d933..b75f37f4aeb221dff3d9bbddb27067ff7636f07e 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ServicebehaviorPackage.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/ServicebehaviorPackage.java
@@ -3,6 +3,7 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior;
 
+import edu.kit.ipd.descartes.core.CorePackage;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -217,6 +218,24 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	int ABSTRACT_ACTION = 3;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_ACTION__ID = CorePackage.ENTITY__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_ACTION__NAME = CorePackage.ENTITY__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -224,7 +243,7 @@ public interface ServicebehaviorPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ABSTRACT_ACTION__PARENT_BEHAVIOR = 0;
+	int ABSTRACT_ACTION__PARENT_BEHAVIOR = CorePackage.ENTITY_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>Abstract Action</em>' class.
@@ -233,7 +252,7 @@ public interface ServicebehaviorPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ABSTRACT_ACTION_FEATURE_COUNT = 1;
+	int ABSTRACT_ACTION_FEATURE_COUNT = CorePackage.ENTITY_FEATURE_COUNT + 1;
 
 	/**
 	 * The meta object id for the '{@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.impl.AcquireActionImpl <em>Acquire Action</em>}' class.
@@ -245,6 +264,24 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	int ACQUIRE_ACTION = 4;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACQUIRE_ACTION__ID = ABSTRACT_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACQUIRE_ACTION__NAME = ABSTRACT_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -282,6 +319,24 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	int RELEASE_ACTION = 5;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELEASE_ACTION__ID = ABSTRACT_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELEASE_ACTION__NAME = ABSTRACT_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -319,6 +374,24 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	int INTERNAL_ACTION = 6;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERNAL_ACTION__ID = ABSTRACT_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERNAL_ACTION__NAME = ABSTRACT_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -356,6 +429,24 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	int FORK_ACTION = 7;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_ACTION__ID = ABSTRACT_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_ACTION__NAME = ABSTRACT_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -402,6 +493,24 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	int BRANCH_ACTION = 8;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BRANCH_ACTION__ID = ABSTRACT_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BRANCH_ACTION__NAME = ABSTRACT_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -503,6 +612,24 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	int LOOP_ACTION = 10;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_ACTION__ID = ABSTRACT_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_ACTION__NAME = ABSTRACT_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -604,6 +731,24 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	int EXTERNAL_CALL_ACTION = 12;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTERNAL_CALL_ACTION__ID = ABSTRACT_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTERNAL_CALL_ACTION__NAME = ABSTRACT_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/AbstractActionImpl.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/AbstractActionImpl.java
index f40e86281064e343cd30f2d43a1d1371c9ceb7be..afc3ac75db8782881e1e98b20c67e1f7ecaefe9d 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/AbstractActionImpl.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/AbstractActionImpl.java
@@ -3,19 +3,15 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.impl;
 
+import edu.kit.ipd.descartes.core.impl.EntityImpl;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AbstractAction;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.EObjectImpl;
-
 import org.eclipse.emf.ecore.util.EcoreUtil;
 
 /**
@@ -31,7 +27,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public abstract class AbstractActionImpl extends EObjectImpl implements AbstractAction {
+public abstract class AbstractActionImpl extends EntityImpl implements AbstractAction {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -56,6 +52,7 @@ public abstract class AbstractActionImpl extends EObjectImpl implements Abstract
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ComponentInternalBehavior getParentBehavior() {
 		if (eContainerFeatureID() != ServicebehaviorPackage.ABSTRACT_ACTION__PARENT_BEHAVIOR) return null;
 		return (ComponentInternalBehavior)eInternalContainer();
@@ -76,6 +73,7 @@ public abstract class AbstractActionImpl extends EObjectImpl implements Abstract
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setParentBehavior(ComponentInternalBehavior newParentBehavior) {
 		if (newParentBehavior != eInternalContainer() || (eContainerFeatureID() != ServicebehaviorPackage.ABSTRACT_ACTION__PARENT_BEHAVIOR && newParentBehavior != null)) {
 			if (EcoreUtil.isAncestor(this, newParentBehavior))
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/BlackBoxBehaviorImpl.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/BlackBoxBehaviorImpl.java
index dc9e96bdd9d5ce3d5ff249558ec7ec70f87cab27..d0e6a03880d6cfe014c7ffcf34f40b8b99bc1535 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/BlackBoxBehaviorImpl.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/BlackBoxBehaviorImpl.java
@@ -3,18 +3,13 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.impl;
 
-import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingEntity;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
@@ -65,6 +60,7 @@ public class BlackBoxBehaviorImpl extends ServiceBehaviorAbstractionImpl impleme
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ResponseTime getResponseTime() {
 		return responseTime;
 	}
@@ -89,6 +85,7 @@ public class BlackBoxBehaviorImpl extends ServiceBehaviorAbstractionImpl impleme
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setResponseTime(ResponseTime newResponseTime) {
 		if (newResponseTime != responseTime) {
 			NotificationChain msgs = null;
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/FineGrainedBehaviorImpl.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/FineGrainedBehaviorImpl.java
index 50a369bc259c941fdc8bd2c51278fac6f64e0000..890b4e7e5c1697bd5c687ce2f8d57431ca116d40 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/FineGrainedBehaviorImpl.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/FineGrainedBehaviorImpl.java
@@ -3,18 +3,13 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.impl;
 
-import edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
@@ -65,6 +60,7 @@ public class FineGrainedBehaviorImpl extends ServiceBehaviorAbstractionImpl impl
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ComponentInternalBehavior getBehavior() {
 		return behavior;
 	}
@@ -89,6 +85,7 @@ public class FineGrainedBehaviorImpl extends ServiceBehaviorAbstractionImpl impl
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setBehavior(ComponentInternalBehavior newBehavior) {
 		if (newBehavior != behavior) {
 			NotificationChain msgs = null;
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ResourceDemandImpl.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ResourceDemandImpl.java
index 1055a541583a2ad9f6cc3b253d383cdb15e02633..8b17195f313c3d2b0b8cbb4eee5627d9ccd32490 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ResourceDemandImpl.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ResourceDemandImpl.java
@@ -3,28 +3,19 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.impl;
 
-import edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.impl.ModelVariableImpl;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
-
 import edu.kit.ipd.descartes.mm.resourcetype.ResourceType;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.eclipse.emf.ecore.util.EcoreUtil;
 
 /**
@@ -109,6 +100,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public InternalAction getInternalAction() {
 		if (eContainerFeatureID() != ServicebehaviorPackage.RESOURCE_DEMAND__INTERNAL_ACTION) return null;
 		return (InternalAction)eInternalContainer();
@@ -129,6 +121,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setInternalAction(InternalAction newInternalAction) {
 		if (newInternalAction != eInternalContainer() || (eContainerFeatureID() != ServicebehaviorPackage.RESOURCE_DEMAND__INTERNAL_ACTION && newInternalAction != null)) {
 			if (EcoreUtil.isAncestor(this, newInternalAction))
@@ -150,6 +143,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public CoarseGrainedBehavior getCoarseGrainedBehavior() {
 		if (eContainerFeatureID() != ServicebehaviorPackage.RESOURCE_DEMAND__COARSE_GRAINED_BEHAVIOR) return null;
 		return (CoarseGrainedBehavior)eInternalContainer();
@@ -170,6 +164,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setCoarseGrainedBehavior(CoarseGrainedBehavior newCoarseGrainedBehavior) {
 		if (newCoarseGrainedBehavior != eInternalContainer() || (eContainerFeatureID() != ServicebehaviorPackage.RESOURCE_DEMAND__COARSE_GRAINED_BEHAVIOR && newCoarseGrainedBehavior != null)) {
 			if (EcoreUtil.isAncestor(this, newCoarseGrainedBehavior))
@@ -191,6 +186,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ResourceType getResourceType() {
 		if (resourceType != null && resourceType.eIsProxy()) {
 			InternalEObject oldResourceType = (InternalEObject)resourceType;
@@ -217,6 +213,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setResourceType(ResourceType newResourceType) {
 		ResourceType oldResourceType = resourceType;
 		resourceType = newResourceType;
@@ -229,6 +226,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ModelVariableCharacterizationType getCharacterization() {
 		return characterization;
 	}
@@ -238,6 +236,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setCharacterization(ModelVariableCharacterizationType newCharacterization) {
 		ModelVariableCharacterizationType oldCharacterization = characterization;
 		characterization = newCharacterization == null ? CHARACTERIZATION_EDEFAULT : newCharacterization;
@@ -250,6 +249,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public RandomVariable getExplicitDescription() {
 		return explicitDescription;
 	}
@@ -274,6 +274,7 @@ public class ResourceDemandImpl extends ModelVariableImpl implements ResourceDem
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setExplicitDescription(RandomVariable newExplicitDescription) {
 		if (newExplicitDescription != explicitDescription) {
 			NotificationChain msgs = null;
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ResponseTimeImpl.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ResponseTimeImpl.java
index 54597609ae527b6c8ea818d26fe5af89465ead44..82628da8bdda553c009e84885cc591d671184fbe 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ResponseTimeImpl.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ResponseTimeImpl.java
@@ -3,25 +3,17 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.impl;
 
-import edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.impl.ModelVariableImpl;
-
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime;
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.eclipse.emf.ecore.util.EcoreUtil;
 
 /**
@@ -94,6 +86,7 @@ public class ResponseTimeImpl extends ModelVariableImpl implements ResponseTime
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public BlackBoxBehavior getBlackBoxBehavior() {
 		if (eContainerFeatureID() != ServicebehaviorPackage.RESPONSE_TIME__BLACK_BOX_BEHAVIOR) return null;
 		return (BlackBoxBehavior)eInternalContainer();
@@ -114,6 +107,7 @@ public class ResponseTimeImpl extends ModelVariableImpl implements ResponseTime
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setBlackBoxBehavior(BlackBoxBehavior newBlackBoxBehavior) {
 		if (newBlackBoxBehavior != eInternalContainer() || (eContainerFeatureID() != ServicebehaviorPackage.RESPONSE_TIME__BLACK_BOX_BEHAVIOR && newBlackBoxBehavior != null)) {
 			if (EcoreUtil.isAncestor(this, newBlackBoxBehavior))
@@ -135,6 +129,7 @@ public class ResponseTimeImpl extends ModelVariableImpl implements ResponseTime
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ModelVariableCharacterizationType getCharacterization() {
 		return characterization;
 	}
@@ -144,6 +139,7 @@ public class ResponseTimeImpl extends ModelVariableImpl implements ResponseTime
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setCharacterization(ModelVariableCharacterizationType newCharacterization) {
 		ModelVariableCharacterizationType oldCharacterization = characterization;
 		characterization = newCharacterization == null ? CHARACTERIZATION_EDEFAULT : newCharacterization;
@@ -156,6 +152,7 @@ public class ResponseTimeImpl extends ModelVariableImpl implements ResponseTime
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public RandomVariable getExplicitDescription() {
 		return explicitDescription;
 	}
@@ -180,6 +177,7 @@ public class ResponseTimeImpl extends ModelVariableImpl implements ResponseTime
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void setExplicitDescription(RandomVariable newExplicitDescription) {
 		if (newExplicitDescription != explicitDescription) {
 			NotificationChain msgs = null;
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ServicebehaviorPackageImpl.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ServicebehaviorPackageImpl.java
index b14548b5e75e382f536df90aecbc7cd154690ff8..152148d52202dd0ce1690774c6bd7f8e88180db4 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ServicebehaviorPackageImpl.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/impl/ServicebehaviorPackageImpl.java
@@ -3,6 +3,7 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.impl;
 
+import edu.kit.ipd.descartes.core.CorePackage;
 import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
 
 import edu.kit.ipd.descartes.mm.applicationlevel.functions.impl.FunctionsPackageImpl;
@@ -274,7 +275,8 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 		EValidator.Registry.INSTANCE.put
 			(theServicebehaviorPackage, 
 			 new EValidator.Descriptor() {
-				 public EValidator getEValidator() {
+				 @Override
+				public EValidator getEValidator() {
 					 return ServicebehaviorValidator.INSTANCE;
 				 }
 			 });
@@ -293,6 +295,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getServiceBehaviorAbstraction() {
 		return serviceBehaviorAbstractionEClass;
 	}
@@ -302,6 +305,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getServiceBehaviorAbstraction_DescribedSignature() {
 		return (EReference)serviceBehaviorAbstractionEClass.getEStructuralFeatures().get(0);
 	}
@@ -311,6 +315,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getServiceBehaviorAbstraction_InfluencingParameter() {
 		return (EReference)serviceBehaviorAbstractionEClass.getEStructuralFeatures().get(1);
 	}
@@ -320,6 +325,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getServiceBehaviorAbstraction_InfluencedVariableReference() {
 		return (EReference)serviceBehaviorAbstractionEClass.getEStructuralFeatures().get(2);
 	}
@@ -329,6 +335,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getServiceBehaviorAbstraction_InterfaceProvidingRole() {
 		return (EReference)serviceBehaviorAbstractionEClass.getEStructuralFeatures().get(3);
 	}
@@ -338,6 +345,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getFineGrainedBehavior() {
 		return fineGrainedBehaviorEClass;
 	}
@@ -347,6 +355,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getFineGrainedBehavior_Behavior() {
 		return (EReference)fineGrainedBehaviorEClass.getEStructuralFeatures().get(0);
 	}
@@ -356,6 +365,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getComponentInternalBehavior() {
 		return componentInternalBehaviorEClass;
 	}
@@ -365,6 +375,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getComponentInternalBehavior_Actions() {
 		return (EReference)componentInternalBehaviorEClass.getEStructuralFeatures().get(0);
 	}
@@ -374,6 +385,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getAbstractAction() {
 		return abstractActionEClass;
 	}
@@ -383,6 +395,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getAbstractAction_ParentBehavior() {
 		return (EReference)abstractActionEClass.getEStructuralFeatures().get(0);
 	}
@@ -392,6 +405,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getAcquireAction() {
 		return acquireActionEClass;
 	}
@@ -401,6 +415,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getAcquireAction_Semaphore() {
 		return (EReference)acquireActionEClass.getEStructuralFeatures().get(0);
 	}
@@ -410,6 +425,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getReleaseAction() {
 		return releaseActionEClass;
 	}
@@ -419,6 +435,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getReleaseAction_Semaphore() {
 		return (EReference)releaseActionEClass.getEStructuralFeatures().get(0);
 	}
@@ -428,6 +445,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getInternalAction() {
 		return internalActionEClass;
 	}
@@ -437,6 +455,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getInternalAction_ResourceDemand() {
 		return (EReference)internalActionEClass.getEStructuralFeatures().get(0);
 	}
@@ -446,6 +465,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getForkAction() {
 		return forkActionEClass;
 	}
@@ -455,6 +475,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EAttribute getForkAction_WithSynchronizationBarrier() {
 		return (EAttribute)forkActionEClass.getEStructuralFeatures().get(0);
 	}
@@ -464,6 +485,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getForkAction_ForkedBehaviors() {
 		return (EReference)forkActionEClass.getEStructuralFeatures().get(1);
 	}
@@ -473,6 +495,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getBranchAction() {
 		return branchActionEClass;
 	}
@@ -482,6 +505,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getBranchAction_Branches() {
 		return (EReference)branchActionEClass.getEStructuralFeatures().get(0);
 	}
@@ -491,6 +515,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getBranchAction_BranchProbabilities() {
 		return (EReference)branchActionEClass.getEStructuralFeatures().get(1);
 	}
@@ -500,6 +525,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getBranchProbabilities() {
 		return branchProbabilitiesEClass;
 	}
@@ -509,6 +535,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getBranchProbabilities_BranchAction() {
 		return (EReference)branchProbabilitiesEClass.getEStructuralFeatures().get(0);
 	}
@@ -518,6 +545,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getLoopAction() {
 		return loopActionEClass;
 	}
@@ -527,6 +555,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getLoopAction_LoopBodyBehavior() {
 		return (EReference)loopActionEClass.getEStructuralFeatures().get(0);
 	}
@@ -536,6 +565,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getLoopAction_LoopIterationCount() {
 		return (EReference)loopActionEClass.getEStructuralFeatures().get(1);
 	}
@@ -545,6 +575,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getLoopIterationCount() {
 		return loopIterationCountEClass;
 	}
@@ -554,6 +585,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getLoopIterationCount_LoopAction() {
 		return (EReference)loopIterationCountEClass.getEStructuralFeatures().get(0);
 	}
@@ -563,6 +595,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getExternalCallAction() {
 		return externalCallActionEClass;
 	}
@@ -572,6 +605,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getExternalCallAction_ExternalCall() {
 		return (EReference)externalCallActionEClass.getEStructuralFeatures().get(0);
 	}
@@ -581,6 +615,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getExternalCall() {
 		return externalCallEClass;
 	}
@@ -590,6 +625,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getExternalCall_Signature() {
 		return (EReference)externalCallEClass.getEStructuralFeatures().get(0);
 	}
@@ -599,6 +635,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getExternalCall_InterfaceRequiringRole() {
 		return (EReference)externalCallEClass.getEStructuralFeatures().get(1);
 	}
@@ -608,6 +645,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getResourceDemand() {
 		return resourceDemandEClass;
 	}
@@ -617,6 +655,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getResourceDemand_InternalAction() {
 		return (EReference)resourceDemandEClass.getEStructuralFeatures().get(0);
 	}
@@ -626,6 +665,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getResourceDemand_CoarseGrainedBehavior() {
 		return (EReference)resourceDemandEClass.getEStructuralFeatures().get(1);
 	}
@@ -635,6 +675,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getResourceDemand_ResourceType() {
 		return (EReference)resourceDemandEClass.getEStructuralFeatures().get(2);
 	}
@@ -644,6 +685,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EAttribute getResourceDemand_Characterization() {
 		return (EAttribute)resourceDemandEClass.getEStructuralFeatures().get(3);
 	}
@@ -653,6 +695,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getResourceDemand_ExplicitDescription() {
 		return (EReference)resourceDemandEClass.getEStructuralFeatures().get(4);
 	}
@@ -662,6 +705,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getCoarseGrainedBehavior() {
 		return coarseGrainedBehaviorEClass;
 	}
@@ -671,6 +715,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getCoarseGrainedBehavior_DescribedEntity() {
 		return (EReference)coarseGrainedBehaviorEClass.getEStructuralFeatures().get(0);
 	}
@@ -680,6 +725,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getCoarseGrainedBehavior_ExternalCallFrequency() {
 		return (EReference)coarseGrainedBehaviorEClass.getEStructuralFeatures().get(1);
 	}
@@ -689,6 +735,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getCoarseGrainedBehavior_ResourceDemand() {
 		return (EReference)coarseGrainedBehaviorEClass.getEStructuralFeatures().get(2);
 	}
@@ -698,6 +745,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getExternalCallFrequency() {
 		return externalCallFrequencyEClass;
 	}
@@ -707,6 +755,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getExternalCallFrequency_CoarseGrainedBehavior() {
 		return (EReference)externalCallFrequencyEClass.getEStructuralFeatures().get(0);
 	}
@@ -716,6 +765,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getExternalCallFrequency_ExternalCall() {
 		return (EReference)externalCallFrequencyEClass.getEStructuralFeatures().get(1);
 	}
@@ -725,6 +775,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getExternalCallFrequency_Frequency() {
 		return (EReference)externalCallFrequencyEClass.getEStructuralFeatures().get(2);
 	}
@@ -734,6 +785,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getCallFrequency() {
 		return callFrequencyEClass;
 	}
@@ -743,6 +795,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getCallFrequency_ExternalCallFrequency() {
 		return (EReference)callFrequencyEClass.getEStructuralFeatures().get(0);
 	}
@@ -752,6 +805,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getBlackBoxBehavior() {
 		return blackBoxBehaviorEClass;
 	}
@@ -761,6 +815,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getBlackBoxBehavior_ResponseTime() {
 		return (EReference)blackBoxBehaviorEClass.getEStructuralFeatures().get(0);
 	}
@@ -770,6 +825,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EClass getResponseTime() {
 		return responseTimeEClass;
 	}
@@ -779,6 +835,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getResponseTime_BlackBoxBehavior() {
 		return (EReference)responseTimeEClass.getEStructuralFeatures().get(0);
 	}
@@ -788,6 +845,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EAttribute getResponseTime_Characterization() {
 		return (EAttribute)responseTimeEClass.getEStructuralFeatures().get(1);
 	}
@@ -797,6 +855,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EReference getResponseTime_ExplicitDescription() {
 		return (EReference)responseTimeEClass.getEStructuralFeatures().get(2);
 	}
@@ -806,6 +865,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ServicebehaviorFactory getServicebehaviorFactory() {
 		return (ServicebehaviorFactory)getEFactoryInstance();
 	}
@@ -933,6 +993,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 		// Obtain other dependent packages
 		RepositoryPackage theRepositoryPackage = (RepositoryPackage)EPackage.Registry.INSTANCE.getEPackage(RepositoryPackage.eNS_URI);
 		ParameterdependenciesPackage theParameterdependenciesPackage = (ParameterdependenciesPackage)EPackage.Registry.INSTANCE.getEPackage(ParameterdependenciesPackage.eNS_URI);
+		CorePackage theCorePackage = (CorePackage)EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
 		ResourcetypePackage theResourcetypePackage = (ResourcetypePackage)EPackage.Registry.INSTANCE.getEPackage(ResourcetypePackage.eNS_URI);
 		FunctionsPackage theFunctionsPackage = (FunctionsPackage)EPackage.Registry.INSTANCE.getEPackage(FunctionsPackage.eNS_URI);
 
@@ -942,6 +1003,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 
 		// Add supertypes to classes
 		fineGrainedBehaviorEClass.getESuperTypes().add(this.getServiceBehaviorAbstraction());
+		abstractActionEClass.getESuperTypes().add(theCorePackage.getEntity());
 		acquireActionEClass.getESuperTypes().add(this.getAbstractAction());
 		releaseActionEClass.getESuperTypes().add(this.getAbstractAction());
 		internalActionEClass.getESuperTypes().add(this.getAbstractAction());
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorAdapterFactory.java
index cdc25b207194fcd0b791ce5b86f23d2cd91d5210..e5b08c35dcb12a909dcf604f3b32a2ae590da6a1 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorAdapterFactory.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorAdapterFactory.java
@@ -3,6 +3,9 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.util;
 
+import edu.kit.ipd.descartes.core.Entity;
+import edu.kit.ipd.descartes.core.NamedElement;
+import edu.kit.ipd.descartes.identifier.Identifier;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ControlFlowVariable;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable;
 
@@ -152,6 +155,18 @@ public class ServicebehaviorAdapterFactory extends AdapterFactoryImpl {
 				return createResponseTimeAdapter();
 			}
 			@Override
+			public Adapter caseIdentifier(Identifier object) {
+				return createIdentifierAdapter();
+			}
+			@Override
+			public Adapter caseNamedElement(NamedElement object) {
+				return createNamedElementAdapter();
+			}
+			@Override
+			public Adapter caseEntity(Entity object) {
+				return createEntityAdapter();
+			}
+			@Override
 			public Adapter caseModelVariable(ModelVariable object) {
 				return createModelVariableAdapter();
 			}
@@ -459,6 +474,48 @@ public class ServicebehaviorAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link edu.kit.ipd.descartes.identifier.Identifier <em>Identifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see edu.kit.ipd.descartes.identifier.Identifier
+	 * @generated
+	 */
+	public Adapter createIdentifierAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link edu.kit.ipd.descartes.core.NamedElement <em>Named Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see edu.kit.ipd.descartes.core.NamedElement
+	 * @generated
+	 */
+	public Adapter createNamedElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link edu.kit.ipd.descartes.core.Entity <em>Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see edu.kit.ipd.descartes.core.Entity
+	 * @generated
+	 */
+	public Adapter createEntityAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for an object of class '{@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable <em>Model Variable</em>}'.
 	 * <!-- begin-user-doc -->
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorSwitch.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorSwitch.java
index d28167a97fdc10afbb98858a162648399b3064ed..68c0b5981d6db3caa75955a9a2cbde820e79c74f 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorSwitch.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorSwitch.java
@@ -3,6 +3,9 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.util;
 
+import edu.kit.ipd.descartes.core.Entity;
+import edu.kit.ipd.descartes.core.NamedElement;
+import edu.kit.ipd.descartes.identifier.Identifier;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ControlFlowVariable;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable;
 
@@ -92,6 +95,9 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 			case ServicebehaviorPackage.ABSTRACT_ACTION: {
 				AbstractAction abstractAction = (AbstractAction)theEObject;
 				T result = caseAbstractAction(abstractAction);
+				if (result == null) result = caseEntity(abstractAction);
+				if (result == null) result = caseIdentifier(abstractAction);
+				if (result == null) result = caseNamedElement(abstractAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -99,6 +105,9 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 				AcquireAction acquireAction = (AcquireAction)theEObject;
 				T result = caseAcquireAction(acquireAction);
 				if (result == null) result = caseAbstractAction(acquireAction);
+				if (result == null) result = caseEntity(acquireAction);
+				if (result == null) result = caseIdentifier(acquireAction);
+				if (result == null) result = caseNamedElement(acquireAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -106,6 +115,9 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 				ReleaseAction releaseAction = (ReleaseAction)theEObject;
 				T result = caseReleaseAction(releaseAction);
 				if (result == null) result = caseAbstractAction(releaseAction);
+				if (result == null) result = caseEntity(releaseAction);
+				if (result == null) result = caseIdentifier(releaseAction);
+				if (result == null) result = caseNamedElement(releaseAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -113,6 +125,9 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 				InternalAction internalAction = (InternalAction)theEObject;
 				T result = caseInternalAction(internalAction);
 				if (result == null) result = caseAbstractAction(internalAction);
+				if (result == null) result = caseEntity(internalAction);
+				if (result == null) result = caseIdentifier(internalAction);
+				if (result == null) result = caseNamedElement(internalAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -120,6 +135,9 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 				ForkAction forkAction = (ForkAction)theEObject;
 				T result = caseForkAction(forkAction);
 				if (result == null) result = caseAbstractAction(forkAction);
+				if (result == null) result = caseEntity(forkAction);
+				if (result == null) result = caseIdentifier(forkAction);
+				if (result == null) result = caseNamedElement(forkAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -127,6 +145,9 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 				BranchAction branchAction = (BranchAction)theEObject;
 				T result = caseBranchAction(branchAction);
 				if (result == null) result = caseAbstractAction(branchAction);
+				if (result == null) result = caseEntity(branchAction);
+				if (result == null) result = caseIdentifier(branchAction);
+				if (result == null) result = caseNamedElement(branchAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -142,6 +163,9 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 				LoopAction loopAction = (LoopAction)theEObject;
 				T result = caseLoopAction(loopAction);
 				if (result == null) result = caseAbstractAction(loopAction);
+				if (result == null) result = caseEntity(loopAction);
+				if (result == null) result = caseIdentifier(loopAction);
+				if (result == null) result = caseNamedElement(loopAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -157,6 +181,9 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 				ExternalCallAction externalCallAction = (ExternalCallAction)theEObject;
 				T result = caseExternalCallAction(externalCallAction);
 				if (result == null) result = caseAbstractAction(externalCallAction);
+				if (result == null) result = caseEntity(externalCallAction);
+				if (result == null) result = caseIdentifier(externalCallAction);
+				if (result == null) result = caseNamedElement(externalCallAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -512,6 +539,51 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Identifier</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Identifier</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIdentifier(Identifier object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNamedElement(NamedElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Entity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEntity(Entity object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Model Variable</em>'.
 	 * <!-- begin-user-doc -->
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorValidator.java b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorValidator.java
index eca842cab1e2230b83c6a5cefae6ded43984758f..f0d8efef6960acabc740beb81df5df361eb8f63b 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorValidator.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/util/ServicebehaviorValidator.java
@@ -3,6 +3,7 @@
  */
 package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.util;
 
+import edu.kit.ipd.descartes.identifier.util.IdentifierValidator;
 import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.util.ParameterdependenciesValidator;
 
 import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.*;
@@ -59,6 +60,14 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 */
 	protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
 
+	/**
+	 * The cached base package validator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IdentifierValidator identifierValidator;
+
 	/**
 	 * The cached base package validator.
 	 * <!-- begin-user-doc -->
@@ -75,6 +84,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 */
 	public ServicebehaviorValidator() {
 		super();
+		identifierValidator = IdentifierValidator.INSTANCE;
 		parameterdependenciesValidator = ParameterdependenciesValidator.INSTANCE;
 	}
 
@@ -260,7 +270,17 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateAbstractAction(AbstractAction abstractAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(abstractAction, diagnostics, context);
+		if (!validate_NoCircularContainment(abstractAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(abstractAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(abstractAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(abstractAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(abstractAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(abstractAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(abstractAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(abstractAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(abstractAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(abstractAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -269,7 +289,17 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateAcquireAction(AcquireAction acquireAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(acquireAction, diagnostics, context);
+		if (!validate_NoCircularContainment(acquireAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(acquireAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(acquireAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(acquireAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(acquireAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(acquireAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(acquireAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(acquireAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(acquireAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(acquireAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -278,7 +308,17 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateReleaseAction(ReleaseAction releaseAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(releaseAction, diagnostics, context);
+		if (!validate_NoCircularContainment(releaseAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(releaseAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(releaseAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(releaseAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(releaseAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(releaseAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(releaseAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(releaseAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(releaseAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(releaseAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -287,7 +327,17 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateInternalAction(InternalAction internalAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(internalAction, diagnostics, context);
+		if (!validate_NoCircularContainment(internalAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(internalAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(internalAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(internalAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(internalAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(internalAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(internalAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(internalAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(internalAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(internalAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -296,7 +346,17 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateForkAction(ForkAction forkAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(forkAction, diagnostics, context);
+		if (!validate_NoCircularContainment(forkAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(forkAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(forkAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(forkAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(forkAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(forkAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(forkAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(forkAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(forkAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(forkAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -305,7 +365,17 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateBranchAction(BranchAction branchAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(branchAction, diagnostics, context);
+		if (!validate_NoCircularContainment(branchAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(branchAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(branchAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(branchAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(branchAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(branchAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(branchAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(branchAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(branchAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(branchAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -333,7 +403,17 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateLoopAction(LoopAction loopAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(loopAction, diagnostics, context);
+		if (!validate_NoCircularContainment(loopAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(loopAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(loopAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(loopAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(loopAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(loopAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(loopAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(loopAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(loopAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(loopAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -361,7 +441,17 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateExternalCallAction(ExternalCallAction externalCallAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(externalCallAction, diagnostics, context);
+		if (!validate_NoCircularContainment(externalCallAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(externalCallAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(externalCallAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(externalCallAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(externalCallAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(externalCallAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(externalCallAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(externalCallAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(externalCallAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(externalCallAction, diagnostics, context);
+		return result;
 	}
 
 	/**
diff --git a/edu.kit.ipd.descartes.mm.usageprofile/model/usageprofile.ecore b/edu.kit.ipd.descartes.mm.usageprofile/model/usageprofile.ecore
index cb8d28df6f0d660815cc90fe631c351cf8a1655c..e9ee4df7800bcea2f7bcf3abbf8e0dc171d865a6 100644
--- a/edu.kit.ipd.descartes.mm.usageprofile/model/usageprofile.ecore
+++ b/edu.kit.ipd.descartes.mm.usageprofile/model/usageprofile.ecore
@@ -68,7 +68,8 @@
         eType="ecore:EClass ../../edu.kit.ipd.descartes.mm.applicationlevel/model/functions.ecore#//RandomVariable"
         containment="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AbstractUserAction" abstract="true">
+  <eClassifiers xsi:type="ecore:EClass" name="AbstractUserAction" abstract="true"
+      eSuperTypes="../../edu.kit.ipd.descartes.core/model/core.ecore#//Entity">
     <eStructuralFeatures xsi:type="ecore:EReference" name="parentScenarioBehavior"
         lowerBound="1" eType="#//ScenarioBehavior" eOpposite="#//ScenarioBehavior/actions"/>
   </eClassifiers>
diff --git a/edu.kit.ipd.descartes.mm.usageprofile/model/usageprofile.ecore.oclinecore b/edu.kit.ipd.descartes.mm.usageprofile/model/usageprofile.ecore.oclinecore
index b0545f24878cef805d48adf949a00abcb47c1c6d..5c8c7c925496df7d33d7a77d385481ddaf59f95d 100644
--- a/edu.kit.ipd.descartes.mm.usageprofile/model/usageprofile.ecore.oclinecore
+++ b/edu.kit.ipd.descartes.mm.usageprofile/model/usageprofile.ecore.oclinecore
@@ -47,7 +47,7 @@ package usageprofile : usageprofile = 'http://www.descartes-research.net/metamod
 			invariant populationInClosedWorkloadNeedsToBeGreaterThanZero :
 			 		    self.population > 0;	
 		}
-		abstract class AbstractUserAction
+		abstract class AbstractUserAction extends core_0::Entity
 		{
 			property parentScenarioBehavior#actions : ScenarioBehavior[1];
 		}		
diff --git a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/AbstractUserAction.java b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/AbstractUserAction.java
index 174e70aa5479265e4ec2ec4ab5e26a9cd079b865..3b8e744e1bbd104dc5042398a76745699d35f62c 100644
--- a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/AbstractUserAction.java
+++ b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/AbstractUserAction.java
@@ -3,6 +3,7 @@
  */
 package edu.kit.ipd.descartes.mm.usageprofile;
 
+import edu.kit.ipd.descartes.core.Entity;
 import org.eclipse.emf.ecore.EObject;
 
 /**
@@ -21,7 +22,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model abstract="true"
  * @generated
  */
-public interface AbstractUserAction extends EObject {
+public interface AbstractUserAction extends Entity {
 	/**
 	 * Returns the value of the '<em><b>Parent Scenario Behavior</b></em>' container reference.
 	 * It is bidirectional and its opposite is '{@link edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior#getActions <em>Actions</em>}'.
diff --git a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/UsageProfilePackage.java b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/UsageProfilePackage.java
index 293a3f3d1dc57d394fcc30fe7ccfc63d47f195a8..ec3d377a624c124008d6b65d9b0a8be870f66309 100644
--- a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/UsageProfilePackage.java
+++ b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/UsageProfilePackage.java
@@ -374,6 +374,24 @@ public interface UsageProfilePackage extends EPackage {
 	 */
 	int ABSTRACT_USER_ACTION = 7;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_USER_ACTION__ID = CorePackage.ENTITY__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_USER_ACTION__NAME = CorePackage.ENTITY__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Scenario Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -381,7 +399,7 @@ public interface UsageProfilePackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ABSTRACT_USER_ACTION__PARENT_SCENARIO_BEHAVIOR = 0;
+	int ABSTRACT_USER_ACTION__PARENT_SCENARIO_BEHAVIOR = CorePackage.ENTITY_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>Abstract User Action</em>' class.
@@ -390,7 +408,7 @@ public interface UsageProfilePackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ABSTRACT_USER_ACTION_FEATURE_COUNT = 1;
+	int ABSTRACT_USER_ACTION_FEATURE_COUNT = CorePackage.ENTITY_FEATURE_COUNT + 1;
 
 	/**
 	 * The meta object id for the '{@link edu.kit.ipd.descartes.mm.usageprofile.impl.LoopUserActionImpl <em>Loop User Action</em>}' class.
@@ -402,6 +420,24 @@ public interface UsageProfilePackage extends EPackage {
 	 */
 	int LOOP_USER_ACTION = 8;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_USER_ACTION__ID = ABSTRACT_USER_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_USER_ACTION__NAME = ABSTRACT_USER_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Scenario Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -448,6 +484,24 @@ public interface UsageProfilePackage extends EPackage {
 	 */
 	int DELAY_USER_ACTION = 9;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DELAY_USER_ACTION__ID = ABSTRACT_USER_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DELAY_USER_ACTION__NAME = ABSTRACT_USER_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Scenario Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -485,6 +539,24 @@ public interface UsageProfilePackage extends EPackage {
 	 */
 	int BRANCH_USER_ACTION = 10;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BRANCH_USER_ACTION__ID = ABSTRACT_USER_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BRANCH_USER_ACTION__NAME = ABSTRACT_USER_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Scenario Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -531,6 +603,24 @@ public interface UsageProfilePackage extends EPackage {
 	 */
 	int SYSTEM_CALL_USER_ACTION = 11;
 
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYSTEM_CALL_USER_ACTION__ID = ABSTRACT_USER_ACTION__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYSTEM_CALL_USER_ACTION__NAME = ABSTRACT_USER_ACTION__NAME;
+
 	/**
 	 * The feature id for the '<em><b>Parent Scenario Behavior</b></em>' container reference.
 	 * <!-- begin-user-doc -->
diff --git a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/impl/AbstractUserActionImpl.java b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/impl/AbstractUserActionImpl.java
index 2fba3660c13dbd7598f01b513eb59a274220b210..16509d0fffc3109a9bd629bd12d4ff7ed23ce43c 100644
--- a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/impl/AbstractUserActionImpl.java
+++ b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/impl/AbstractUserActionImpl.java
@@ -3,6 +3,7 @@
  */
 package edu.kit.ipd.descartes.mm.usageprofile.impl;
 
+import edu.kit.ipd.descartes.core.impl.EntityImpl;
 import edu.kit.ipd.descartes.mm.usageprofile.AbstractUserAction;
 import edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior;
 import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
@@ -31,7 +32,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public abstract class AbstractUserActionImpl extends EObjectImpl implements AbstractUserAction {
+public abstract class AbstractUserActionImpl extends EntityImpl implements AbstractUserAction {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/impl/UsageProfilePackageImpl.java b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/impl/UsageProfilePackageImpl.java
index 2ac8de693a83650ab7850459fd079c1b4ae6d1f7..9713f744706dae3aff3c07a1200a65706d02125d 100644
--- a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/impl/UsageProfilePackageImpl.java
+++ b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/impl/UsageProfilePackageImpl.java
@@ -677,6 +677,7 @@ public class UsageProfilePackageImpl extends EPackageImpl implements UsageProfil
 		usageScenarioEClass.getESuperTypes().add(theCorePackage.getEntity());
 		openWorkloadTypeEClass.getESuperTypes().add(this.getWorkloadType());
 		closedWorkloadTypeEClass.getESuperTypes().add(this.getWorkloadType());
+		abstractUserActionEClass.getESuperTypes().add(theCorePackage.getEntity());
 		loopUserActionEClass.getESuperTypes().add(this.getAbstractUserAction());
 		delayUserActionEClass.getESuperTypes().add(this.getAbstractUserAction());
 		branchUserActionEClass.getESuperTypes().add(this.getAbstractUserAction());
diff --git a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/util/UsageProfileSwitch.java b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/util/UsageProfileSwitch.java
index a091b3556ba4028cc04f6a3e6198328f243044a9..aebfe13dd3a7c04b722f49aeaddec7d7c1149ece 100644
--- a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/util/UsageProfileSwitch.java
+++ b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/util/UsageProfileSwitch.java
@@ -125,6 +125,9 @@ public class UsageProfileSwitch<T> extends Switch<T> {
 			case UsageProfilePackage.ABSTRACT_USER_ACTION: {
 				AbstractUserAction abstractUserAction = (AbstractUserAction)theEObject;
 				T result = caseAbstractUserAction(abstractUserAction);
+				if (result == null) result = caseEntity(abstractUserAction);
+				if (result == null) result = caseIdentifier(abstractUserAction);
+				if (result == null) result = caseNamedElement(abstractUserAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -132,6 +135,9 @@ public class UsageProfileSwitch<T> extends Switch<T> {
 				LoopUserAction loopUserAction = (LoopUserAction)theEObject;
 				T result = caseLoopUserAction(loopUserAction);
 				if (result == null) result = caseAbstractUserAction(loopUserAction);
+				if (result == null) result = caseEntity(loopUserAction);
+				if (result == null) result = caseIdentifier(loopUserAction);
+				if (result == null) result = caseNamedElement(loopUserAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -139,6 +145,9 @@ public class UsageProfileSwitch<T> extends Switch<T> {
 				DelayUserAction delayUserAction = (DelayUserAction)theEObject;
 				T result = caseDelayUserAction(delayUserAction);
 				if (result == null) result = caseAbstractUserAction(delayUserAction);
+				if (result == null) result = caseEntity(delayUserAction);
+				if (result == null) result = caseIdentifier(delayUserAction);
+				if (result == null) result = caseNamedElement(delayUserAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -146,6 +155,9 @@ public class UsageProfileSwitch<T> extends Switch<T> {
 				BranchUserAction branchUserAction = (BranchUserAction)theEObject;
 				T result = caseBranchUserAction(branchUserAction);
 				if (result == null) result = caseAbstractUserAction(branchUserAction);
+				if (result == null) result = caseEntity(branchUserAction);
+				if (result == null) result = caseIdentifier(branchUserAction);
+				if (result == null) result = caseNamedElement(branchUserAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -153,6 +165,9 @@ public class UsageProfileSwitch<T> extends Switch<T> {
 				SystemCallUserAction systemCallUserAction = (SystemCallUserAction)theEObject;
 				T result = caseSystemCallUserAction(systemCallUserAction);
 				if (result == null) result = caseAbstractUserAction(systemCallUserAction);
+				if (result == null) result = caseEntity(systemCallUserAction);
+				if (result == null) result = caseIdentifier(systemCallUserAction);
+				if (result == null) result = caseNamedElement(systemCallUserAction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/util/UsageProfileValidator.java b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/util/UsageProfileValidator.java
index 421a92af18450a019ec2430c55233e6b71ba2dc6..1fa5a5071b8cda3e46924b3af8441b9b2c0fe2be 100644
--- a/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/util/UsageProfileValidator.java
+++ b/edu.kit.ipd.descartes.mm.usageprofile/src/edu/kit/ipd/descartes/mm/usageprofile/util/UsageProfileValidator.java
@@ -329,7 +329,17 @@ public class UsageProfileValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateAbstractUserAction(AbstractUserAction abstractUserAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(abstractUserAction, diagnostics, context);
+		if (!validate_NoCircularContainment(abstractUserAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(abstractUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(abstractUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(abstractUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(abstractUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(abstractUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(abstractUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(abstractUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(abstractUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(abstractUserAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -338,7 +348,17 @@ public class UsageProfileValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateLoopUserAction(LoopUserAction loopUserAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(loopUserAction, diagnostics, context);
+		if (!validate_NoCircularContainment(loopUserAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(loopUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(loopUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(loopUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(loopUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(loopUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(loopUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(loopUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(loopUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(loopUserAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -347,7 +367,17 @@ public class UsageProfileValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateDelayUserAction(DelayUserAction delayUserAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(delayUserAction, diagnostics, context);
+		if (!validate_NoCircularContainment(delayUserAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(delayUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(delayUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(delayUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(delayUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(delayUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(delayUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(delayUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(delayUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(delayUserAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -356,7 +386,17 @@ public class UsageProfileValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateBranchUserAction(BranchUserAction branchUserAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(branchUserAction, diagnostics, context);
+		if (!validate_NoCircularContainment(branchUserAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(branchUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(branchUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(branchUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(branchUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(branchUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(branchUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(branchUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(branchUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(branchUserAction, diagnostics, context);
+		return result;
 	}
 
 	/**
@@ -365,7 +405,17 @@ public class UsageProfileValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateSystemCallUserAction(SystemCallUserAction systemCallUserAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(systemCallUserAction, diagnostics, context);
+		if (!validate_NoCircularContainment(systemCallUserAction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(systemCallUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(systemCallUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(systemCallUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(systemCallUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(systemCallUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(systemCallUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(systemCallUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(systemCallUserAction, diagnostics, context);
+		if (result || diagnostics != null) result &= identifierValidator.validateIdentifier_idHasToBeUnique(systemCallUserAction, diagnostics, context);
+		return result;
 	}
 
 	/**