diff --git a/assets/models/BDDv2.ecore b/assets/models/BDDv2.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..451da6f04bf5b7609b80d69503beb024a6cc8a89
--- /dev/null
+++ b/assets/models/BDDv2.ecore
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="bddg" nsURI="https://www.transformation-tool-contest.eu/2019/bdd/graph"
+    nsPrefix="bddg">
+  <eClassifiers xsi:type="ecore:EClass" name="BDD">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ports" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Port" containment="true" eOpposite="#//Port/owner"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="root" ordered="false" lowerBound="1"
+        eType="#//Tree"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="trees" upperBound="-1"
+        eType="#//Tree" containment="true" eOpposite="#//Tree/ownerBDD"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Port" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false"
+        lowerBound="1" eType="#//BDD" eOpposite="#//BDD/ports"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InputPort" eSuperTypes="#//Port">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subtrees" ordered="false"
+        upperBound="-1" eType="#//Subtree" eOpposite="#//Subtree/port"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="OutputPort" eSuperTypes="#//Port">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="assignments" ordered="false"
+        upperBound="-1" eType="#//Assignment" eOpposite="#//Assignment/port"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Tree" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownerBDD" ordered="false"
+        eType="#//BDD" eOpposite="#//BDD/trees"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownerSubtreeForZero" ordered="false"
+        upperBound="-1" eType="#//Subtree" eOpposite="#//Subtree/treeForZero"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownerSubtreeForOne" ordered="false"
+        upperBound="-1" eType="#//Subtree" eOpposite="#//Subtree/treeForOne"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Leaf" eSuperTypes="#//Tree">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="assignments" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Assignment" containment="true" eOpposite="#//Assignment/owner"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Assignment">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+        unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" lowerBound="1"
+        eType="#//OutputPort" eOpposite="#//OutputPort/assignments"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false"
+        lowerBound="1" eType="#//Leaf" eOpposite="#//Leaf/assignments"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Subtree" eSuperTypes="#//Tree">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" lowerBound="1"
+        eType="#//InputPort" eOpposite="#//InputPort/subtrees"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="treeForZero" ordered="false"
+        lowerBound="1" eType="#//Tree" eOpposite="#//Tree/ownerSubtreeForZero"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="treeForOne" ordered="false"
+        lowerBound="1" eType="#//Tree" eOpposite="#//Tree/ownerSubtreeForOne"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/EcoreLoader.scala b/src/main/scala/org/rosi_project/model_sync/generator/EcoreLoader.scala
index eaa9018d9a976b1825bba6c3d8ebd795ffac3a5d..9824ab763b0c5e02f0e62bb6dd6a7abfecdfe3e3 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/EcoreLoader.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/EcoreLoader.scala
@@ -24,7 +24,6 @@ class EcoreLoader {
    * @return the model described by the XML
    */
   def loadEcore(path: String = "assets/ttc17.ecore"): ClassAndInstance = {
-    // see https://github.com/max-leuthaeuser/SCROLL/blob/dd269d5620257be1ea2f2044f398c090e9755fb3/core/src/main/scala/scroll/internal/ecore/ECoreImporter.scala
     require(null != path && path.nonEmpty)
     val resourceSet = new ResourceSetImpl()
 
@@ -41,24 +40,6 @@ class EcoreLoader {
       val univEPackage = res.getContents().get(0);
       resourceSet.getPackageRegistry().put("https://www.transformation-tool-contest.eu/2019/tt", univEPackage);
       val myModel = resourceSet.getResource(URI.createURI(path.replace(".ecore", ".ttmodel")), true);
-      /*println(myModel.getContents())
-      myModel.getContents.forEach(o => {
-        var contents = o.eAllContents().asScala
-        contents.foreach(i => {
-          println("++")
-          println(i)
-          println(i.eContainingFeature())
-          println(i.eCrossReferences())
-          println(i.eClass())
-          var iners = i.eAllContents().asScala
-          iners.foreach(a => {
-            println(a)
-          })
-        })
-        println(o)
-      })
-      println("###########")
-      println(myModel.getContents().toArray(new Array[EObject](0)).toList.head)*/
       return new ClassAndInstance(res.getContents.toArray(new Array[EObject](0)).toList.find(_.isInstanceOf[EPackage]).map((p: EObject) => p.asInstanceOf[EPackage]).orNull,
           myModel.getContents().toArray(new Array[EObject](0)).toList.head)
     }
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/Generator.scala b/src/main/scala/org/rosi_project/model_sync/generator/Generator.scala
index 04d810063c93453a1e6734de30e34ca3743ab62d..34deddbeeb653dd9cca21460ed752bd94ca91f24 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/Generator.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/Generator.scala
@@ -43,7 +43,6 @@ class Generator(config: GeneratorConfig) {
 
       //create s models from the incoming ecore models
       var sModels: Map[SModel, ClassAndInstance] = Map.empty
-      //var sModels: Seq[SModel] = Seq.empty
       ecoreModels.foreach(ec => {
         sModels = sModels + ((new SModelGenerator convert (ec._2.pkg, ec._1)) -> ec._2)
       })
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala b/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala
new file mode 100644
index 0000000000000000000000000000000000000000..531bfc8d66d822c8d4bf0b2a6a0894db80ec6194
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala
@@ -0,0 +1,20 @@
+package org.rosi_project.model_sync.generator
+
+object PackageNames {
+  
+  var sourcePkgPrefix: String = "sum."
+  
+  val viewPkgName: String = "view"
+  val viewPostName: String = "View"
+  val viewRolePostName: String = "Role"
+  
+  val queryPkgName: String = "query"
+  val queryPostName: String = "Query"
+  val queryRolePostName: String = "Role"
+  val queryHelperPrefix: String = "Helper"
+  
+  val joinPkgName: String = "join"
+  
+  val examplePkgName: String = "example"
+  
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/conversion/SClassConverter.scala b/src/main/scala/org/rosi_project/model_sync/generator/conversion/SClassConverter.scala
index 7e5ed25cd2a5a62d464f17ff91720597773dbb59..986423df28a89116814b7720d3e22e7bd5940e8e 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/conversion/SClassConverter.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/conversion/SClassConverter.scala
@@ -4,6 +4,7 @@ import org.eclipse.emf.ecore.{EAttribute, EClass, EReference}
 import org.rosi_project.model_sync.generator.acr_model._
 import org.rosi_project.model_sync.generator.acr_model.types.SList
 import org.rosi_project.model_sync.generator.acr_model.types.SSet
+import org.rosi_project.model_sync.generator.PackageNames
 
 /** Converter to generate instances of [[SClass]] based on [[EClass EClasses]].
   *
@@ -20,14 +21,14 @@ class SClassConverter extends Converter[EClass, SClass] {
     (source.getEAttributes: List[EAttribute]).foreach(eAttr => {      
       val attrType: STypedElement = STypeRegistry
         // check if the attribute type is already known and registered
-        .query(eAttr.getEAttributeType.getName, eAttr.getEAttributeType.getEPackage.getNsPrefix)
+        .query(eAttr.getEAttributeType.getName, PackageNames.sourcePkgPrefix + eAttr.getEAttributeType.getEPackage.getNsPrefix)
         // otherwise create a new type
         .getOrElse {
           val newAttr = EmfTypeTranslator
             // if the type is wrapped by EMF (such as EString), use the corresponding scala type
             .getSClassFromEmf(eAttr.getEAttributeType)
             // otherwise create a new class (as the attribute should instance of a class rather than a type in this case)
-            .getOrElse(new SClass(eAttr.getEAttributeType.getName, eAttr.getEAttributeType.getEPackage.getNsPrefix))
+            .getOrElse(new SClass(eAttr.getEAttributeType.getName, PackageNames.sourcePkgPrefix + eAttr.getEAttributeType.getEPackage.getNsPrefix))
 
           // finally save the type
           STypeRegistry.addType(newAttr, null)
@@ -41,7 +42,7 @@ class SClassConverter extends Converter[EClass, SClass] {
       .foreach(eRef => {
         val refName: String = eRef.getName //Attribute name       
         val refType: String = eRef.getEReferenceType.getName //Name of the attribute type
-        val refTypePckg: String = eRef.getEReferenceType.getEPackage.getNsPrefix //Package name of the attribute type
+        val refTypePckg: String = PackageNames.sourcePkgPrefix + eRef.getEReferenceType.getEPackage.getNsPrefix //Package name of the attribute type
         val containment: Boolean = eRef.isContainment() //Containment relation or not
         val oppositeERef: EReference = eRef.getEOpposite() //Opposite reference
         var oppositeRef: SReference = null //Opposite reference
@@ -94,38 +95,20 @@ class SClassConverter extends Converter[EClass, SClass] {
     })
 
     val eClassParents: List[EClass] = source.getESuperTypes.toArray(new Array[EClass](0)).toList
-
-    //implemented multiple inheritance support
-    /*if (violatesSingleInheritance(eClassParents)) {
-      throw new UnconvertibleEmfException(source.getEPackage, s"For class: $source")
-    }*/
     
     eClassParents.foreach { p =>
       pars ::= STypeRegistry
         // check if we already know the parent
-        .query(p.getName, p.getEPackage.getNsPrefix)
+        .query(p.getName, PackageNames.sourcePkgPrefix + p.getEPackage.getNsPrefix)
         // otherwise we need to create and register it
         .getOrElse {
-          val parentSClass: SClass = new SClass(p.getName, p.getEPackage.getNsPrefix)
+          val parentSClass: SClass = new SClass(p.getName, PackageNames.sourcePkgPrefix + p.getEPackage.getNsPrefix)
           // register the parent (it will be visited and completely inflated later on)
           STypeRegistry.addType(parentSClass, null)
           parentSClass
         }
     }
 
-    /*val parent: STypedElement = eClassParents.headOption.map((p: EClass) => {
-      STypeRegistry
-        // check if we already know the parent
-        .queryForName(p.getName)
-        // otherwise we need to create and register it
-        .getOrElse {
-          val parentSClass: SClass = new SClass(p.getName, sPackage = p.getEPackage.getNsPrefix)
-          // register the parent (it will be visited and completely inflated later on)
-          STypeRegistry.addType(parentSClass)
-          parentSClass
-        }
-    }).orNull*/
-
     /* `convert` may be called on two different occasions: either for a completely new type or
      * for a type that was already created before when another type was being inflated by `convert`.
      *  In the first case we need to set up all the necessary attributes of the SClass and therefore
@@ -136,7 +119,7 @@ class SClassConverter extends Converter[EClass, SClass] {
      *  have the type known). Therefore we will set these now.
      */
 
-    val currentClass: Option[STypedElement] = STypeRegistry.query(source.getName, source.getEPackage.getNsPrefix)
+    val currentClass: Option[STypedElement] = STypeRegistry.query(source.getName, PackageNames.sourcePkgPrefix + source.getEPackage.getNsPrefix)
 
     currentClass.map {
       case clazz: SClass =>
@@ -149,7 +132,7 @@ class SClassConverter extends Converter[EClass, SClass] {
       case sType =>
         sys.error(s"sType should have been a class: $sType")
     }.getOrElse {
-      val createdClass: SClass = new SClass(source.getName, source.getEPackage.getNsPrefix, source.isAbstract, source.isInterface)
+      val createdClass: SClass = new SClass(source.getName, PackageNames.sourcePkgPrefix + source.getEPackage.getNsPrefix, source.isAbstract, source.isInterface)
       createdClass.setAttributes(attrs)
       createdClass.setReferences(refs)
       pars.foreach(p => {
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/conversion/SEnumConverter.scala b/src/main/scala/org/rosi_project/model_sync/generator/conversion/SEnumConverter.scala
index 127ac5bc818ae9c889e846d9732bf58a26d194fb..64578dfdc03267bff40e086168e94628fd54984c 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/conversion/SEnumConverter.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/conversion/SEnumConverter.scala
@@ -4,6 +4,7 @@ import org.eclipse.emf.ecore.EEnum
 import org.rosi_project.model_sync.generator.acr_model.SEnum
 import org.eclipse.emf.ecore.EEnumLiteral
 import org.rosi_project.model_sync.generator.acr_model.STypeRegistry
+import org.rosi_project.model_sync.generator.PackageNames
 
 class SEnumConverter extends Converter[EEnum, SEnum] {
 
@@ -16,7 +17,7 @@ class SEnumConverter extends Converter[EEnum, SEnum] {
       strings += elit.getName
     }) 
     
-    val createdEnum: SEnum = new SEnum(source.getName, source.getEPackage.getNsPrefix, strings)
+    val createdEnum: SEnum = new SEnum(source.getName, PackageNames.sourcePkgPrefix + source.getEPackage.getNsPrefix, strings)
     STypeRegistry.addType(createdEnum, null)
     createdEnum
   }
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/conversion/SModelGenerator.scala b/src/main/scala/org/rosi_project/model_sync/generator/conversion/SModelGenerator.scala
index a8ed626e83a3684a8c298bd7a312442c4003157e..d3e42a359b458ea704d529a6935961d718dcaa2a 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/conversion/SModelGenerator.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/conversion/SModelGenerator.scala
@@ -6,6 +6,7 @@ import org.rosi_project.model_sync.generator.acr_model.{SModel, SType, STypeRegi
 import scala.collection.JavaConverters._
 import org.rosi_project.model_sync.generator.acr_model.SClass
 import org.eclipse.emf.ecore.EEnum
+import org.rosi_project.model_sync.generator.PackageNames
 
 /** Converter to generate an [[SModel]] from ecore.
   *
@@ -22,7 +23,7 @@ class SModelGenerator extends Converter[EPackage, SModel] {
     println("First run creates all classes, important for abstract and interface relations")
     contents.foreach {
       case ec: EClass =>
-        STypeRegistry.addType(new SClass(ec.getName, ec.getEPackage.getNsPrefix, ec.isAbstract, ec.isInterface), ec)
+        STypeRegistry.addType(new SClass(ec.getName, PackageNames.sourcePkgPrefix + ec.getEPackage.getNsPrefix, ec.isAbstract, ec.isInterface), ec)
       case ee: EEnum =>
         //prinltn(ee)
         model.addModelEnums(new SEnumConverter convert (ee, sourceName))
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/GenerateQueryHelperVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/GenerateQueryHelperVisitor.scala
index f946b773dc049e02e94d5b1bae11e4591fca11e8..3018c8f3b324af53276385c1aab3baeb164f4f0a 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/sync/GenerateQueryHelperVisitor.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/GenerateQueryHelperVisitor.scala
@@ -2,6 +2,7 @@ package org.rosi_project.model_sync.generator.sync
 
 import org.rosi_project.model_sync.generator.acr_model._
 import org.rosi_project.model_sync.generator.acr_model.types.PredefTypes
+import org.rosi_project.model_sync.generator.PackageNames
 
 class GenerateQueryHelperVisitor extends SModelVisitor {
 
@@ -10,7 +11,7 @@ class GenerateQueryHelperVisitor extends SModelVisitor {
     //iterate over all abstract classes or interfaces
     sModel.getModelClasses.foreach(cls => {
       if (cls.isAbstract || cls.isInterface) {
-        val newClass = new SClass("Helper" + cls.getName, cls.getPackage)
+        val newClass = new SClass(PackageNames.queryHelperPrefix + cls.getName, cls.getPackage)
         newClass.addParent(cls)
         newClass.addParent(PredefRsumTypes.QUERY_HELPER_STYPE)
         newClass.addMethod(new SMethod(
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/InstanceCombiGenerator.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/InstanceCombiGenerator.scala
index a631992ff2dfbd6a162cf3b8dec870b1d8b45b8b..4194f049ae4ea57e06091d6f17905ec34e9f1337 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/sync/InstanceCombiGenerator.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/InstanceCombiGenerator.scala
@@ -10,12 +10,13 @@ import org.eclipse.emf.ecore.EStructuralFeature
 import org.eclipse.emf.common.util.EList
 import org.rosi_project.model_sync.util.EMFUtilForGenerator
 import java.util.List
+import org.rosi_project.model_sync.generator.PackageNames
 
 class InstanceCombiGenerator(val clsins: ClassAndInstance) extends SModelVisitor {
 
   override def visit(sModel: SModel): Unit = {
     //println("++++++++++++++++++++++++++++++++++++++++++++++")
-    val example = new SClass("ExampleCombiCase", "example")
+    val example = new SClass("ExampleCombiCase", PackageNames.examplePkgName)
     val contents = clsins.obj.eAllContents().asScala
     var counter = 0
     var lines: Seq[InstanceLine] = Seq.empty
@@ -32,7 +33,7 @@ class InstanceCombiGenerator(val clsins: ClassAndInstance) extends SModelVisitor
         counter += 1
       }
     })    
-    //add values for instances
+    //add values for instances    
     lines.foreach(l => {
       l.usedType.getAllConstructorParameters.foreach(cp => {
         if (!STypeRegistry.isDefaultType(cp.getType.getName)) {
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/InstanceGenerator.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/InstanceGenerator.scala
index 224714e16a1cb6785afa43cad3a2acc7c75de9a3..0ca45b307360e460de231f226161b4c907f2f7df 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/sync/InstanceGenerator.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/InstanceGenerator.scala
@@ -10,6 +10,7 @@ import org.eclipse.emf.ecore.EStructuralFeature
 import org.eclipse.emf.common.util.EList
 import org.rosi_project.model_sync.util.EMFUtilForGenerator
 import java.util.List
+import org.rosi_project.model_sync.generator.PackageNames
 
 /**
  * Service to create an instance creation object.
@@ -20,7 +21,7 @@ class InstanceGenerator(val clsins: ClassAndInstance) extends SModelVisitor {
 
   override def visit(sModel: SModel): Unit = {
     //println("++++++++++++++++++++++++++++++++++++++++++++++")
-    val example = new SClass("ExampleCase", "example")
+    val example = new SClass("ExampleCase", PackageNames.examplePkgName)
     val contents = clsins.obj.eAllContents().asScala
     var counter = 0
     var lines: Seq[InstanceLine] = Seq.empty
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/ModelJoinViewGeneratingVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/ModelJoinViewGeneratingVisitor.scala
index f81939038a1af8a4f066afef86b4c9a93cefcab6..1a0d3a6c8babadae60bbd5cb7168344d0d7ecf1c 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/sync/ModelJoinViewGeneratingVisitor.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/ModelJoinViewGeneratingVisitor.scala
@@ -6,6 +6,7 @@ import org.rosi_project.model_sync.model_join.representation.grammar._
 import scala.collection.JavaConverters._
 import scala.collection.convert.AsScalaConverters
 import org.rosi_project.model_management.sum.join.RsumJoinType
+import org.rosi_project.model_sync.generator.PackageNames
 
 class ModelJoinViewGeneratingVisitor(joinExpression: ModelJoinExpression) extends SModelVisitor {
 
@@ -24,7 +25,7 @@ class ModelJoinViewGeneratingVisitor(joinExpression: ModelJoinExpression) extend
       newInternalRoles = Seq.empty
       newInternalRelationalRoles = Seq.empty
       allImportClasses = Set.empty
-      viewCompartment = new SClass(joinExpression.getName() + counter, "view")
+      viewCompartment = new SClass(joinExpression.getName() + counter, PackageNames.viewPkgName)
       counter += 1
       viewCompartment.addParent(PredefRsumTypes.IVIEW_COMPARTMENT_STYPE)
 
@@ -83,7 +84,7 @@ class ModelJoinViewGeneratingVisitor(joinExpression: ModelJoinExpression) extend
       })
     } else {
       refClasses = refClasses :+ cls
-      internalClass = new SInnerViewNaturalClass(cls.getName + "Role",
+      internalClass = new SInnerViewNaturalClass(cls.getName + PackageNames.viewRolePostName,
         _isAbstract = cls.isAbstract,
         _isInterface = cls.isInterface,
         _externalClass = viewCompartment,
@@ -216,7 +217,7 @@ class ModelJoinViewGeneratingVisitor(joinExpression: ModelJoinExpression) extend
               //now find the right relational compartment
               refRelationalClasses = refRelationalClasses :+ rc
               //Iterate over all Relational compartments and create relational internal role classes
-              val internalRelClass = new SInnerViewRelationalClass(rc.getName + "Role", _externalClass = viewCompartment,
+              val internalRelClass = new SInnerViewRelationalClass(rc.getName + PackageNames.viewRolePostName, _externalClass = viewCompartment,
                 sumSource = rc, viewSource = sourceRole, viewTarget = targetRole)
               internalRelClass.setAttributes(sourceAtt ++ targetAtt)
               internalRelClass.addMethod(ViewMethods.getIsRelationalMethod(true))
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/QueryGeneratingVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/QueryGeneratingVisitor.scala
index 1886459dfbf178300faf9e45c89f9983ae363148..d40d5ad26600f869b70cc975c1225f8a5941a5d1 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/sync/QueryGeneratingVisitor.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/QueryGeneratingVisitor.scala
@@ -2,12 +2,13 @@ package org.rosi_project.model_sync.generator.sync
 
 import org.rosi_project.model_sync.generator.acr_model._
 import org.rosi_project.model_sync.generator.acr_model.types._
+import org.rosi_project.model_sync.generator.PackageNames
 
 class QueryGeneratingVisitor extends SModelVisitor {
 
   override def visit(sModel: SModel): Unit = {
     
-    val viewCompartment = new SClass(sModel.getName.capitalize + "Query", "query")
+    val viewCompartment = new SClass(sModel.getName.capitalize + PackageNames.queryPostName, PackageNames.queryPkgName)
     var newInternalRoles: Seq[SInnerViewNaturalClass] = Seq.empty
     var newInternalRelationalRoles: Seq[SInnerViewRelationalClass] = Seq.empty
     viewCompartment.addParent(PredefRsumTypes.IQUERY_VIEW_COMPARTMENT_STYPE)
@@ -21,8 +22,8 @@ class QueryGeneratingVisitor extends SModelVisitor {
     viewCompartment.augmentConstructor(SMethodStatement(s"""init("${viewCompartment.getName}")""", allTypes))     
     
     //Iterate over all Model classes and create natural internal role classes
-    sModel.getModelClasses.filter(!_.getName.startsWith("Helper")).foreach(cls => {
-      val internalClass = new SInnerViewNaturalClass(cls.getName + "Role",
+    sModel.getModelClasses.filter(!_.getName.startsWith(PackageNames.queryHelperPrefix)).foreach(cls => {
+      val internalClass = new SInnerViewNaturalClass(cls.getName + PackageNames.queryRolePostName,
           _isAbstract = false,
           _isInterface = false,
           _externalClass = viewCompartment, 
@@ -54,7 +55,7 @@ class QueryGeneratingVisitor extends SModelVisitor {
       inner.addMethod(ViewMethods.getDeleteElementNaturalMethod(inner))
       //add parents
       cls.getAllParents().foreach(p => {
-        val existing: Option[STypedElement] = newInternalRoles.find(existing => existing.getName == p.getName + "Role")
+        val existing: Option[STypedElement] = newInternalRoles.find(existing => existing.getName == p.getName + PackageNames.queryRolePostName)
         if (!existing.isEmpty) {
           inner.addParent(existing.get)
         }
@@ -77,7 +78,7 @@ class QueryGeneratingVisitor extends SModelVisitor {
       var targetRole: SInnerViewNaturalClass = null
       r.getAttributes.foreach(attr => {
         newInternalRoles.foreach(inte => {
-          if (inte.getName == attr.getTypeElement.getName + "Role") {
+          if (inte.getName == attr.getTypeElement.getName + PackageNames.queryRolePostName) {
             if (attr.getName == "sInstance") {
               sourceRole = inte
               sourceAtt = new SAttribute("source", inte)
@@ -92,7 +93,7 @@ class QueryGeneratingVisitor extends SModelVisitor {
           }
         })
       })
-      val internalClass = new SInnerViewRelationalClass(r.getName + "Role", _externalClass = viewCompartment, 
+      val internalClass = new SInnerViewRelationalClass(r.getName + PackageNames.queryRolePostName, _externalClass = viewCompartment, 
           sumSource = r.asInstanceOf[SRelationalCompartmentClass], viewSource = sourceRole, viewTarget = targetRole)      
       internalClass.setAttributes(sourceAtt ++ targetAtt)
       internalClass.addMethod(ViewMethods.getIsRelationalMethod(true))
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewGeneratingVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewGeneratingVisitor.scala
index eb944853215ab42922a3597bb5869647ece406bd..2611fa736b09a28e98d7c331589a76ae3a3c6de4 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewGeneratingVisitor.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewGeneratingVisitor.scala
@@ -2,19 +2,20 @@ package org.rosi_project.model_sync.generator.sync
 
 import org.rosi_project.model_sync.generator.acr_model._
 import org.rosi_project.model_sync.generator.acr_model.types._
+import org.rosi_project.model_sync.generator.PackageNames
 
 class ViewGeneratingVisitor extends SModelVisitor {
 
   override def visit(sModel: SModel): Unit = {
     
-    val viewCompartment = new SClass(sModel.getName.capitalize + "View", "view")
+    val viewCompartment = new SClass(sModel.getName.capitalize + PackageNames.viewPostName, PackageNames.viewPkgName)
     var newInternalRoles: Seq[SInnerViewNaturalClass] = Seq.empty
     var newInternalRelationalRoles: Seq[SInnerViewRelationalClass] = Seq.empty
     viewCompartment.addParent(PredefRsumTypes.IVIEW_COMPARTMENT_STYPE)
     
     //Iterate over all Model classes and create natural internal role classes
     sModel.getModelClasses.foreach(cls => {
-      val internalClass = new SInnerViewNaturalClass(cls.getName + "Role",
+      val internalClass = new SInnerViewNaturalClass(cls.getName + PackageNames.viewRolePostName,
           _isAbstract = cls.isAbstract,
           _isInterface = cls.isInterface,
           _externalClass = viewCompartment, 
@@ -49,7 +50,7 @@ class ViewGeneratingVisitor extends SModelVisitor {
       inner.addMethod(ViewMethods.getDeleteElementNaturalMethod(inner))
       //add parents
       cls.getAllParents().foreach(p => {
-        val existing: Option[STypedElement] = newInternalRoles.find(existing => existing.getName == p.getName + "Role")
+        val existing: Option[STypedElement] = newInternalRoles.find(existing => existing.getName == p.getName + PackageNames.viewRolePostName)
         if (!existing.isEmpty) {
           inner.addParent(existing.get)
         }
@@ -70,7 +71,7 @@ class ViewGeneratingVisitor extends SModelVisitor {
       var targetRole: SInnerViewNaturalClass = null
       r.getAttributes.foreach(attr => {
         newInternalRoles.foreach(inte => {
-          if (inte.getName == attr.getTypeElement.getName + "Role") {
+          if (inte.getName == attr.getTypeElement.getName + PackageNames.viewRolePostName) {
             if (attr.getName == "sInstance") {
               sourceRole = inte
               sourceAtt = new SAttribute("source", inte)
@@ -85,7 +86,7 @@ class ViewGeneratingVisitor extends SModelVisitor {
           }
         })
       })
-      val internalClass = new SInnerViewRelationalClass(r.getName + "Role", _externalClass = viewCompartment, 
+      val internalClass = new SInnerViewRelationalClass(r.getName + PackageNames.viewRolePostName, _externalClass = viewCompartment, 
           sumSource = r.asInstanceOf[SRelationalCompartmentClass], viewSource = sourceRole, viewTarget = targetRole)      
       internalClass.setAttributes(sourceAtt ++ targetAtt)
       internalClass.addMethod(ViewMethods.getIsRelationalMethod(true))
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/test/ApplicationTest.scala b/src/main/scala/org/rosi_project/model_sync/generator/test/ApplicationTest.scala
index 664b0c6392727e6ac48a076deef97a85f691bc6d..549fabc00846ceabf7bb29133893f06e731ac83b 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/test/ApplicationTest.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/test/ApplicationTest.scala
@@ -40,7 +40,7 @@ object ApplicationTest extends App {
   }
   
   def runTTC2019(cre: Creation.Value): Unit = {
-    var config: GeneratorConfig = GeneratorConfig(Seq("assets/models/BDD.ecore", "assets/models/TT.ecore"), false, new File("assets/models"));
+    var config: GeneratorConfig = GeneratorConfig(Seq("assets/models/BDD.ecore", "assets/models/BDDv2.ecore", "assets/models/TT.ecore"), false, new File("assets/models"));
     config.setCreate(cre)
     new Generator(config).run()
   }