diff --git a/org.framed.iorm.ui/core/attributeAndOperation/AttributeAndOperation.ecl b/org.framed.iorm.ui/core/attributeAndOperation/AttributeAndOperation.ecl
deleted file mode 100644
index 120acdaa0cb9e09910c241872fc196470b0628a5..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/core/attributeAndOperation/AttributeAndOperation.ecl
+++ /dev/null
@@ -1,11 +0,0 @@
-//NaturalType 
-Create_Attribute NaturalType (true) when true;  
-Create_Operation NaturalType (true) when true;  
-Create_Property NaturalType (true) when true;  
-Add_Property NaturalType (true) when true;   
-
-//NaturalType
-Create_Attribute DataType (true) when true;  
-Create_Operation DataType (true) when true;  
-Create_Property DataType (true) when true;  
-Add_Property DataType (true) when true;  
diff --git a/org.framed.iorm.ui/core/fulfillment/Fulfillment.ecl b/org.framed.iorm.ui/core/fulfillment/Fulfillment.ecl
deleted file mode 100644
index 83c3a99114aa964e9b6cad181bd8dfdc0f2ee136..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/core/fulfillment/Fulfillment.ecl
+++ /dev/null
@@ -1,22 +0,0 @@
-//Fullfillment or Players??  
-Start Fulfillment (Naturals) when IsSourceType(NaturalType);  
-Add Fulfillment (Naturals) when IsSourceType(NaturalType) and IsTargetType(CompartmentType);
-Create Fulfillment (Naturals) when IsSourceType(NaturalType) and IsTargetType(CompartmentType);
-Reconnect Fulfillment (Naturals) when IsSourceType(NaturalType) and IsTargetType(CompartmentType);
-
-Start Fulfillment (Roles) when IsSourceType(RoleType);
-Add Fulfillment (Roles) when IsSourceType(RoleType) and IsTargetType(CompartmentType);
-Create Fulfillment (Roles) when IsSourceType(RoleType) and IsTargetType(CompartmentType);
-Reconnect Fulfillment (Roles) when IsSourceType(RoleType) and IsTargetType(CompartmentType);
-
-Start Fulfillment (Compartments) when IsSourceType(CompartmentType);
-Add Fulfillment (Compartments) when IsSourceType(CompartmentType) and IsTargetType(CompartmentType) and !SourceEqualsTarget();
-Create Fulfillment (Compartments) when IsSourceType(CompartmentType) and IsTargetType(CompartmentType) and !SourceEqualsTarget();
-Reconnect Fulfillment (Compartments) when IsSourceType(CompartmentType) and IsTargetType(CompartmentType) and !SourceEqualsTarget();
-
-Start Fulfillment (Dates) when IsSourceType(DataType);
-Add Fulfillment (Dates) when IsSourceType(DataType);
-Create Fulfillment (Dates) when IsSourceType(DataType);
-Reconnect Fulfillment (Dates) when IsSourceType(DataType);
-
-Execute Fulfillment (true) when true;
diff --git a/org.framed.iorm.ui/core/group/Group.ecl b/org.framed.iorm.ui/core/group/Group.ecl
index 553d6f17fe9b1f7d33625ca6ff0cafe2af771397..8303e5935834f873d76106a929a73039c0cf1a03 100644
--- a/org.framed.iorm.ui/core/group/Group.ecl
+++ b/org.framed.iorm.ui/core/group/Group.ecl
@@ -1,3 +1,4 @@
 Add Group (true) when true; 
 Create Group (true) when true;
+Direct_Edit Group (true) when true;
 
diff --git a/org.framed.iorm.ui/core/group/Group.editpolicy b/org.framed.iorm.ui/core/group/Group.editpolicy
index 974841fad9d4bdf5255cebc71c6d76a7511c16bf..9fed06e8747d81911e8f4fed05288851d9389b34 100644
--- a/org.framed.iorm.ui/core/group/Group.editpolicy
+++ b/org.framed.iorm.ui/core/group/Group.editpolicy
@@ -8,4 +8,8 @@
     <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies action="Direct_Edit" actionType="Group">
+    <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+  </policies>
 </editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/core/inheritance/Inheritance.ecl b/org.framed.iorm.ui/core/inheritance/Inheritance.ecl
deleted file mode 100644
index 69b2cfaecc417dbf3df2efad504aab9c49133f15..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/core/inheritance/Inheritance.ecl
+++ /dev/null
@@ -1,8 +0,0 @@
-//Inheritance  
-Start Inheritance (Naturals) when IsSourceType(NaturalType); 
-Add Inheritance (Naturals) when IsSourceType(NaturalType) and SourceEqualsTargetType() and !SourceEqualsTarget();
-Reconnect Inheritance (Naturals) when IsSourceType(NaturalType) and SourceEqualsTargetType() and !SourceEqualsTarget();
-Create Inheritance (Naturals) when IsSourceType(NaturalType) and SourceEqualsTargetType() and !SourceEqualsTarget();
-
-Execute Inheritance (true) when true;
- 
diff --git a/org.framed.iorm.ui/core/naturaltype/NaturalType.ecl b/org.framed.iorm.ui/core/naturaltype/NaturalType.ecl
index 93bf1c3093d9f2106a78407c44ffd7e1af5b7dc2..9d1dbe86f70c8358e5fe5cd30705e2a48cf6a15f 100644
--- a/org.framed.iorm.ui/core/naturaltype/NaturalType.ecl
+++ b/org.framed.iorm.ui/core/naturaltype/NaturalType.ecl
@@ -1,3 +1,4 @@
 Add NaturalType (true) when true; 
 Create NaturalType (true) when true;
+Direct_Edit NaturalType (true) when true;
 
diff --git a/org.framed.iorm.ui/core/naturaltype/NaturalType.editpolicy b/org.framed.iorm.ui/core/naturaltype/NaturalType.editpolicy
index 788d66ed106f92e300bb0b749c097d1e27e0d8b6..4c878dccb9eef12e8f285cc779bdfdc346762e27 100644
--- a/org.framed.iorm.ui/core/naturaltype/NaturalType.editpolicy
+++ b/org.framed.iorm.ui/core/naturaltype/NaturalType.editpolicy
@@ -8,4 +8,8 @@
     <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
     <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies action="Direct_Edit" actionType="NaturalType">
+    <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+  </policies>
 </editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/core/rolemodel/RoleModel.ecl b/org.framed.iorm.ui/core/rolemodel/RoleModel.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..9100a340b90a2f400e573f486721e17bcb993016
--- /dev/null
+++ b/org.framed.iorm.ui/core/rolemodel/RoleModel.ecl
@@ -0,0 +1,7 @@
+//compartmentTypes
+//If Compartment_Types is not set, then only one CompartmentType can be
+//added in the top-level view (This will be named RoleModel).  
+Add CompartmentType (!Compartment_Types) when !InType(CompartmentType) and !ContainsCompartment();
+Create CompartmentType (!Compartment_Types) when !InType(CompartmentType) and !ContainsCompartment();
+Direct_Edit CompartmentType (true) when true;
+  
\ No newline at end of file
diff --git a/org.framed.iorm.ui/core/rolemodel/RoleModel.editpolicy b/org.framed.iorm.ui/core/rolemodel/RoleModel.editpolicy
new file mode 100644
index 0000000000000000000000000000000000000000..53f0552799863e6d3fe39f9d52168ff4458d5d7b
--- /dev/null
+++ b/org.framed.iorm.ui/core/rolemodel/RoleModel.editpolicy
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editpolicymodel="http://framed/editpolicymodel">
+  <policies action="Add" actionType="CompartmentType">
+    <featureRule xsi:type="editpolicymodel:NotFeatureRule">
+      <rule xsi:type="editpolicymodel:IsFeature" featureName="Compartment_Types"/>
+    </featureRule>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:InType" type="CompartmentType"/>
+      </rules>
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:ContainsCompartment"/>
+      </rules>
+    </constraintRule>
+  </policies>
+  <policies actionType="CompartmentType">
+    <featureRule xsi:type="editpolicymodel:NotFeatureRule">
+      <rule xsi:type="editpolicymodel:IsFeature" featureName="Compartment_Types"/>
+    </featureRule>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:InType" type="CompartmentType"/>
+      </rules>
+      <rules xsi:type="editpolicymodel:NotConstraintRule">
+        <rule xsi:type="editpolicymodel:ContainsCompartment"/>
+      </rules>
+    </constraintRule>
+  </policies>
+  <policies action="Direct_Edit" actionType="CompartmentType">
+    <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+  </policies>
+</editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/core/roletype/RoleType.ecl b/org.framed.iorm.ui/core/roletype/RoleType.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..a758b27246bb741ca8dc4a5e23094382bf6539fd
--- /dev/null
+++ b/org.framed.iorm.ui/core/roletype/RoleType.ecl
@@ -0,0 +1,3 @@
+Add RoleType (true) when InType(CompartmentType);   
+Create RoleType (true) when InType(CompartmentType); 
+Direct_Edit RoleType (true) when InType(CompartmentType);
\ No newline at end of file
diff --git a/org.framed.iorm.ui/core/roletype/RoleType.editpolicy b/org.framed.iorm.ui/core/roletype/RoleType.editpolicy
new file mode 100644
index 0000000000000000000000000000000000000000..0ec6eade2a227a77f117d12d272f211cb3a7840c
--- /dev/null
+++ b/org.framed.iorm.ui/core/roletype/RoleType.editpolicy
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ASCII"?>
+<editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editpolicymodel="http://framed/editpolicymodel">
+  <policies action="Add" actionType="RoleType">
+    <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="editpolicymodel:InType" type="CompartmentType"/>
+  </policies>
+  <policies actionType="RoleType">
+    <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="editpolicymodel:InType" type="CompartmentType"/>
+  </policies>
+  <policies action="Direct_Edit" actionType="RoleType">
+    <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="editpolicymodel:InType" type="CompartmentType"/>
+  </policies>
+</editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/modules/compartment/CompartmentTypes.ecl b/org.framed.iorm.ui/modules/compartment/CompartmentTypes.ecl
index 5d6365d9321d544cd7ca7c92916220103ca6a104..4000d134a6674e0283c599f4becab631d6c25599 100644
--- a/org.framed.iorm.ui/modules/compartment/CompartmentTypes.ecl
+++ b/org.framed.iorm.ui/modules/compartment/CompartmentTypes.ecl
@@ -1,8 +1,3 @@
 //compartmentTypes
-//If Compartment_Types is not set, then only one CompartmentType can be
-//added in the top-level view (This will be named RoleModel).  
-Add CompartmentType (!Compartment_Types) when !InType(CompartmentType) and !ContainsCompartment();
-Create CompartmentType (!Compartment_Types) when !InType(CompartmentType) and !ContainsCompartment();
 Add CompartmentType (Compartment_Types) when !InType(CompartmentType);
-Create CompartmentType (Compartment_Types) when !InType(CompartmentType);
-  
\ No newline at end of file
+Create CompartmentType (Compartment_Types) when !InType(CompartmentType);
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/compartment/CompartmentTypes.editpolicy b/org.framed.iorm.ui/modules/compartment/CompartmentTypes.editpolicy
index 9ded4a868eb5ec8d688543ceff93afab6b7a02cc..d3981d07dbd3ba51fae27efb30f71c811a00b541 100644
--- a/org.framed.iorm.ui/modules/compartment/CompartmentTypes.editpolicy
+++ b/org.framed.iorm.ui/modules/compartment/CompartmentTypes.editpolicy
@@ -1,31 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
 <editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editpolicymodel="http://framed/editpolicymodel">
-  <policies action="Add" actionType="CompartmentType">
-    <featureRule xsi:type="editpolicymodel:NotFeatureRule">
-      <rule xsi:type="editpolicymodel:IsFeature" featureName="Compartment_Types"/>
-    </featureRule>
-    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
-      <rules xsi:type="editpolicymodel:NotConstraintRule">
-        <rule xsi:type="editpolicymodel:InType" type="CompartmentType"/>
-      </rules>
-      <rules xsi:type="editpolicymodel:NotConstraintRule">
-        <rule xsi:type="editpolicymodel:ContainsCompartment"/>
-      </rules>
-    </constraintRule>
-  </policies>
-  <policies actionType="CompartmentType">
-    <featureRule xsi:type="editpolicymodel:NotFeatureRule">
-      <rule xsi:type="editpolicymodel:IsFeature" featureName="Compartment_Types"/>
-    </featureRule>
-    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
-      <rules xsi:type="editpolicymodel:NotConstraintRule">
-        <rule xsi:type="editpolicymodel:InType" type="CompartmentType"/>
-      </rules>
-      <rules xsi:type="editpolicymodel:NotConstraintRule">
-        <rule xsi:type="editpolicymodel:ContainsCompartment"/>
-      </rules>
-    </constraintRule>
-  </policies>
   <policies action="Add" actionType="CompartmentType">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Compartment_Types"/>
     <constraintRule xsi:type="editpolicymodel:NotConstraintRule">
diff --git a/org.framed.iorm.ui/modules/compartment/contains_compartments/ContainsCompartments.ecl b/org.framed.iorm.ui/modules/compartment/contains_compartments/ContainsCompartments.ecl
deleted file mode 100644
index 9aed47a53c0d4bab31ce69fc84a875c3d0dc6a4e..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/compartment/contains_compartments/ContainsCompartments.ecl
+++ /dev/null
@@ -1,3 +0,0 @@
-//ContainsCompartments
-Add CompartmentType (Contains_Compartments) when InType(CompartmentType);
-Create CompartmentType (Contains_Compartments) when InType(CompartmentType); 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/compartment/inheritance/CompartmentInheritance.ecl b/org.framed.iorm.ui/modules/compartment/inheritance/CompartmentInheritance.ecl
deleted file mode 100644
index aab00a25e7a5d9871bfd140105ed6d55182b90cc..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/compartment/inheritance/CompartmentInheritance.ecl
+++ /dev/null
@@ -1,5 +0,0 @@
-//Inheritance or Role_Inheritance/Data_Type_Inheritance/Compartment_Inheritance     
-Start Inheritance (Compartment_Inheritance) when IsSourceType(CompartmentType); 
-Add Inheritance (Compartment_Inheritance) when IsSourceType(CompartmentType) and !SourceEqualsTarget() and SourceEqualsTargetType(); //acyclic
-Create Inheritance (Compartment_Inheritance) when IsSourceType(CompartmentType) and !SourceEqualsTarget() and SourceEqualsTargetType(); //acyclic
-   
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/compartment/playing_own_roles/PlayingOwnRoles.ecl b/org.framed.iorm.ui/modules/compartment/playing_own_roles/PlayingOwnRoles.ecl
deleted file mode 100644
index 16418840a3c6c9cc26c71afd36aefb737d788f2b..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/compartment/playing_own_roles/PlayingOwnRoles.ecl
+++ /dev/null
@@ -1,5 +0,0 @@
-//Playing_own_roles 
-Start Fulfillment (Playable_by_Defining_Compartment) when IsSourceType(CompartmentType); 
-Add Fulfillment (Playable_by_Defining_Compartment) when IsSourceType(CompartmentType) and SourceEqualsTarget();
-Create Fulfillment (Playable_by_Defining_Compartment) when IsSourceType(CompartmentType) and SourceEqualsTarget();
-Reconnect Fulfillment (Playable_by_Defining_Compartment) when IsSourceType(CompartmentType) and SourceEqualsTarget();
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/datatype/DataTypes.ecl b/org.framed.iorm.ui/modules/datatype/DataTypes.ecl
index 10a82f094d3f4d90f2a9d74b52f6a0df78304623..ac8fb819925bfd6c357dc763a907903a2da4961d 100644
--- a/org.framed.iorm.ui/modules/datatype/DataTypes.ecl
+++ b/org.framed.iorm.ui/modules/datatype/DataTypes.ecl
@@ -1,3 +1,4 @@
 //DataTypes
 Add DataType (Data_Types) when true;   
-Create DataType (Data_Types) when true; 
\ No newline at end of file
+Create DataType (Data_Types) when true; 
+Direct_Edit DataType (true) when true;
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/datatype/DataTypes.editpolicy b/org.framed.iorm.ui/modules/datatype/DataTypes.editpolicy
index 3a492f058902edaf1e766b330f94a8311ee46447..c097f9e25547374cb55d934572c63fcaad5096f0 100644
--- a/org.framed.iorm.ui/modules/datatype/DataTypes.editpolicy
+++ b/org.framed.iorm.ui/modules/datatype/DataTypes.editpolicy
@@ -8,4 +8,8 @@
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Data_Types"/>
     <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies action="Direct_Edit" actionType="DataType">
+    <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
+    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+  </policies>
 </editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/modules/datatype/inheritance/DataTypeInheritance.ecl b/org.framed.iorm.ui/modules/datatype/inheritance/DataTypeInheritance.ecl
deleted file mode 100644
index 735b2261dfd84eebcea1ca42d852265a89c7557f..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/datatype/inheritance/DataTypeInheritance.ecl
+++ /dev/null
@@ -1,5 +0,0 @@
-//Inheritance or Role_Inheritance/Data_Type_Inheritance/Compartment_Inheritance
-Start Inheritance (Data_Type_Inheritance) when IsSourceType(DataType);  
-Add Inheritance (Data_Type_Inheritance) when IsSourceType(DataType) and !SourceEqualsTarget() and SourceEqualsTargetType(); // check acyclic
-Reconnect Inheritance (Data_Type_Inheritance) when IsSourceType(DataType) and !SourceEqualsTarget() and SourceEqualsTargetType();
-Create Inheritance (Data_Type_Inheritance) when IsSourceType(DataType) and !SourceEqualsTarget() and SourceEqualsTargetType(); // check acyclic // check acyclic
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/relationship/Relationship.ecl b/org.framed.iorm.ui/modules/relationship/Relationship.ecl
deleted file mode 100644
index 8711b96d272e12db36bd2d792ff2202106734a53..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/relationship/Relationship.ecl
+++ /dev/null
@@ -1,7 +0,0 @@
-//Relationships  
-Start Relationship (Relationships) when IsSourceType(RoleType);
-Add Relationship (Relationships) when IsTargetType(RoleType) and IsSourceType(RoleType) and !SourceEqualsTarget();
-Reconnect Relationship (Relationships) when IsTargetType(RoleType) and IsSourceType(RoleType) and !SourceEqualsTarget();
-Create Relationship (Relationships) when IsTargetType(RoleType) and IsSourceType(RoleType) and !SourceEqualsTarget();
- 
-Execute Relationship (Relationships) when true;
diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl
deleted file mode 100644
index 6d084323a0c2d0cd48351c92be4e1e413339cf3a..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl
+++ /dev/null
@@ -1,10 +0,0 @@
-//InterRelationship  
-Start RelationshipExclusion (Inter_Relationship_Constraints) when true;
-Add RelationshipExclusion (Inter_Relationship_Constraints) when true; 
-Reconnect RelationshipExclusion (Inter_Relationship_Constraints) when true;
-Create RelationshipExclusion (Inter_Relationship_Constraints) when true;
-
-Start RelationshipImplication (Inter_Relationship_Constraints) when true;
-Add RelationshipImplication (Inter_Relationship_Constraints) when true;
-Reconnect RelationshipImplication (Inter_Relationship_Constraints) when true;
-Create RelationshipImplication (Inter_Relationship_Constraints) when true;
diff --git a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java
index a3eb07e311fd1d9ca5c1a8faff3dacc0baa06220..8bee86e7d5a79d81195aef138224c6c1f681415a 100644
--- a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java
+++ b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java
@@ -111,11 +111,19 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS
 	 * @return if the intra relationship constraint can be added
 	 */
 	public boolean canAddIntraRelationshipConstraint(IAddContext addContext, Type type) {
-		if(addContext.getNewObject() instanceof Relation) {
-		   Relation relation = (Relation) addContext.getNewObject();
-		   if(relation.getType() == type) {
-			   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, type);
-		}	}
+		if (addContext.getNewObject() instanceof Relation) {
+			Relation relation = (Relation) addContext.getNewObject();
+			if (relation.getType() == type) {
+				Connection targetConnection = addContext.getTargetConnection();
+				if (targetConnection != null) {
+					Object m = getBusinessObjectForPictogramElement(targetConnection);
+					if (m instanceof Relation && ((Relation) m).getType() == Type.RELATIONSHIP) { 
+						// TODO: Create EditPolicy rule for this case
+						return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, type);
+					}
+				}
+			}
+		}
 		return false;
 	}
 	
diff --git a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.ecl b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.ecl
deleted file mode 100644
index 0de8445a0cb35194ede106183bffbdcae848eeac..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/IntraRelationship.ecl
+++ /dev/null
@@ -1,20 +0,0 @@
-//IntraRelationshipConstraint 
-Add Irreflexive (Intra_Relationship_Constraints) when true; 
-Start Irreflexive (Intra_Relationship_Constraints) when true;
-Create Irreflexive (Intra_Relationship_Constraints) when true;
-
-Add Acyclic (Intra_Relationship_Constraints) when true;
-Start Acyclic (Intra_Relationship_Constraints) when true;
-Create Acyclic (Intra_Relationship_Constraints) when true;
-
-Add Cyclic (Intra_Relationship_Constraints) when true;
-Start Cyclic (Intra_Relationship_Constraints) when true;
-Create Cyclic (Intra_Relationship_Constraints) when true;
-
-Add Reflexive (Intra_Relationship_Constraints) when true;
-Start Reflexive (Intra_Relationship_Constraints) when true;
-Create Reflexive (Intra_Relationship_Constraints) when true;
-
-Add Total (Intra_Relationship_Constraints) when true;
-Start Total (Intra_Relationship_Constraints) when true;
-Create Total (Intra_Relationship_Constraints) when true;
diff --git a/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.ecl b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.ecl
deleted file mode 100644
index 71e55777e552759ae387285d5e225bf21994e347..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.ecl
+++ /dev/null
@@ -1,3 +0,0 @@
-//groupConstraints/RoleGroup  
-Add RoleGroup (Group_Constraints) when InType(CompartmentType);  
-Create RoleGroup (Group_Constraints) when InType(CompartmentType); 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/roletype/inheritance/RoleInheritance.ecl b/org.framed.iorm.ui/modules/roletype/inheritance/RoleInheritance.ecl
deleted file mode 100644
index a4ef4808bb9df9807aa1fd97b38fa3afdf3f0660..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/roletype/inheritance/RoleInheritance.ecl
+++ /dev/null
@@ -1,5 +0,0 @@
-//Inheritance or Role_Inheritance/Data_Type_Inheritance/Compartment_Inheritance 
-Start Inheritance (Role_Inheritance) when IsSourceType(RoleType);   
-Add Inheritance (Role_Inheritance) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType();  //TODO, check acyclic 
-Reconnect Inheritance (Role_Inheritance) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
-Create Inheritance (Role_Inheritance) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType();  //TODO, check acyclic  //TODO, check acyclic 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.ecl b/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.ecl
deleted file mode 100644
index 2116907788a7c76d881b1c1769f02d67c2bdaf8c..0000000000000000000000000000000000000000
--- a/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.ecl
+++ /dev/null
@@ -1,15 +0,0 @@
-//RoleConstraints  
-Start RoleImplication (Role_Implication) when IsSourceType(RoleType); 
-Add RoleImplication (Role_Implication) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
-Reconnect RoleImplication (Role_Implication) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
-Create RoleProhibition (true) when true;
- 
-Start RoleEquivalence (Role_Equivalence) when IsSourceType(RoleType); 
-Add RoleEquivalence (Role_Equivalence) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
-Reconnect RoleEquivalence (Role_Equivalence) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
-Create RoleProhibition (true) when true;
-
-Start RoleProhibition (Role_Prohibition) when IsSourceType(RoleType); 
-Add RoleProhibition (Role_Prohibition) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
-Reconnect RoleProhibition (Role_Prohibition) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
-Create RoleProhibition (true) when true;
\ No newline at end of file