diff --git a/assets/model_join/complex.modeljoin b/assets/model_join/complex.modeljoin
index 3adb3689b72a192ac1d66473e24f35dd85260e86..610f0771a034d528b50c58f2fcc84dc021435705 100644
--- a/assets/model_join/complex.modeljoin
+++ b/assets/model_join/complex.modeljoin
@@ -1,16 +1,16 @@
 
-natural join imdbdatabase.Film with eclipselibrary.VideoCassette as joins.JoinMovie {
+natural join imdbdatabase.Film with elib.VideoCassette as joins.JoinMovie {
   keep attributes imdbdatabase.Film.year
   keep aggregate avg(score) over Film.votes as Movie.averageRating
   keep calculated attribute imdbdatabase.Film.votes->select(v|v.score==10)->size() as Movie.topratings:EInt
-  keep supertype eclipselibrary.AudioVisualItem as type jointarget.MediaItem {
-    keep attributes library.AudioVisualItem.minutesLength
+  keep supertype elib.AudioVisualItem as type jointarget.MediaItem {
+    keep attributes elib.AudioVisualItem.minutesLength
   }
   keep outgoing imdbdatabase.Film.votes as type jointarget.Vote {
     keep attributes imdbdatabase.Vote.score
   }
-  keep outgoing eclipselibrary.VideoCassette.cast as type jointarget.Person {
-    keep attributes eclipselibrary.Person.lastName
+  keep outgoing elib.VideoCassette.cast as type jointarget.Person {
+    keep attributes elib.Person.lastName
   }
 
 }
diff --git a/assets/models/AML.ecore b/assets/models/AML.ecore
index db85f69458ae54611481c3a96161fc528a4dbcc3..a073b44ca3e0778a8a37fbd86c546b49da53a881 100644
--- a/assets/models/AML.ecore
+++ b/assets/models/AML.ecore
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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="AMLLanguage" nsURI="http://www.example.org/aml" nsPrefix="org.rosi_project.example.mm.aml">
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="AMLLanguage" nsURI="http://www.example.org/aml" nsPrefix="aml">
   <eClassifiers xsi:type="ecore:EClass" name="CAEXObject" abstract="true">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
diff --git a/assets/models/IMDBDatabase.ecore b/assets/models/IMDBDatabase.ecore
index 9c09d12ff26d7593d2b0013e6e171e31a83f9b32..b5f9b26f8411d33a06f2e9c6336f37481be42b37 100644
--- a/assets/models/IMDBDatabase.ecore
+++ b/assets/models/IMDBDatabase.ecore
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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="IMDBdatabase" nsURI="http://www.example.org/database" nsPrefix="org.rosi_project.example.mm.database">
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="IMDBdatabase" nsURI="http://www.example.org/database" nsPrefix="imdbdatabase">
   <eClassifiers xsi:type="ecore:EClass" name="IMDB">
     <eStructuralFeatures xsi:type="ecore:EReference" name="users" upperBound="-1"
         eType="#//User" containment="true" eOpposite="#//User/library"/>
diff --git a/assets/models/ModelJoinLibrary.ecore b/assets/models/ModelJoinLibrary.ecore
index d98f470601c41211e6f57ec4b4355e968aee255d..68671c4ce0c595ce48f18b8b6c2b50f395e94c67 100644
--- a/assets/models/ModelJoinLibrary.ecore
+++ b/assets/models/ModelJoinLibrary.ecore
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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="EclipseLibrary" nsURI="http://www.example.org/eclipselibrary"
-    nsPrefix="org.rosi_project.example.mm.elib">
+    nsPrefix="elib">
   <eClassifiers xsi:type="ecore:EClass" name="Item">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
   </eClassifiers>
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
index 52bdcdbf2885539555ead5406a279391e1ab0339..d174073777ccb2f7fc03e02aa7117133ab31bf10 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala
@@ -2,7 +2,9 @@ package org.rosi_project.model_sync.generator
 
 object PackageNames {
   
-  var sourcePkgPrefix: String = "sync."
+  val multiInhertitanceWithTraits = false
+  
+  val sourcePkgPrefix: String = ""
   
   val viewPkgName: String = "view"
   val viewPostName: String = "View"
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SClass.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SClass.scala
index fe08984a067d9eadadde465081e233b9dbc6b3bc..f6c872e406351fbe7932d722ee71efc6c7ff8784 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SClass.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SClass.scala
@@ -168,6 +168,7 @@ class SClass(_name: String,
         println("!!!Cannot add parent because their is one parent that is no interface!!!")
       }
     }
+    
   }
 
   /** Gets the references of `this` class. */
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 5b41f9f6fc9f9d0d3a25e5309c5a190bca23e24e..48794b5ee4d4def4d39f025e2e3fb61d06f5a4b2 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
@@ -23,10 +23,12 @@ 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, PackageNames.sourcePkgPrefix + ec.getEPackage.getNsPrefix, ec.isAbstract, ec.isInterface), ec)
-        STypeRegistry.addType(new SClass(ec.getName, PackageNames.sourcePkgPrefix + ec.getEPackage.getNsPrefix, ec.isInterface, ec.isAbstract), ec)
+        if (PackageNames.multiInhertitanceWithTraits) {
+          STypeRegistry.addType(new SClass(ec.getName, PackageNames.sourcePkgPrefix + ec.getEPackage.getNsPrefix, ec.isInterface, ec.isAbstract), ec)
+        } else {
+          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))
       case _ =>
         // we only care about classes. Types will be registered as soon as they are needed as
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/io/SClassWriter.scala b/src/main/scala/org/rosi_project/model_sync/generator/io/SClassWriter.scala
index f82e0bbf5b1695f2c4250af94492d106cebd5bdd..541facb75b7fd6a0e90aea9a665acd65728faa7a 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/io/SClassWriter.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/io/SClassWriter.scala
@@ -5,14 +5,13 @@ import org.rosi_project.model_sync.generator.support.ExtendedString.stringToExte
 import org.rosi_project.model_sync.generator.sync.PredefRsumTypes
 import org.rosi_project.model_sync.generator.acr_model.types.GenericSequence
 import org.rosi_project.model_sync.generator.sync.HelperFunctions
+import org.rosi_project.model_sync.generator.PackageNames
 
 /** The `Writer` generates the source code of a [[SClass]] and provides it as a `String`.
   *
   * @author Rico Bergmann
   */
 class SClassWriter(val modelClass: SClass, val isView: Boolean, val isObject: Boolean) {
-
-  private val ttcLive2019 = true
   
   private val pckg: String = if (modelClass.isDefaultPackage) "" else s"package ${modelClass.sPackage}"
   private val imports: Seq[String] = modelClass.collectImports.toSeq
@@ -35,7 +34,7 @@ class SClassWriter(val modelClass: SClass, val isView: Boolean, val isObject: Bo
        |
        |${clazzFixture} {
        |
-       |  ${if (ttcLive2019) s"${generateAttributeFixture}" else ""}
+       |  ${if (PackageNames.multiInhertitanceWithTraits) s"${generateAttributeFixture}" else ""}
        |
        |  ${modelClass.getAdditionalConstructorStatements.map(_.getContent).mkString("\n")}
        |
@@ -162,7 +161,7 @@ class SClassWriter(val modelClass: SClass, val isView: Boolean, val isObject: Bo
       baseFixture = s"object ${modelClass.getName}"
     } else { 
       baseFixture = s"class ${modelClass.getName}"
-      if (!ttcLive2019) {
+      if (!PackageNames.multiInhertitanceWithTraits) {
         baseFixture = s"$baseFixture$constructor"
       }
       if (modelClass.isAbstract) {
@@ -179,10 +178,9 @@ class SClassWriter(val modelClass: SClass, val isView: Boolean, val isObject: Bo
         }
       }
     } else {
-      if (ttcLive2019) {
-        baseFixture = s"$baseFixture extends ${parent.getName}"
-      } else {
-        baseFixture = s"$baseFixture extends ${parent.getName}$parentConstructor"
+      baseFixture = s"$baseFixture extends ${parent.getName}"
+      if (!PackageNames.multiInhertitanceWithTraits) {
+        baseFixture = s"${baseFixture}${parentConstructor}"
       }
       if (allInterfaces != "") {
         baseFixture = s"$baseFixture with $allInterfaces"
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 2611fa736b09a28e98d7c331589a76ae3a3c6de4..1e8bc555f79e33e73393bd385316788347fcd60e 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
@@ -40,21 +40,21 @@ class ViewGeneratingVisitor extends SModelVisitor {
       if (cls.isRootClass) {
         inner.addParent(PredefRsumTypes.AVIEW_ROLE_STYPE)
       }
+      //add parents
+      cls.getAllParents().foreach(p => {
+        val existing: Option[STypedElement] = newInternalRoles.find(existing => existing.getName == p.getName + PackageNames.viewRolePostName)
+        if (!existing.isEmpty) {
+          inner.addParent(existing.get)
+        }
+      })  
       //add initialize method if necessary
       if (!inner.isAbstract && !inner.isInterface) {
         inner.addMethod(ViewMethods.getIsRelationalMethod(false))
         inner.addMethod(ViewMethods.getCreationObjectMethod(inner))
-      }
+      }    
       //add delete method
       inner.addMethod(ToStringMethods.onlyStringToStringMethod("VNR: " + inner.getName))
       inner.addMethod(ViewMethods.getDeleteElementNaturalMethod(inner))
-      //add parents
-      cls.getAllParents().foreach(p => {
-        val existing: Option[STypedElement] = newInternalRoles.find(existing => existing.getName == p.getName + PackageNames.viewRolePostName)
-        if (!existing.isEmpty) {
-          inner.addParent(existing.get)
-        }
-      })      
       //add getter and setter for attributes in the inner class
       inner.getAttributes.foreach(attr => {
         inner.addMethod(ViewMethods.getViewAttributeGetter(attr))
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 a28abfbc6576677ba67a3c168c13924bc66bf052..9bf0ba125e15a8b91a3cecc80bc1b66e1198b1ba 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
@@ -7,17 +7,16 @@ import org.rosi_project.model_sync.generator.Creation
 
 object ApplicationTest extends App {
       
-  //runCombinedTest(Creation.rsum)
-  //runShrinkingModel(Creation.rsum)
+  runCombinedTest(Creation.rolesum)
+  //runShrinkingModel(Creation.rolesum)
+  //runTestAML(Creation.rolesum)
   
+  //TTC Case examples
   //runTTC2019(Creation.rolecomb)
-  //runTTC2019(Creation.rolesync)
-  
-  //runTTCLive2019Part(Creation.rolesync)
-  runTTCLive2019(Creation.rolesync)
-  //runTTC2019(Creation.rolesync)
+  //runTTC2019(Creation.rolesync)  
+  //runTTCLive2019(Creation.rolesync)
 
-  
+  //Run all tests
   //runAllTests(Creation.rsum)
   //runAllTests(Creation.rsync)
   
@@ -43,12 +42,6 @@ object ApplicationTest extends App {
     println("#####################################################################################")
   }
   
-  def runTTCLive2019Part(cre: Creation.Value): Unit = {
-    var config: GeneratorConfig = GeneratorConfig(Seq("assets/models/BibTeX.ecore"), false, new File("assets/models"));
-    config.setCreate(cre)
-    new Generator(config).run()
-  }
-  
   def runTTCLive2019(cre: Creation.Value): Unit = {
     var config: GeneratorConfig = GeneratorConfig(Seq("assets/models/BibTeX.ecore", "assets/models/DocBook.ecore", "assets/models/NMetaChanges.ecore"), false, new File("assets/models"));
     config.setCreate(cre)