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 2765ba3ded1417883c05b881a4c4394602d428e0..83e4317f43d8975107c6e49862b32e7a7e938022 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
@@ -45,6 +45,10 @@ class SClassWriter(val modelClass: SClass, val isObject: Boolean) {
        |${imports.map(i => s"import $i").mkString("\n")}
        |${viewImports}
        |
+       |/**
+       | * This file is automatically generated from the code generator
+       | * for the role-based model management framework.
+       | */
        |${clazzFixture} {
        |
        |  ${if (PackageNames.multiInhertitanceWithTraits) s"${generateAttributeFixture}" else ""}
@@ -95,7 +99,12 @@ class SClassWriter(val modelClass: SClass, val isObject: Boolean) {
   protected def generateCompanionFixture: String = {
     if (isView) {
       val viewClass = modelClass.asInstanceOf[SViewClass]
-      s"""object ${modelClass.getName} extends ${PredefRsumTypes.VIEWTYPE_INFO_STYPE.getName} {  
+      s"""
+       |/**
+       | * This file is automatically generated from the code generator
+       | * for the role-based model management framework.
+       | */
+       |object ${modelClass.getName} extends ${PredefRsumTypes.VIEWTYPE_INFO_STYPE.getName} {  
        |
        |  override def getViewName(): String = "${modelClass.getName}"
        |  
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/io/SEnumWriter.scala b/src/main/scala/org/rosi_project/model_sync/generator/io/SEnumWriter.scala
index 63684d0fcc2f42baaac3b7f485927bf45a1fb813..b9e21dc5fccb925f2a6a86c0483267cebc0a4034 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/io/SEnumWriter.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/io/SEnumWriter.scala
@@ -14,6 +14,10 @@ class SEnumWriter(val modelEnum: SEnum) {
   def stringify: String = {
     s"""$pckg
        |
+       |/**
+       | * This file is automatically generated from the code generator
+       | * for the role-based model management framework.
+       | */
        |object ${modelEnum.getName} extends Enumeration {
        |
        |  val ${modelEnum.enums.mkString(", ")} = Value
diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/ReferenceMethodCreationVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/ReferenceMethodCreationVisitor.scala
index e3ef7b31f16abe2fe6dc2688db98b3326b1edad1..b7edd70c85258c5786c55284098685bf93324788 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/sync/ReferenceMethodCreationVisitor.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/ReferenceMethodCreationVisitor.scala
@@ -1,67 +1,71 @@
 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.GenericSequence
 
 class ReferenceMethodCreationVisitor extends SModelVisitor {
 
   override def visit(sModel: SModel): Unit = {
+    var typeName = "Set.empty"
+    var addElement = "result +="
+
     sModel.getRelationalCompartments.foreach(cls => {
       val relComp = cls.asInstanceOf[SRelationalCompartmentClass]
       //iterate over all relational compartments
       val methodSrc = new SMethod(
-        name = relComp.connectedRef.getName,
+        name = s"get${relComp.connectedRef.getName.capitalize}",
         result = relComp.connectedRef.getTypeElement,
         params = Seq.empty,
         implementation = Seq.empty)
+
+      //proof return type
+      if (relComp.connectedRef.getTypeElement.isInstanceOf[GenericSequence]) {
+        typeName = "Set.empty"
+        addElement = "result +="
+      } else {
+        typeName = "null"
+        addElement = "result ="
+      }
+      //make impl
       var implSrc: Seq[SMethodStatement] = Seq.empty
-      implSrc :+ SMethodStatement(content = s"var result: ${relComp.connectedRef.getTypeElement} = Set.empty")
-      implSrc :+ SMethodStatement(content = s"""this.roles.filter(r => r.isInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}] && 
+      implSrc = implSrc :+ SMethodStatement(content = s"var result: ${relComp.connectedRef.getTypeElement.getName} = ${typeName}", usedTypes = Set(PredefRsumTypes.IRELATIONROLE_STYPE))
+      implSrc = implSrc :+ SMethodStatement(content = s"""this.roles.filter(r => r.isInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}] && 
         r.asInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}].getOuterCompartment.isInstanceOf[${relComp.getName}])
         .foreach(r => {
-          list += r.asInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}].getOuterCompartment.getTargetIns.asInstanceOf[${relComp.tClass.getName}]
+          ${addElement} r.asInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}].getOuterCompartment.getTargetIns.asInstanceOf[${relComp.tClass.getName}]
         })""")
-      implSrc :+ SMethodStatement(content = "result")
+      implSrc = implSrc :+ SMethodStatement(content = "result")
       methodSrc.implementation = implSrc
       relComp.sClass.asInstanceOf[SClass].addMethod(methodSrc)
       //proof opposite reference
       if (relComp.connectedRef.hasOpposite) {
         val methodTrg = new SMethod(
-          name = relComp.connectedRef.oppositeRef.getName,
+          name = s"get${relComp.connectedRef.oppositeRef.getName.capitalize}",
           result = relComp.connectedRef.oppositeRef.getTypeElement,
           params = Seq.empty,
           implementation = Seq.empty)
+
+        //proof return type
+        if (relComp.connectedRef.oppositeRef.getTypeElement.isInstanceOf[GenericSequence]) {
+          typeName = "Set.empty"
+          addElement = "result +="
+        } else {
+          typeName = "null"
+          addElement = "result ="
+        }
+        //make impl
         var implTrg: Seq[SMethodStatement] = Seq.empty
-        implTrg :+ SMethodStatement(content = s"var result: ${relComp.connectedRef.oppositeRef.getTypeElement} = Set.empty")
-        implTrg :+ SMethodStatement(content = s"""this.roles.filter(r => r.isInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}] && 
+        implTrg = implTrg :+ SMethodStatement(content = s"var result: ${relComp.connectedRef.oppositeRef.getTypeElement.getName} = ${typeName}", usedTypes = Set(PredefRsumTypes.IRELATIONROLE_STYPE))
+        implTrg = implTrg :+ SMethodStatement(content = s"""this.roles.filter(r => r.isInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}] && 
           r.asInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}].getOuterCompartment.isInstanceOf[${relComp.getName}])
           .foreach(r => {
-            list += r.asInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}].getOuterCompartment.getSourceIns.asInstanceOf[${relComp.sClass.getName}]
+            ${addElement} r.asInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}].getOuterCompartment.getSourceIns.asInstanceOf[${relComp.sClass.getName}]
           })""")
-        implTrg :+ SMethodStatement(content = "result")
+        implTrg = implTrg :+ SMethodStatement(content = "result")
         methodTrg.implementation = implTrg
         relComp.tClass.asInstanceOf[SClass].addMethod(methodTrg)
       }
     })
-    sModel.getModelClasses.foreach(cls => {
-      //iterate over all references and add new method to class
-      cls.getReferences().foreach(ref => {
-        val method = new SMethod(
-          name = ref.getName,
-          result = ref.getTypeElement,
-          params = Seq.empty,
-          implementation = Seq.empty)
-        var impl: Seq[SMethodStatement] = Seq.empty
-        impl :+ SMethodStatement(content = s"var result: ${ref.getTypeElement} = Set.empty")
-        impl :+ SMethodStatement(content = s"""this.roles.filter(r => r.isInstanceOf[IRelationRole] && 
-        r.asInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}].getOuterCompartment.isInstanceOf[VideoCassetteCastPerson])
-        .foreach(r => {
-          list += r.asInstanceOf[${PredefRsumTypes.IRELATIONROLE_STYPE.getName}].getOuterCompartment.getTargetIns.asInstanceOf[Person]
-        })""")
-        impl :+ SMethodStatement(content = "result")
-        method.implementation = impl
-        cls.addMethod(method)
-      })
-    })
   }
 
   override def visit(sClass: SClass): Unit = {