From 01b2abd25ba0378b14afce3b2a53775235988fc8 Mon Sep 17 00:00:00 2001
From: Chrissi <christopher@hbsc-werner.de>
Date: Mon, 5 Aug 2019 22:39:58 +0200
Subject: [PATCH] initial commit

---
 .gitignore                                    |   26 +
 .scalastyle                                   |    1 +
 build.sbt                                     |   15 +
 lib/modeljoin.jar                             |  Bin 0 -> 228674 bytes
 project/build.properties                      |    1 +
 project/plugins.sbt                           |    1 +
 .../util/query/ModelJoinCreator.java          |   93 ++
 src/main/scala/aml/Attribute.scala            |   21 +
 src/main/scala/aml/CAEXObject.scala           |   29 +
 src/main/scala/aml/HelperCAEXObject.scala     |   19 +
 src/main/scala/aml/InstanceHierarchy.scala    |   13 +
 ...archyInternalElementsInternalElement.scala |   46 +
 src/main/scala/aml/InternalElement.scala      |   13 +
 ...ElementBaseSystemUnitSystemUnitClass.scala |   46 +
 src/main/scala/aml/SystemUnitClass.scala      |   13 +
 .../SystemUnitClassAttributesAttribute.scala  |   46 +
 ...ClassInternalElementsInternalElement.scala |   46 +
 src/main/scala/elib/AudioVisualItem.scala     |   39 +
 src/main/scala/elib/Book.scala                |   39 +
 src/main/scala/elib/BookAuthorWriter.scala    |   46 +
 src/main/scala/elib/BookCategory.scala        |    8 +
 src/main/scala/elib/BookOnTape.scala          |   15 +
 .../scala/elib/BookOnTapeAuthorWriter.scala   |   46 +
 .../scala/elib/BookOnTapeReaderPerson.scala   |   46 +
 src/main/scala/elib/Borrower.scala            |   13 +
 src/main/scala/elib/CirculatingItem.scala     |   15 +
 src/main/scala/elib/Employee.scala            |   13 +
 .../scala/elib/EmployeeManagerEmployee.scala  |   46 +
 src/main/scala/elib/Item.scala                |   23 +
 src/main/scala/elib/Library.scala             |   21 +
 src/main/scala/elib/LibraryBooksBook.scala    |   46 +
 .../scala/elib/LibraryBorrowersBorrower.scala |   46 +
 .../scala/elib/LibraryBranchesLibrary.scala   |   46 +
 .../scala/elib/LibraryEmployeesEmployee.scala |   46 +
 .../elib/LibraryParentBranchLibrary.scala     |   46 +
 src/main/scala/elib/LibraryStockItem.scala    |   46 +
 .../scala/elib/LibraryWritersWriter.scala     |   46 +
 src/main/scala/elib/Periodical.scala          |   31 +
 src/main/scala/elib/Person.scala              |   29 +
 src/main/scala/elib/VideoCassette.scala       |   15 +
 .../scala/elib/VideoCassetteCastPerson.scala  |   46 +
 src/main/scala/elib/Writer.scala              |   21 +
 src/main/scala/imdbdatabase/Actor.scala       |   13 +
 src/main/scala/imdbdatabase/Figure.scala      |   21 +
 .../imdbdatabase/FigurePlayedByActor.scala    |   46 +
 src/main/scala/imdbdatabase/Film.scala        |   29 +
 .../imdbdatabase/FilmFiguresFigure.scala      |   46 +
 src/main/scala/imdbdatabase/IMDB.scala        |   13 +
 .../scala/imdbdatabase/IMDBActorsActor.scala  |   46 +
 .../scala/imdbdatabase/IMDBFilmsFilm.scala    |   46 +
 .../scala/imdbdatabase/IMDBUsersUser.scala    |   46 +
 .../scala/imdbdatabase/IMDBVotesVote.scala    |   46 +
 src/main/scala/imdbdatabase/Person.scala      |   29 +
 src/main/scala/imdbdatabase/User.scala        |   29 +
 src/main/scala/imdbdatabase/Vote.scala        |   21 +
 .../scala/imdbdatabase/VoteFilmFilm.scala     |   46 +
 .../scala/imdbdatabase/VoteUserUser.scala     |   46 +
 src/main/scala/joins/JoinMovie.scala          |   83 ++
 src/main/scala/joins/JoinMovieObject.scala    |   47 +
 src/main/scala/lib/Employee.scala             |   21 +
 .../scala/lib/EmployeeManagerEmployee.scala   |   46 +
 src/main/scala/lib/HelperPerson.scala         |   19 +
 src/main/scala/lib/Library.scala              |   21 +
 .../scala/lib/LibraryEmployeesEmployee.scala  |   46 +
 src/main/scala/lib/Person.scala               |   21 +
 .../org/rosi_project/example/ExampleAml.scala |  430 ++++++
 .../rosi_project/example/ExampleRSUM.scala    |   63 +
 .../example/ModelJoinExample.scala            |  128 ++
 .../core/ModelElementLists.scala              |  159 ++
 .../model_management/core/PlayerSync.scala    |   30 +
 .../core/RsumCompartment.scala                |  273 ++++
 .../core/SynchronizationCompartment.scala     |  462 ++++++
 .../sum/IExtensionCompartment.scala           |   67 +
 .../sum/IViewCompartment.scala                |  237 +++
 .../model_management/sum/IViewTypeInfo.scala  |   26 +
 .../sum/compartments/IAggregation.scala       |   11 +
 .../sum/compartments/IAssociation.scala       |   11 +
 .../sum/compartments/IComposition.scala       |   11 +
 .../sum/compartments/IDirectAggregation.scala |   10 +
 .../sum/compartments/IDirectAssoziation.scala |   10 +
 .../sum/compartments/IDirectComposition.scala |   32 +
 .../compartments/IRelationCompartment.scala   |   49 +
 .../sum/join/IJoinCompartment.scala           |  123 ++
 .../model_management/sum/join/IJoinInfo.scala |   36 +
 .../sum/join/RsumJoinType.scala               |    5 +
 .../model_management/sum/query/AQuery.scala   |  102 ++
 .../sum/query/CheckingOption.scala            |    5 +
 .../sum/query/IQueryViewCompartment.scala     |  138 ++
 .../sum/query/ModelJoinContainer.scala        |    5 +
 .../model_management/sum/query/Query.scala    |  624 ++++++++
 .../sum/query/QueryHelper.scala               |    5 +
 .../sum/roles/IExtensionRole.scala            |    6 +
 .../sum/roles/IRelationRole.scala             |    9 +
 .../sum/roles/IRsumRole.scala                 |    6 +
 .../sum/roles/IViewRole.scala                 |    5 +
 .../sync/IConstructionCompartment.scala       |  161 ++
 .../sync/IDestructionCompartment.scala        |   18 +
 .../sync/IExtenstionCompartment.scala         |   20 +
 .../sync/IIntegrationCompartment.scala        |  198 +++
 .../sync/ISyncCompartment.scala               |  101 ++
 .../sync/ISynchronizationCompartment.scala    |   22 +
 .../sync/compartments/GeneralDestructor.scala |   73 +
 .../ModelElementsListGCExtension.scala        |   58 +
 .../SuppressingConstructionCompartment.scala  |   30 +
 .../sync/helper/ConstructionContainer.scala   |   29 +
 .../sync/helper/IntegrationContainer.scala    |   29 +
 .../sync/roles/IConstructor.scala             |   29 +
 .../sync/roles/IDestructor.scala              |   12 +
 .../sync/roles/IExtension.scala               |   22 +
 .../sync/roles/IIntegrator.scala              |   30 +
 .../sync/roles/IRoleManager.scala             |  103 ++
 .../sync/roles/ISyncRole.scala                |   14 +
 src/main/scala/query/AMLLanguageQuery.scala   |  446 ++++++
 .../scala/query/EclipseLibraryQuery.scala     | 1274 ++++++++++++++++
 src/main/scala/query/IMDBdatabaseQuery.scala  | 1028 +++++++++++++
 src/main/scala/query/LibraryQuery.scala       |  253 ++++
 src/main/scala/view/AMLLanguageView.scala     |  463 ++++++
 src/main/scala/view/EclipseLibraryView.scala  | 1312 +++++++++++++++++
 src/main/scala/view/IMDBdatabaseView.scala    | 1055 +++++++++++++
 src/main/scala/view/LibrarySimple0.scala      |  209 +++
 src/main/scala/view/LibraryView.scala         |  269 ++++
 src/main/scala/view/Manager0.scala            |  162 ++
 src/main/scala/view/Simple0.scala             |  314 ++++
 support/scalastyle_config.xml                 |  188 +++
 124 files changed, 13090 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .scalastyle
 create mode 100644 build.sbt
 create mode 100644 lib/modeljoin.jar
 create mode 100644 project/build.properties
 create mode 100644 project/plugins.sbt
 create mode 100644 src/main/java/org/rosi_project/model_management/util/query/ModelJoinCreator.java
 create mode 100644 src/main/scala/aml/Attribute.scala
 create mode 100644 src/main/scala/aml/CAEXObject.scala
 create mode 100644 src/main/scala/aml/HelperCAEXObject.scala
 create mode 100644 src/main/scala/aml/InstanceHierarchy.scala
 create mode 100644 src/main/scala/aml/InstanceHierarchyInternalElementsInternalElement.scala
 create mode 100644 src/main/scala/aml/InternalElement.scala
 create mode 100644 src/main/scala/aml/InternalElementBaseSystemUnitSystemUnitClass.scala
 create mode 100644 src/main/scala/aml/SystemUnitClass.scala
 create mode 100644 src/main/scala/aml/SystemUnitClassAttributesAttribute.scala
 create mode 100644 src/main/scala/aml/SystemUnitClassInternalElementsInternalElement.scala
 create mode 100644 src/main/scala/elib/AudioVisualItem.scala
 create mode 100644 src/main/scala/elib/Book.scala
 create mode 100644 src/main/scala/elib/BookAuthorWriter.scala
 create mode 100644 src/main/scala/elib/BookCategory.scala
 create mode 100644 src/main/scala/elib/BookOnTape.scala
 create mode 100644 src/main/scala/elib/BookOnTapeAuthorWriter.scala
 create mode 100644 src/main/scala/elib/BookOnTapeReaderPerson.scala
 create mode 100644 src/main/scala/elib/Borrower.scala
 create mode 100644 src/main/scala/elib/CirculatingItem.scala
 create mode 100644 src/main/scala/elib/Employee.scala
 create mode 100644 src/main/scala/elib/EmployeeManagerEmployee.scala
 create mode 100644 src/main/scala/elib/Item.scala
 create mode 100644 src/main/scala/elib/Library.scala
 create mode 100644 src/main/scala/elib/LibraryBooksBook.scala
 create mode 100644 src/main/scala/elib/LibraryBorrowersBorrower.scala
 create mode 100644 src/main/scala/elib/LibraryBranchesLibrary.scala
 create mode 100644 src/main/scala/elib/LibraryEmployeesEmployee.scala
 create mode 100644 src/main/scala/elib/LibraryParentBranchLibrary.scala
 create mode 100644 src/main/scala/elib/LibraryStockItem.scala
 create mode 100644 src/main/scala/elib/LibraryWritersWriter.scala
 create mode 100644 src/main/scala/elib/Periodical.scala
 create mode 100644 src/main/scala/elib/Person.scala
 create mode 100644 src/main/scala/elib/VideoCassette.scala
 create mode 100644 src/main/scala/elib/VideoCassetteCastPerson.scala
 create mode 100644 src/main/scala/elib/Writer.scala
 create mode 100644 src/main/scala/imdbdatabase/Actor.scala
 create mode 100644 src/main/scala/imdbdatabase/Figure.scala
 create mode 100644 src/main/scala/imdbdatabase/FigurePlayedByActor.scala
 create mode 100644 src/main/scala/imdbdatabase/Film.scala
 create mode 100644 src/main/scala/imdbdatabase/FilmFiguresFigure.scala
 create mode 100644 src/main/scala/imdbdatabase/IMDB.scala
 create mode 100644 src/main/scala/imdbdatabase/IMDBActorsActor.scala
 create mode 100644 src/main/scala/imdbdatabase/IMDBFilmsFilm.scala
 create mode 100644 src/main/scala/imdbdatabase/IMDBUsersUser.scala
 create mode 100644 src/main/scala/imdbdatabase/IMDBVotesVote.scala
 create mode 100644 src/main/scala/imdbdatabase/Person.scala
 create mode 100644 src/main/scala/imdbdatabase/User.scala
 create mode 100644 src/main/scala/imdbdatabase/Vote.scala
 create mode 100644 src/main/scala/imdbdatabase/VoteFilmFilm.scala
 create mode 100644 src/main/scala/imdbdatabase/VoteUserUser.scala
 create mode 100644 src/main/scala/joins/JoinMovie.scala
 create mode 100644 src/main/scala/joins/JoinMovieObject.scala
 create mode 100644 src/main/scala/lib/Employee.scala
 create mode 100644 src/main/scala/lib/EmployeeManagerEmployee.scala
 create mode 100644 src/main/scala/lib/HelperPerson.scala
 create mode 100644 src/main/scala/lib/Library.scala
 create mode 100644 src/main/scala/lib/LibraryEmployeesEmployee.scala
 create mode 100644 src/main/scala/lib/Person.scala
 create mode 100644 src/main/scala/org/rosi_project/example/ExampleAml.scala
 create mode 100644 src/main/scala/org/rosi_project/example/ExampleRSUM.scala
 create mode 100644 src/main/scala/org/rosi_project/example/ModelJoinExample.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/core/ModelElementLists.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/core/PlayerSync.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/core/RsumCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/core/SynchronizationCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/IExtensionCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/IViewCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/IViewTypeInfo.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/compartments/IAggregation.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/compartments/IAssociation.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/compartments/IComposition.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectAggregation.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectAssoziation.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectComposition.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/compartments/IRelationCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/join/IJoinCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/join/IJoinInfo.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/join/RsumJoinType.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/query/AQuery.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/query/CheckingOption.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/query/IQueryViewCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/query/ModelJoinContainer.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/query/Query.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/query/QueryHelper.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/roles/IExtensionRole.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/roles/IRelationRole.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/roles/IRsumRole.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sum/roles/IViewRole.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/IConstructionCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/IDestructionCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/IExtenstionCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/IIntegrationCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/ISyncCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/ISynchronizationCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/compartments/GeneralDestructor.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/compartments/ModelElementsListGCExtension.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/compartments/SuppressingConstructionCompartment.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/helper/ConstructionContainer.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/helper/IntegrationContainer.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/roles/IConstructor.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/roles/IDestructor.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/roles/IExtension.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/roles/IIntegrator.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/roles/IRoleManager.scala
 create mode 100644 src/main/scala/org/rosi_project/model_management/sync/roles/ISyncRole.scala
 create mode 100644 src/main/scala/query/AMLLanguageQuery.scala
 create mode 100644 src/main/scala/query/EclipseLibraryQuery.scala
 create mode 100644 src/main/scala/query/IMDBdatabaseQuery.scala
 create mode 100644 src/main/scala/query/LibraryQuery.scala
 create mode 100644 src/main/scala/view/AMLLanguageView.scala
 create mode 100644 src/main/scala/view/EclipseLibraryView.scala
 create mode 100644 src/main/scala/view/IMDBdatabaseView.scala
 create mode 100644 src/main/scala/view/LibrarySimple0.scala
 create mode 100644 src/main/scala/view/LibraryView.scala
 create mode 100644 src/main/scala/view/Manager0.scala
 create mode 100644 src/main/scala/view/Simple0.scala
 create mode 100644 support/scalastyle_config.xml

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..815ba1e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,26 @@
+
+
+*.class
+*.log
+
+# sbt
+dist/*
+target/
+lib_managed/
+src_managed/
+project/boot/
+project/plugins/project/
+
+# Scala-IDE
+.scala_dependencies
+
+# Eclipse
+.project
+.classpath
+.cache
+.cache-main
+.settings/
+
+# IntelliJ
+.idea/
+/bin/
diff --git a/.scalastyle b/.scalastyle
new file mode 100644
index 0000000..bed4869
--- /dev/null
+++ b/.scalastyle
@@ -0,0 +1 @@
+<scalastyle-project-configuration file="/ModelSyncProvider/support/scalastyle_config.xml" enabled="true"></scalastyle-project-configuration>
diff --git a/build.sbt b/build.sbt
new file mode 100644
index 0000000..7ff0846
--- /dev/null
+++ b/build.sbt
@@ -0,0 +1,15 @@
+import sbt.Keys.organization
+
+val scrollVersion = "1.8"
+
+lazy val modelmanagementprovider = (project in file(".")).
+  settings(
+    name := "ModelManagementProvider",
+    organization := "de.tu-dresden.inf.st",
+    version := "0.1",
+    scalaVersion := "2.12.8",
+    sbtVersion := "1.2.8",
+    libraryDependencies ++= Seq(
+        "com.github.max-leuthaeuser" %% "scroll" % scrollVersion)
+  )
+
diff --git a/lib/modeljoin.jar b/lib/modeljoin.jar
new file mode 100644
index 0000000000000000000000000000000000000000..7dd9eed4acaada106ddb92d3b771163185721b73
GIT binary patch
literal 228674
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
E01<Gd9RL6T

literal 0
HcmV?d00001

diff --git a/project/build.properties b/project/build.properties
new file mode 100644
index 0000000..c0bab04
--- /dev/null
+++ b/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.2.8
diff --git a/project/plugins.sbt b/project/plugins.sbt
new file mode 100644
index 0000000..a4e6fcc
--- /dev/null
+++ b/project/plugins.sbt
@@ -0,0 +1 @@
+addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4")
diff --git a/src/main/java/org/rosi_project/model_management/util/query/ModelJoinCreator.java b/src/main/java/org/rosi_project/model_management/util/query/ModelJoinCreator.java
new file mode 100644
index 0000000..16881a0
--- /dev/null
+++ b/src/main/java/org/rosi_project/model_management/util/query/ModelJoinCreator.java
@@ -0,0 +1,93 @@
+package org.rosi_project.model_management.util.query;
+
+import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.attributes;
+import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.naturalJoin;
+import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.thetaJoin;
+import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.outerJoin;
+import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.outgoing;
+import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.incoming;
+import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.subtype;
+import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.supertype;
+
+import java.io.File;
+
+import org.rosi_project.model_sync.model_join.representation.core.AttributePath;
+import org.rosi_project.model_sync.model_join.representation.core.ClassResource;
+import org.rosi_project.model_sync.model_join.representation.grammar.CompoundKeepBuilder;
+import org.rosi_project.model_sync.model_join.representation.grammar.KeepExpression;
+import org.rosi_project.model_sync.model_join.representation.grammar.ModelJoinExpression;
+import org.rosi_project.model_sync.model_join.representation.util.JoinFactory.AbstractJoinBuilder;
+import org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder;
+import org.rosi_project.model_sync.model_join.representation.writer.FileBasedModelJoinWriter;
+
+public class ModelJoinCreator {
+
+	private AbstractJoinBuilder ajb = null;
+
+	public AbstractJoinBuilder createNaturalJoin(String start) {
+		ClassResource classRessource = ClassResource.fromQualifiedName(start);
+		ajb = naturalJoin().join(classRessource).with(classRessource).as(classRessource);
+		return ajb;
+	}
+
+	public AbstractJoinBuilder createThetaJoin(String start, String condition) {
+		ClassResource classRessource = ClassResource.fromQualifiedName(start);
+		ajb = thetaJoin().where(condition).join(classRessource).with(classRessource).as(classRessource);
+		return ajb;
+	}
+
+	public AbstractJoinBuilder createOuterJoin(String start, boolean left) {
+		ClassResource classRessource = ClassResource.fromQualifiedName(start);
+		if (left) {
+			ajb = outerJoin().leftOuter().join(classRessource).with(classRessource).as(classRessource);
+		} else {
+			ajb = outerJoin().rightOuter().join(classRessource).with(classRessource).as(classRessource);
+		}
+		return ajb;
+	}
+
+	public void createAttribute(Object o, String ressourceName, String attrName) {
+		ClassResource classRessource = ClassResource.fromQualifiedName(ressourceName);
+		AttributePath attrPath = AttributePath.from(classRessource, attrName);
+		KeepExpression ke = attributes(attrPath);
+		if (o instanceof AbstractJoinBuilder) {
+			((AbstractJoinBuilder) o).keep(ke);
+		}
+		if (o instanceof CompoundKeepBuilder) {
+			((CompoundKeepBuilder) o).keep(ke);
+		}
+	}
+
+	public CompoundKeepBuilder createOutgoingReference(String ressourceName, String attrName) {
+		ClassResource classRessource = ClassResource.fromQualifiedName(ressourceName);
+		AttributePath attrPath = AttributePath.from(classRessource, attrName);
+		return outgoing(attrPath).as(classRessource);
+	}
+
+	public CompoundKeepBuilder createIncomingReference(String ressourceName, String attrName) {
+		ClassResource classRessource = ClassResource.fromQualifiedName(ressourceName);
+		AttributePath attrPath = AttributePath.from(classRessource, attrName);
+		return incoming(attrPath).as(classRessource);
+	}
+
+	public CompoundKeepBuilder createSubType(String ressourceName) {
+		ClassResource classRessource = ClassResource.fromQualifiedName(ressourceName);
+		return subtype(classRessource).as(classRessource);
+	}
+
+	public CompoundKeepBuilder createSuperType(String ressourceName) {
+		ClassResource classRessource = ClassResource.fromQualifiedName(ressourceName);
+		return supertype(classRessource).as(classRessource);
+	}
+
+	public void createFile(String fileName) {
+		if (ajb != null) {
+			ModelJoinExpression modelJoin = ModelJoinBuilder.createNewModelJoin().add(ajb.done()).build();
+
+			File file = new File(fileName);
+
+			FileBasedModelJoinWriter writer = new FileBasedModelJoinWriter(file);
+			writer.write(modelJoin);
+		}
+	}
+}
diff --git a/src/main/scala/aml/Attribute.scala b/src/main/scala/aml/Attribute.scala
new file mode 100644
index 0000000..dc63042
--- /dev/null
+++ b/src/main/scala/aml/Attribute.scala
@@ -0,0 +1,21 @@
+package aml
+
+class Attribute(protected var value: String, c_Name: String, c_Id: String) extends CAEXObject(c_Name, c_Id) {
+
+  def getValue(): String = {
+    value
+  }
+
+  def setValue(v: String): Unit = {
+    value = v
+  }
+
+  override def toString(): String = {
+    "Attribute:" + " value=" + value + " name=" + name + " id=" + id
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/CAEXObject.scala b/src/main/scala/aml/CAEXObject.scala
new file mode 100644
index 0000000..7f02fc6
--- /dev/null
+++ b/src/main/scala/aml/CAEXObject.scala
@@ -0,0 +1,29 @@
+package aml
+
+abstract class CAEXObject(protected var name: String, protected var id: String) {
+
+  def getName(): String = {
+    name
+  }
+
+  def setName(n: String): Unit = {
+    name = n
+  }
+
+  def getId(): String = {
+    id
+  }
+
+  def setId(i: String): Unit = {
+    id = i
+  }
+
+  override def toString(): String = {
+    "CAEXObject:" + " name=" + name + " id=" + id
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/HelperCAEXObject.scala b/src/main/scala/aml/HelperCAEXObject.scala
new file mode 100644
index 0000000..8243a4a
--- /dev/null
+++ b/src/main/scala/aml/HelperCAEXObject.scala
@@ -0,0 +1,19 @@
+package aml
+
+import org.rosi_project.model_management.sum.query.QueryHelper
+
+class HelperCAEXObject(c_Name: String, c_Id: String) extends CAEXObject(c_Name, c_Id) with QueryHelper {
+
+  override def equals(that: Any): Boolean = {
+    that.isInstanceOf[CAEXObject]
+  }
+
+  override def toString(): String = {
+    "HelperCAEXObject:" + " name=" + name + " id=" + id
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/InstanceHierarchy.scala b/src/main/scala/aml/InstanceHierarchy.scala
new file mode 100644
index 0000000..defa7a9
--- /dev/null
+++ b/src/main/scala/aml/InstanceHierarchy.scala
@@ -0,0 +1,13 @@
+package aml
+
+class InstanceHierarchy(c_Name: String, c_Id: String) extends CAEXObject(c_Name, c_Id) {
+
+  override def toString(): String = {
+    "InstanceHierarchy:" + " name=" + name + " id=" + id
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/InstanceHierarchyInternalElementsInternalElement.scala b/src/main/scala/aml/InstanceHierarchyInternalElementsInternalElement.scala
new file mode 100644
index 0000000..30e6d67
--- /dev/null
+++ b/src/main/scala/aml/InstanceHierarchyInternalElementsInternalElement.scala
@@ -0,0 +1,46 @@
+package aml
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class InstanceHierarchyInternalElementsInternalElement(private val sInstance: InstanceHierarchy, private val tInstance: InternalElement) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[InstanceHierarchyInternalElementsInternalElement " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): InstanceHierarchy = {
+    return sInstance
+  }
+
+  def getTargetIns(): InternalElement = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/InternalElement.scala b/src/main/scala/aml/InternalElement.scala
new file mode 100644
index 0000000..a541add
--- /dev/null
+++ b/src/main/scala/aml/InternalElement.scala
@@ -0,0 +1,13 @@
+package aml
+
+class InternalElement(s_Name: String, s_Id: String) extends SystemUnitClass(s_Name, s_Id) {
+
+  override def toString(): String = {
+    "InternalElement:" + " name=" + name + " id=" + id
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/InternalElementBaseSystemUnitSystemUnitClass.scala b/src/main/scala/aml/InternalElementBaseSystemUnitSystemUnitClass.scala
new file mode 100644
index 0000000..c164981
--- /dev/null
+++ b/src/main/scala/aml/InternalElementBaseSystemUnitSystemUnitClass.scala
@@ -0,0 +1,46 @@
+package aml
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class InternalElementBaseSystemUnitSystemUnitClass(private val sInstance: InternalElement, private val tInstance: SystemUnitClass) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[InternalElementBaseSystemUnitSystemUnitClass " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): InternalElement = {
+    return sInstance
+  }
+
+  def getTargetIns(): SystemUnitClass = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/SystemUnitClass.scala b/src/main/scala/aml/SystemUnitClass.scala
new file mode 100644
index 0000000..fb8d0c9
--- /dev/null
+++ b/src/main/scala/aml/SystemUnitClass.scala
@@ -0,0 +1,13 @@
+package aml
+
+class SystemUnitClass(c_Name: String, c_Id: String) extends CAEXObject(c_Name, c_Id) {
+
+  override def toString(): String = {
+    "SystemUnitClass:" + " name=" + name + " id=" + id
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/SystemUnitClassAttributesAttribute.scala b/src/main/scala/aml/SystemUnitClassAttributesAttribute.scala
new file mode 100644
index 0000000..69478d9
--- /dev/null
+++ b/src/main/scala/aml/SystemUnitClassAttributesAttribute.scala
@@ -0,0 +1,46 @@
+package aml
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class SystemUnitClassAttributesAttribute(private val sInstance: SystemUnitClass, private val tInstance: Attribute) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[SystemUnitClassAttributesAttribute " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): SystemUnitClass = {
+    return sInstance
+  }
+
+  def getTargetIns(): Attribute = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/aml/SystemUnitClassInternalElementsInternalElement.scala b/src/main/scala/aml/SystemUnitClassInternalElementsInternalElement.scala
new file mode 100644
index 0000000..a75d7c9
--- /dev/null
+++ b/src/main/scala/aml/SystemUnitClassInternalElementsInternalElement.scala
@@ -0,0 +1,46 @@
+package aml
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class SystemUnitClassInternalElementsInternalElement(private val sInstance: SystemUnitClass, private val tInstance: InternalElement) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[SystemUnitClassInternalElementsInternalElement " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): SystemUnitClass = {
+    return sInstance
+  }
+
+  def getTargetIns(): InternalElement = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/AudioVisualItem.scala b/src/main/scala/elib/AudioVisualItem.scala
new file mode 100644
index 0000000..24bba4c
--- /dev/null
+++ b/src/main/scala/elib/AudioVisualItem.scala
@@ -0,0 +1,39 @@
+package elib
+
+import java.util.Date
+
+class AudioVisualItem(protected var damaged: Boolean, protected var minutesLength: Int, protected var title: String, c_PublicationDate: Date) extends CirculatingItem(c_PublicationDate) {
+
+  def getDamaged(): Boolean = {
+    damaged
+  }
+
+  def setDamaged(d: Boolean): Unit = {
+    damaged = d
+  }
+
+  def getMinutesLength(): Int = {
+    minutesLength
+  }
+
+  def setMinutesLength(m: Int): Unit = {
+    minutesLength = m
+  }
+
+  def getTitle(): String = {
+    title
+  }
+
+  def setTitle(t: String): Unit = {
+    title = t
+  }
+
+  override def toString(): String = {
+    "AudioVisualItem:" + " damaged=" + damaged + " minutesLength=" + minutesLength + " title=" + title + " publicationDate=" + publicationDate
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/Book.scala b/src/main/scala/elib/Book.scala
new file mode 100644
index 0000000..a067844
--- /dev/null
+++ b/src/main/scala/elib/Book.scala
@@ -0,0 +1,39 @@
+package elib
+
+import java.util.Date
+
+class Book(protected var category: BookCategory.Value, protected var pages: Int, protected var title: String, c_PublicationDate: Date) extends CirculatingItem(c_PublicationDate) {
+
+  def getCategory(): BookCategory.Value = {
+    category
+  }
+
+  def setCategory(c: BookCategory.Value): Unit = {
+    category = c
+  }
+
+  def getPages(): Int = {
+    pages
+  }
+
+  def setPages(p: Int): Unit = {
+    pages = p
+  }
+
+  def getTitle(): String = {
+    title
+  }
+
+  def setTitle(t: String): Unit = {
+    title = t
+  }
+
+  override def toString(): String = {
+    "Book:" + " category=" + category + " pages=" + pages + " title=" + title + " publicationDate=" + publicationDate
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/BookAuthorWriter.scala b/src/main/scala/elib/BookAuthorWriter.scala
new file mode 100644
index 0000000..9e73dff
--- /dev/null
+++ b/src/main/scala/elib/BookAuthorWriter.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IAssociation
+
+class BookAuthorWriter(private val sInstance: Book, private val tInstance: Writer) extends IAssociation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[BookAuthorWriter " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Book = {
+    return sInstance
+  }
+
+  def getTargetIns(): Writer = {
+    return tInstance
+  }
+
+  class Source extends IAssociationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IAssociationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/BookCategory.scala b/src/main/scala/elib/BookCategory.scala
new file mode 100644
index 0000000..2992844
--- /dev/null
+++ b/src/main/scala/elib/BookCategory.scala
@@ -0,0 +1,8 @@
+package elib
+
+object BookCategory extends Enumeration {
+
+  val Mystery, ScienceFiction, Biography = Value
+}
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/BookOnTape.scala b/src/main/scala/elib/BookOnTape.scala
new file mode 100644
index 0000000..bcd751a
--- /dev/null
+++ b/src/main/scala/elib/BookOnTape.scala
@@ -0,0 +1,15 @@
+package elib
+
+import java.util.Date
+
+class BookOnTape(a_Damaged: Boolean, a_MinutesLength: Int, a_Title: String, a_PublicationDate: Date) extends AudioVisualItem(a_Damaged, a_MinutesLength, a_Title, a_PublicationDate) {
+
+  override def toString(): String = {
+    "BookOnTape:" + " damaged=" + damaged + " minutesLength=" + minutesLength + " title=" + title + " publicationDate=" + publicationDate
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/BookOnTapeAuthorWriter.scala b/src/main/scala/elib/BookOnTapeAuthorWriter.scala
new file mode 100644
index 0000000..87c9559
--- /dev/null
+++ b/src/main/scala/elib/BookOnTapeAuthorWriter.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class BookOnTapeAuthorWriter(private val sInstance: BookOnTape, private val tInstance: Writer) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[BookOnTapeAuthorWriter " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): BookOnTape = {
+    return sInstance
+  }
+
+  def getTargetIns(): Writer = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/BookOnTapeReaderPerson.scala b/src/main/scala/elib/BookOnTapeReaderPerson.scala
new file mode 100644
index 0000000..68b29a2
--- /dev/null
+++ b/src/main/scala/elib/BookOnTapeReaderPerson.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class BookOnTapeReaderPerson(private val sInstance: BookOnTape, private val tInstance: Person) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[BookOnTapeReaderPerson " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): BookOnTape = {
+    return sInstance
+  }
+
+  def getTargetIns(): Person = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/Borrower.scala b/src/main/scala/elib/Borrower.scala
new file mode 100644
index 0000000..b28d617
--- /dev/null
+++ b/src/main/scala/elib/Borrower.scala
@@ -0,0 +1,13 @@
+package elib
+
+class Borrower(p_LastName: String, p_FirstName: String) extends Person(p_LastName, p_FirstName) {
+
+  override def toString(): String = {
+    "Borrower:" + " lastName=" + lastName + " firstName=" + firstName
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/CirculatingItem.scala b/src/main/scala/elib/CirculatingItem.scala
new file mode 100644
index 0000000..7678b10
--- /dev/null
+++ b/src/main/scala/elib/CirculatingItem.scala
@@ -0,0 +1,15 @@
+package elib
+
+import java.util.Date
+
+class CirculatingItem(i_PublicationDate: Date) extends Item(i_PublicationDate) {
+
+  override def toString(): String = {
+    "CirculatingItem:" + " publicationDate=" + publicationDate
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/Employee.scala b/src/main/scala/elib/Employee.scala
new file mode 100644
index 0000000..204e8cf
--- /dev/null
+++ b/src/main/scala/elib/Employee.scala
@@ -0,0 +1,13 @@
+package elib
+
+class Employee(p_LastName: String, p_FirstName: String) extends Person(p_LastName, p_FirstName) {
+
+  override def toString(): String = {
+    "Employee:" + " lastName=" + lastName + " firstName=" + firstName
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/EmployeeManagerEmployee.scala b/src/main/scala/elib/EmployeeManagerEmployee.scala
new file mode 100644
index 0000000..9294358
--- /dev/null
+++ b/src/main/scala/elib/EmployeeManagerEmployee.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class EmployeeManagerEmployee(private val sInstance: Employee, private val tInstance: Employee) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[EmployeeManagerEmployee " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Employee = {
+    return sInstance
+  }
+
+  def getTargetIns(): Employee = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/Item.scala b/src/main/scala/elib/Item.scala
new file mode 100644
index 0000000..cafa10b
--- /dev/null
+++ b/src/main/scala/elib/Item.scala
@@ -0,0 +1,23 @@
+package elib
+
+import java.util.Date
+
+class Item(protected var publicationDate: Date) {
+
+  def getPublicationDate(): Date = {
+    publicationDate
+  }
+
+  def setPublicationDate(p: Date): Unit = {
+    publicationDate = p
+  }
+
+  override def toString(): String = {
+    "Item:" + " publicationDate=" + publicationDate
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/Library.scala b/src/main/scala/elib/Library.scala
new file mode 100644
index 0000000..e125115
--- /dev/null
+++ b/src/main/scala/elib/Library.scala
@@ -0,0 +1,21 @@
+package elib
+
+class Library(protected var name: String) {
+
+  def getName(): String = {
+    name
+  }
+
+  def setName(n: String): Unit = {
+    name = n
+  }
+
+  override def toString(): String = {
+    "Library:" + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/LibraryBooksBook.scala b/src/main/scala/elib/LibraryBooksBook.scala
new file mode 100644
index 0000000..4b3cdd7
--- /dev/null
+++ b/src/main/scala/elib/LibraryBooksBook.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class LibraryBooksBook(private val sInstance: Library, private val tInstance: Book) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[LibraryBooksBook " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Library = {
+    return sInstance
+  }
+
+  def getTargetIns(): Book = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/LibraryBorrowersBorrower.scala b/src/main/scala/elib/LibraryBorrowersBorrower.scala
new file mode 100644
index 0000000..fe90ec4
--- /dev/null
+++ b/src/main/scala/elib/LibraryBorrowersBorrower.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class LibraryBorrowersBorrower(private val sInstance: Library, private val tInstance: Borrower) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[LibraryBorrowersBorrower " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Library = {
+    return sInstance
+  }
+
+  def getTargetIns(): Borrower = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/LibraryBranchesLibrary.scala b/src/main/scala/elib/LibraryBranchesLibrary.scala
new file mode 100644
index 0000000..2a9ae97
--- /dev/null
+++ b/src/main/scala/elib/LibraryBranchesLibrary.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class LibraryBranchesLibrary(private val sInstance: Library, private val tInstance: Library) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[LibraryBranchesLibrary " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Library = {
+    return sInstance
+  }
+
+  def getTargetIns(): Library = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/LibraryEmployeesEmployee.scala b/src/main/scala/elib/LibraryEmployeesEmployee.scala
new file mode 100644
index 0000000..01e6d9f
--- /dev/null
+++ b/src/main/scala/elib/LibraryEmployeesEmployee.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class LibraryEmployeesEmployee(private val sInstance: Library, private val tInstance: Employee) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[LibraryEmployeesEmployee " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Library = {
+    return sInstance
+  }
+
+  def getTargetIns(): Employee = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/LibraryParentBranchLibrary.scala b/src/main/scala/elib/LibraryParentBranchLibrary.scala
new file mode 100644
index 0000000..1ad536c
--- /dev/null
+++ b/src/main/scala/elib/LibraryParentBranchLibrary.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class LibraryParentBranchLibrary(private val sInstance: Library, private val tInstance: Library) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[LibraryParentBranchLibrary " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Library = {
+    return sInstance
+  }
+
+  def getTargetIns(): Library = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/LibraryStockItem.scala b/src/main/scala/elib/LibraryStockItem.scala
new file mode 100644
index 0000000..148fdc0
--- /dev/null
+++ b/src/main/scala/elib/LibraryStockItem.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class LibraryStockItem(private val sInstance: Library, private val tInstance: Item) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[LibraryStockItem " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Library = {
+    return sInstance
+  }
+
+  def getTargetIns(): Item = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/LibraryWritersWriter.scala b/src/main/scala/elib/LibraryWritersWriter.scala
new file mode 100644
index 0000000..41f420e
--- /dev/null
+++ b/src/main/scala/elib/LibraryWritersWriter.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class LibraryWritersWriter(private val sInstance: Library, private val tInstance: Writer) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[LibraryWritersWriter " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Library = {
+    return sInstance
+  }
+
+  def getTargetIns(): Writer = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/Periodical.scala b/src/main/scala/elib/Periodical.scala
new file mode 100644
index 0000000..8f2cbbf
--- /dev/null
+++ b/src/main/scala/elib/Periodical.scala
@@ -0,0 +1,31 @@
+package elib
+
+import java.util.Date
+
+class Periodical(protected var issuesPerYear: Int, protected var title: String, i_PublicationDate: Date) extends Item(i_PublicationDate) {
+
+  def getIssuesPerYear(): Int = {
+    issuesPerYear
+  }
+
+  def setIssuesPerYear(i: Int): Unit = {
+    issuesPerYear = i
+  }
+
+  def getTitle(): String = {
+    title
+  }
+
+  def setTitle(t: String): Unit = {
+    title = t
+  }
+
+  override def toString(): String = {
+    "Periodical:" + " issuesPerYear=" + issuesPerYear + " title=" + title + " publicationDate=" + publicationDate
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/Person.scala b/src/main/scala/elib/Person.scala
new file mode 100644
index 0000000..b2680a0
--- /dev/null
+++ b/src/main/scala/elib/Person.scala
@@ -0,0 +1,29 @@
+package elib
+
+class Person(protected var lastName: String, protected var firstName: String) {
+
+  def getLastName(): String = {
+    lastName
+  }
+
+  def setLastName(l: String): Unit = {
+    lastName = l
+  }
+
+  def getFirstName(): String = {
+    firstName
+  }
+
+  def setFirstName(f: String): Unit = {
+    firstName = f
+  }
+
+  override def toString(): String = {
+    "Person:" + " lastName=" + lastName + " firstName=" + firstName
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/VideoCassette.scala b/src/main/scala/elib/VideoCassette.scala
new file mode 100644
index 0000000..a43e3ab
--- /dev/null
+++ b/src/main/scala/elib/VideoCassette.scala
@@ -0,0 +1,15 @@
+package elib
+
+import java.util.Date
+
+class VideoCassette(a_Damaged: Boolean, a_MinutesLength: Int, a_Title: String, a_PublicationDate: Date) extends AudioVisualItem(a_Damaged, a_MinutesLength, a_Title, a_PublicationDate) {
+
+  override def toString(): String = {
+    "VideoCassette:" + " damaged=" + damaged + " minutesLength=" + minutesLength + " title=" + title + " publicationDate=" + publicationDate
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/VideoCassetteCastPerson.scala b/src/main/scala/elib/VideoCassetteCastPerson.scala
new file mode 100644
index 0000000..5705c4e
--- /dev/null
+++ b/src/main/scala/elib/VideoCassetteCastPerson.scala
@@ -0,0 +1,46 @@
+package elib
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class VideoCassetteCastPerson(private val sInstance: VideoCassette, private val tInstance: Person) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[VideoCassetteCastPerson " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): VideoCassette = {
+    return sInstance
+  }
+
+  def getTargetIns(): Person = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/elib/Writer.scala b/src/main/scala/elib/Writer.scala
new file mode 100644
index 0000000..c36a8bb
--- /dev/null
+++ b/src/main/scala/elib/Writer.scala
@@ -0,0 +1,21 @@
+package elib
+
+class Writer(protected var name: String, p_LastName: String, p_FirstName: String) extends Person(p_LastName, p_FirstName) {
+
+  def getName(): String = {
+    name
+  }
+
+  def setName(n: String): Unit = {
+    name = n
+  }
+
+  override def toString(): String = {
+    "Writer:" + " name=" + name + " lastName=" + lastName + " firstName=" + firstName
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/Actor.scala b/src/main/scala/imdbdatabase/Actor.scala
new file mode 100644
index 0000000..e74c8f6
--- /dev/null
+++ b/src/main/scala/imdbdatabase/Actor.scala
@@ -0,0 +1,13 @@
+package imdbdatabase
+
+class Actor(p_Dob: Double, p_Name: String) extends Person(p_Dob, p_Name) {
+
+  override def toString(): String = {
+    "Actor:" + " dob=" + dob + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/Figure.scala b/src/main/scala/imdbdatabase/Figure.scala
new file mode 100644
index 0000000..26045a3
--- /dev/null
+++ b/src/main/scala/imdbdatabase/Figure.scala
@@ -0,0 +1,21 @@
+package imdbdatabase
+
+class Figure(protected var name: String) {
+
+  def getName(): String = {
+    name
+  }
+
+  def setName(n: String): Unit = {
+    name = n
+  }
+
+  override def toString(): String = {
+    "Figure:" + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/FigurePlayedByActor.scala b/src/main/scala/imdbdatabase/FigurePlayedByActor.scala
new file mode 100644
index 0000000..05e24d3
--- /dev/null
+++ b/src/main/scala/imdbdatabase/FigurePlayedByActor.scala
@@ -0,0 +1,46 @@
+package imdbdatabase
+
+import org.rosi_project.model_management.sum.compartments.IAssociation
+
+class FigurePlayedByActor(private val sInstance: Figure, private val tInstance: Actor) extends IAssociation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[FigurePlayedByActor " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Figure = {
+    return sInstance
+  }
+
+  def getTargetIns(): Actor = {
+    return tInstance
+  }
+
+  class Source extends IAssociationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IAssociationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/Film.scala b/src/main/scala/imdbdatabase/Film.scala
new file mode 100644
index 0000000..6c46b54
--- /dev/null
+++ b/src/main/scala/imdbdatabase/Film.scala
@@ -0,0 +1,29 @@
+package imdbdatabase
+
+class Film(protected var year: Int, protected var title: String) {
+
+  def getYear(): Int = {
+    year
+  }
+
+  def setYear(y: Int): Unit = {
+    year = y
+  }
+
+  def getTitle(): String = {
+    title
+  }
+
+  def setTitle(t: String): Unit = {
+    title = t
+  }
+
+  override def toString(): String = {
+    "Film:" + " year=" + year + " title=" + title
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/FilmFiguresFigure.scala b/src/main/scala/imdbdatabase/FilmFiguresFigure.scala
new file mode 100644
index 0000000..c50f8ea
--- /dev/null
+++ b/src/main/scala/imdbdatabase/FilmFiguresFigure.scala
@@ -0,0 +1,46 @@
+package imdbdatabase
+
+import org.rosi_project.model_management.sum.compartments.IComposition
+
+class FilmFiguresFigure(private val sInstance: Film, private val tInstance: Figure) extends IComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[FilmFiguresFigure " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Film = {
+    return sInstance
+  }
+
+  def getTargetIns(): Figure = {
+    return tInstance
+  }
+
+  class Source extends ICompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends ICompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/IMDB.scala b/src/main/scala/imdbdatabase/IMDB.scala
new file mode 100644
index 0000000..0da0fd8
--- /dev/null
+++ b/src/main/scala/imdbdatabase/IMDB.scala
@@ -0,0 +1,13 @@
+package imdbdatabase
+
+class IMDB {
+
+  override def toString(): String = {
+    "IMDB:"
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/IMDBActorsActor.scala b/src/main/scala/imdbdatabase/IMDBActorsActor.scala
new file mode 100644
index 0000000..2dd4a61
--- /dev/null
+++ b/src/main/scala/imdbdatabase/IMDBActorsActor.scala
@@ -0,0 +1,46 @@
+package imdbdatabase
+
+import org.rosi_project.model_management.sum.compartments.IComposition
+
+class IMDBActorsActor(private val sInstance: IMDB, private val tInstance: Actor) extends IComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[IMDBActorsActor " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): IMDB = {
+    return sInstance
+  }
+
+  def getTargetIns(): Actor = {
+    return tInstance
+  }
+
+  class Source extends ICompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends ICompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/IMDBFilmsFilm.scala b/src/main/scala/imdbdatabase/IMDBFilmsFilm.scala
new file mode 100644
index 0000000..96162d0
--- /dev/null
+++ b/src/main/scala/imdbdatabase/IMDBFilmsFilm.scala
@@ -0,0 +1,46 @@
+package imdbdatabase
+
+import org.rosi_project.model_management.sum.compartments.IComposition
+
+class IMDBFilmsFilm(private val sInstance: IMDB, private val tInstance: Film) extends IComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[IMDBFilmsFilm " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): IMDB = {
+    return sInstance
+  }
+
+  def getTargetIns(): Film = {
+    return tInstance
+  }
+
+  class Source extends ICompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends ICompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/IMDBUsersUser.scala b/src/main/scala/imdbdatabase/IMDBUsersUser.scala
new file mode 100644
index 0000000..e901a63
--- /dev/null
+++ b/src/main/scala/imdbdatabase/IMDBUsersUser.scala
@@ -0,0 +1,46 @@
+package imdbdatabase
+
+import org.rosi_project.model_management.sum.compartments.IComposition
+
+class IMDBUsersUser(private val sInstance: IMDB, private val tInstance: User) extends IComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[IMDBUsersUser " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): IMDB = {
+    return sInstance
+  }
+
+  def getTargetIns(): User = {
+    return tInstance
+  }
+
+  class Source extends ICompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends ICompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/IMDBVotesVote.scala b/src/main/scala/imdbdatabase/IMDBVotesVote.scala
new file mode 100644
index 0000000..2154984
--- /dev/null
+++ b/src/main/scala/imdbdatabase/IMDBVotesVote.scala
@@ -0,0 +1,46 @@
+package imdbdatabase
+
+import org.rosi_project.model_management.sum.compartments.IComposition
+
+class IMDBVotesVote(private val sInstance: IMDB, private val tInstance: Vote) extends IComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[IMDBVotesVote " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): IMDB = {
+    return sInstance
+  }
+
+  def getTargetIns(): Vote = {
+    return tInstance
+  }
+
+  class Source extends ICompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends ICompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/Person.scala b/src/main/scala/imdbdatabase/Person.scala
new file mode 100644
index 0000000..39bc4a4
--- /dev/null
+++ b/src/main/scala/imdbdatabase/Person.scala
@@ -0,0 +1,29 @@
+package imdbdatabase
+
+class Person(protected var dob: Double, protected var name: String) {
+
+  def getDob(): Double = {
+    dob
+  }
+
+  def setDob(d: Double): Unit = {
+    dob = d
+  }
+
+  def getName(): String = {
+    name
+  }
+
+  def setName(n: String): Unit = {
+    name = n
+  }
+
+  override def toString(): String = {
+    "Person:" + " dob=" + dob + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/User.scala b/src/main/scala/imdbdatabase/User.scala
new file mode 100644
index 0000000..ff94ad9
--- /dev/null
+++ b/src/main/scala/imdbdatabase/User.scala
@@ -0,0 +1,29 @@
+package imdbdatabase
+
+class User(protected var email: String, protected var userName: String, p_Dob: Double, p_Name: String) extends Person(p_Dob, p_Name) {
+
+  def getEmail(): String = {
+    email
+  }
+
+  def setEmail(e: String): Unit = {
+    email = e
+  }
+
+  def getUserName(): String = {
+    userName
+  }
+
+  def setUserName(u: String): Unit = {
+    userName = u
+  }
+
+  override def toString(): String = {
+    "User:" + " email=" + email + " userName=" + userName + " dob=" + dob + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/Vote.scala b/src/main/scala/imdbdatabase/Vote.scala
new file mode 100644
index 0000000..6187ae8
--- /dev/null
+++ b/src/main/scala/imdbdatabase/Vote.scala
@@ -0,0 +1,21 @@
+package imdbdatabase
+
+class Vote(protected var score: Int) {
+
+  def getScore(): Int = {
+    score
+  }
+
+  def setScore(s: Int): Unit = {
+    score = s
+  }
+
+  override def toString(): String = {
+    "Vote:" + " score=" + score
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/VoteFilmFilm.scala b/src/main/scala/imdbdatabase/VoteFilmFilm.scala
new file mode 100644
index 0000000..4296739
--- /dev/null
+++ b/src/main/scala/imdbdatabase/VoteFilmFilm.scala
@@ -0,0 +1,46 @@
+package imdbdatabase
+
+import org.rosi_project.model_management.sum.compartments.IAssociation
+
+class VoteFilmFilm(private val sInstance: Vote, private val tInstance: Film) extends IAssociation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[VoteFilmFilm " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Vote = {
+    return sInstance
+  }
+
+  def getTargetIns(): Film = {
+    return tInstance
+  }
+
+  class Source extends IAssociationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IAssociationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/imdbdatabase/VoteUserUser.scala b/src/main/scala/imdbdatabase/VoteUserUser.scala
new file mode 100644
index 0000000..dc9189f
--- /dev/null
+++ b/src/main/scala/imdbdatabase/VoteUserUser.scala
@@ -0,0 +1,46 @@
+package imdbdatabase
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class VoteUserUser(private val sInstance: Vote, private val tInstance: User) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[VoteUserUser " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Vote = {
+    return sInstance
+  }
+
+  def getTargetIns(): User = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/joins/JoinMovie.scala b/src/main/scala/joins/JoinMovie.scala
new file mode 100644
index 0000000..5d4fde4
--- /dev/null
+++ b/src/main/scala/joins/JoinMovie.scala
@@ -0,0 +1,83 @@
+package joins
+
+import org.rosi_project.model_management.sum.join.IJoinCompartment
+import imdbdatabase.Film
+import elib.VideoCassette
+import org.rosi_project.model_management.sum.join.IJoinInfo
+import java.util.Date
+
+class JoinMovie(private val base: Film, private val other: VideoCassette) extends IJoinCompartment {
+
+  initialize(base, other)
+
+  def getJoinInfo(): IJoinInfo = {
+    JoinMovieObject
+  }
+
+  def getTitle(): String = {
+    +baseRole getTitle ()
+  }
+
+  def setTitleView(title: String): Unit = {
+    +baseRole setTitle (title)
+    if (otherObj != null) {
+      +otherRole setTitle (title)
+    }
+  }
+
+  def getYear(): Int = {
+    +baseRole getYear ()
+  }
+
+  def setYear(year: Int): Unit = {
+    +baseRole setYear (year)
+  }
+
+  def getDamaged(): Boolean = {
+    if (otherObj != null) {
+      return +otherRole getDamaged ()
+    }
+    return false
+  }
+
+  def setDamagedView(damaged: Boolean): Unit = {
+    if (otherObj != null) {
+      +otherRole setDamaged (damaged)
+    }
+  }
+
+  def getMinutesLength(): Int = {
+    if (otherObj != null) {
+      return +otherRole getMinutesLength ()
+    }
+    return 0
+  }
+
+  def setMinutesLengthView(minuteslength: Int): Unit = {
+    if (otherObj != null) {
+      +otherRole setMinutesLength (minuteslength)
+    }
+  }
+
+  def getPublicationDate(): Date = {
+    if (otherObj != null) {
+      return +otherRole getPublicationDate ()
+    }
+    return null
+  }
+
+  def setPublicationDateView(publicationdate: Date): Unit = {
+    if (otherObj != null) {
+      +otherRole setPublicationDate (publicationdate)
+    }
+  }
+
+  override def toString(): String = {
+    "JOIN JoinMovie: " + baseObj + " " + otherObj
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/joins/JoinMovieObject.scala b/src/main/scala/joins/JoinMovieObject.scala
new file mode 100644
index 0000000..38741d4
--- /dev/null
+++ b/src/main/scala/joins/JoinMovieObject.scala
@@ -0,0 +1,47 @@
+package joins
+
+import org.rosi_project.model_management.sum.join.IJoinCompartment
+import org.rosi_project.model_management.sum.join.RsumJoinType
+import imdbdatabase.Film
+import elib.VideoCassette
+import org.rosi_project.model_management.sum.join.IJoinInfo
+
+object JoinMovieObject extends IJoinInfo {
+
+  def getJoinType(): RsumJoinType.Value = {
+    RsumJoinType.natural
+  }
+
+  def isInstanceBaseModel(obj: Object): Boolean = {
+    obj.isInstanceOf[Film]
+  }
+
+  def isInstanceOtherModel(obj: Object): Boolean = {
+    obj.isInstanceOf[VideoCassette]
+  }
+
+  def getNewInstance(b: Object, o: Object): IJoinCompartment = {
+    val j = new JoinMovie(null, null)
+    objectInitialize(j, b, o)
+    j
+  }
+
+  def isInstanceOf(obj: Object): Boolean = {
+    obj.isInstanceOf[JoinMovie]
+  }
+
+  def matchTwoObjects(b: Object, o: Object): Boolean = {
+    val base = b.asInstanceOf[Film]
+    val other = o.asInstanceOf[VideoCassette]
+    base.getTitle() == other.getTitle()
+  }
+
+  override def toString(): String = {
+    "JoinMovieObject"
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/lib/Employee.scala b/src/main/scala/lib/Employee.scala
new file mode 100644
index 0000000..3d85776
--- /dev/null
+++ b/src/main/scala/lib/Employee.scala
@@ -0,0 +1,21 @@
+package lib
+
+class Employee(protected var salary: Double, p_Name: String) extends Person(p_Name) {
+
+  def getSalary(): Double = {
+    salary
+  }
+
+  def setSalary(s: Double): Unit = {
+    salary = s
+  }
+
+  override def toString(): String = {
+    "Employee:" + " salary=" + salary + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/lib/EmployeeManagerEmployee.scala b/src/main/scala/lib/EmployeeManagerEmployee.scala
new file mode 100644
index 0000000..d195cf9
--- /dev/null
+++ b/src/main/scala/lib/EmployeeManagerEmployee.scala
@@ -0,0 +1,46 @@
+package lib
+
+import org.rosi_project.model_management.sum.compartments.IDirectAssoziation
+
+class EmployeeManagerEmployee(private val sInstance: Employee, private val tInstance: Employee) extends IDirectAssoziation {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[EmployeeManagerEmployee " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Employee = {
+    return sInstance
+  }
+
+  def getTargetIns(): Employee = {
+    return tInstance
+  }
+
+  class Source extends IDirectAssoziationSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectAssoziationTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/lib/HelperPerson.scala b/src/main/scala/lib/HelperPerson.scala
new file mode 100644
index 0000000..bd3cd00
--- /dev/null
+++ b/src/main/scala/lib/HelperPerson.scala
@@ -0,0 +1,19 @@
+package lib
+
+import org.rosi_project.model_management.sum.query.QueryHelper
+
+class HelperPerson(p_Name: String) extends Person(p_Name) with QueryHelper {
+
+  override def equals(that: Any): Boolean = {
+    that.isInstanceOf[Person]
+  }
+
+  override def toString(): String = {
+    "HelperPerson:" + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/lib/Library.scala b/src/main/scala/lib/Library.scala
new file mode 100644
index 0000000..2b19d55
--- /dev/null
+++ b/src/main/scala/lib/Library.scala
@@ -0,0 +1,21 @@
+package lib
+
+class Library(protected var name: String) {
+
+  def getName(): String = {
+    name
+  }
+
+  def setName(n: String): Unit = {
+    name = n
+  }
+
+  override def toString(): String = {
+    "Library:" + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/lib/LibraryEmployeesEmployee.scala b/src/main/scala/lib/LibraryEmployeesEmployee.scala
new file mode 100644
index 0000000..7c6dfd9
--- /dev/null
+++ b/src/main/scala/lib/LibraryEmployeesEmployee.scala
@@ -0,0 +1,46 @@
+package lib
+
+import org.rosi_project.model_management.sum.compartments.IDirectComposition
+
+class LibraryEmployeesEmployee(private val sInstance: Library, private val tInstance: Employee) extends IDirectComposition {
+
+  override def internalInitialize(): Unit = {
+    this.source = new Source()
+    this.target = new Target()
+    sInstance play this.source
+    tInstance play this.target
+  }
+
+  override def toString(): String = {
+    "[LibraryEmployeesEmployee " + source + ", " + target + "]"
+  }
+
+  def getSourceIns(): Library = {
+    return sInstance
+  }
+
+  def getTargetIns(): Employee = {
+    return tInstance
+  }
+
+  class Source extends IDirectCompositionSource {
+
+    override def toString(): String = {
+      "S: (" + sInstance + ")"
+    }
+
+  }
+
+  class Target extends IDirectCompositionTarget {
+
+    override def toString(): String = {
+      "T: (" + tInstance + ")"
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/lib/Person.scala b/src/main/scala/lib/Person.scala
new file mode 100644
index 0000000..4ea1190
--- /dev/null
+++ b/src/main/scala/lib/Person.scala
@@ -0,0 +1,21 @@
+package lib
+
+abstract class Person(protected var name: String) {
+
+  def getName(): String = {
+    name
+  }
+
+  def setName(n: String): Unit = {
+    name = n
+  }
+
+  override def toString(): String = {
+    "Person:" + " name=" + name
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/example/ExampleAml.scala b/src/main/scala/org/rosi_project/example/ExampleAml.scala
new file mode 100644
index 0000000..e56258a
--- /dev/null
+++ b/src/main/scala/org/rosi_project/example/ExampleAml.scala
@@ -0,0 +1,430 @@
+package org.rosi_project.example
+
+import query.AMLLanguageQuery
+import view.AMLLanguageView
+import org.rosi_project.model_management.sum.query._
+import aml._
+import org.rosi_project.model_management.core.ModelElementLists
+
+
+object ExampleAml extends App {
+  
+  val amlView = AMLLanguageView.getNewView()
+  
+  //Prototypes
+  val sucStack = amlView.createSystemUnitClass("Stack", "9")
+  val sucCrane = amlView.createSystemUnitClass("Crane", "10")
+  val sucRamp = amlView.createSystemUnitClass("Rampe", "11")
+  
+  //System model
+  val ihPpu = amlView.createInstanceHierarchy("PPU", "1")
+  val ieStack1 = amlView.createInternalElement("Stack1", "2")
+  val ieCrane2 = amlView.createInternalElement("Crane2", "7")
+  val ieRamp3 = amlView.createInternalElement("Ramp3", "8")
+  val ieConveyor1 = amlView.createInternalElement("Conveyor1", "4")
+  val ieStore1 = amlView.createInternalElement("Store1", "5")
+  val ieSensor1 = amlView.createInternalElement("Sensor1", "6")
+  val attWeigth = amlView.createAttribute("50", "weigth", "3")
+  
+  ihPpu.addInternalElements(ieStack1)
+  ihPpu.addInternalElements(ieCrane2)
+  ihPpu.addInternalElements(ieRamp3)  
+  ieStack1.addInternalElements(ieConveyor1)
+  ieStack1.addInternalElements(ieStore1)
+  ieStack1.addAttributes(attWeigth)  
+  ieStore1.addInternalElements(ieSensor1)
+  
+  //connect prototyp and system model
+  ieStack1.setBaseSystemUnit(sucStack)
+  ieCrane2.setBaseSystemUnit(sucCrane)
+  ieRamp3.setBaseSystemUnit(sucRamp)
+    
+  //ModelElementLists.printAll()
+  
+  //val ieSensor2 = amlView.createInternalElement("Sensor2", "12")
+  //ieStack1.addInternalElements(ieSensor2)
+  
+  //runAllQueries()
+  //runAllViewQueries()
+  query_3()
+  
+  def runAllViewQueries() {
+    //Query testing
+    query_1()
+    query_2()
+    query_3()
+    query_4()
+    query_5()
+    query_6()
+    query_7()
+    query_8()
+  }
+  
+  def runAllQueries() {
+    //Query testing
+    query1()
+    query2()
+    query3()
+    query4()
+    query5()
+    query6()
+    query7()
+    query8()
+  }
+  
+  /**
+   * Search for all objects that inherit from the CAEXObject.
+   */
+  def query1(): Unit = {
+    //Query Objects
+    val q1 = new Query("Q1")
+    val co = new HelperCAEXObject("", "") //laufe über alle naturals im RSUM und suche, die die davon instanzen sind
+    
+    //Query Roles & Settings
+    val r0 = q1.addQueryRole(co)
+    r0.label = "CO"
+    
+    println(q1)
+    println(q1.runQuery())
+  }
+  
+  def query1Dot1(): Unit = {
+    //Query Objects
+    val q11 = new Query("Q1.1")
+    val suc = new SystemUnitClass("SUC", "13")
+    
+    //Query Roles & Settings
+    val r0 = q11.addQueryRole(suc)
+    r0.label = "SUC"    
+    
+    println(q11)
+    println(q11.runQuery())
+  }
+  
+  /**
+   * Search for internal elements with special attribute properties.
+   */
+  def query2(): Unit = {
+    //Query Objects
+    val q2 = new Query("Q2")
+    val ie = new InternalElement("", "")
+    val att = new Attribute("50", "weigth", "")
+    val ieRatt = new SystemUnitClassAttributesAttribute(ie, att)
+    ieRatt.internalInitialize()
+    
+    //Query Roles & Settings
+    val r0 = q2.addQueryRole(ie)
+    r0.label = "IE"
+    val r1 = q2.addQueryRole(att)
+    r1.addAttributeFilter("name", "weigth", CheckingOption.equalsCheck)
+    r1.addAttributeFilter("value", "49", CheckingOption.biggerThan)
+    r1.label = "ATT"
+    val r2 = q2.addQueryRole(ieRatt)
+    
+    println(q2)
+    println(q2.runQuery())
+  }
+  
+  /**
+   * Searches for all childs of the "PPU" element
+   */
+  def query3(): Unit = {
+    //Query Objects
+    val q3 = new Query("Q3")
+    val ih = new InstanceHierarchy("PPU","")
+    val ie = new InternalElement("", "")
+    val ihRie = new InstanceHierarchyInternalElementsInternalElement(ih, ie)
+    ihRie.internalInitialize()
+    
+    //Query Roles & Settings
+    val r0 = q3.addQueryRole(ie)
+    r0.label = "IE"
+    val r1 = q3.addQueryRole(ih)
+    r1.addAttributeFilter("name", "PPU", CheckingOption.equalsCheck)
+    r1.label = "IH"
+    r1.returned = false
+    val r2 = q3.addQueryRole(ihRie)
+    
+    println(q3)
+    println(q3.runQuery())
+  }  
+  
+  /**
+   * Searches all "PPU" elements with 2 deep childs.
+   */
+  def query4(): Unit = {
+    //Query Objects
+    val q4 = new Query("Q4")
+    val ih = new InstanceHierarchy("PPU","") //wie kann ich auf die eigenschaften und werte prüfen
+    val ie1 = new InternalElement("", "")
+    val ie2 = new InternalElement("", "")
+    val ihRie = new InstanceHierarchyInternalElementsInternalElement(ih, ie1)
+    val ieRie = new SystemUnitClassInternalElementsInternalElement(ie1, ie2)
+    ihRie.internalInitialize()
+    ieRie.internalInitialize()
+    
+    //Query Roles & Settings
+    val r0 = q4.addQueryRole(ie1)
+    r0.label = "IE1"
+    val r1 = q4.addQueryRole(ie2)
+    r1.label = "IE2"
+    val r2 = q4.addQueryRole(ih)
+    r2.addAttributeFilter("name", "PPU", CheckingOption.equalsCheck)
+    r2.label = "IH"
+    r2.returned = false
+    val r3 = q4.addQueryRole(ihRie)
+    val r4 = q4.addQueryRole(ieRie)
+    
+    println(q4)
+    println(q4.runQuery())
+  }
+  
+  /**
+   * Searches for all internal elements of the
+   * PPU instance hierarchy. Make transitive closure.
+   */
+  def query5(): Unit = {
+    //Query Objects
+    val q5 = new Query("Q5")
+    val ih = new InstanceHierarchy("PPU","") //wie kann ich auf die eigenschaften und werte prüfen
+    val ie1 = new InternalElement("", "")
+    val ie2 = new InternalElement("", "")
+    val ihRie = new InstanceHierarchyInternalElementsInternalElement(ih, ie1)
+    val ieRie = new SystemUnitClassInternalElementsInternalElement(ie1, ie2)
+    ihRie.internalInitialize()
+    ieRie.internalInitialize()
+    
+    //Query Roles & Settings
+    val r0 = q5.addQueryRole(ie1)
+    r0.label = "IE1"
+    val r1 = q5.addQueryRole(ie2)
+    r1.label = "IE2"
+    r1.transitive = true
+    val r2 = q5.addQueryRole(ih)
+    r2.addAttributeFilter("name", "PPU", CheckingOption.equalsCheck)
+    r2.label = "IH"
+    r2.returned = false
+    val r3 = q5.addQueryRole(ihRie)
+    val r4 = q5.addQueryRole(ieRie)
+    
+    println(q5)
+    println(q5.runQuery())
+  }
+  
+  /**
+   * Get all leave nodes.
+   */
+  def query6(): Unit = {
+    //Query Objects
+    val q6 = new Query("Q6")
+    val ie1 = new InternalElement("", "")
+    val ie2 = new InternalElement("", "")
+    val ieRie = new SystemUnitClassInternalElementsInternalElement(ie1, ie2)
+    ieRie.internalInitialize()
+    
+    //Query Roles & Settings
+    val r0 = q6.addQueryRole(ie1)
+    r0.label = "IE1"
+    val r1 = q6.addQueryRole(ie2)
+    r1.label = "IE2"
+    r1.negated = true
+    val r2 = q6.addQueryRole(ieRie)
+    
+    println(q6)
+    println(q6.runQuery())
+  }
+  
+  /**
+   * Selects all internal elements that refer 
+   * to a system unit class (SUC) named “Stack”.
+   */
+  def query7(): Unit = {
+    //Query Objects
+    val q7 = new Query("Q7")
+    val suc = new SystemUnitClass("Stack", "")
+    val ie = new InternalElement("", "")
+    val ieRsuc = new  InternalElementBaseSystemUnitSystemUnitClass(ie, suc)
+    ieRsuc.internalInitialize()
+    
+    //Query Roles & Settings
+    val r0 = q7.addQueryRole(ie)
+    r0.label = "IE"
+    val r1 = q7.addQueryRole(suc)
+    r1.addAttributeFilter("name", "Stack", CheckingOption.equalsCheck)
+    r1.label = "SUC"
+    r1.returned = false
+    val r2 = q7.addQueryRole(ieRsuc)
+    
+    println(q7)
+    println(q7.runQuery())
+  }
+  
+  /**
+   * Searches for all internal elements, 
+   * which have more than two internal element as direct child
+   */
+  def query8(): Unit = {
+    //Query Objects
+    val q8 = new Query("Q8")
+    val ie1 = new InternalElement("", "")
+    val ie2 = new InternalElement("", "")
+    val ieRie = new SystemUnitClassInternalElementsInternalElement(ie1, ie2)
+    ieRie.internalInitialize()
+    
+    //Query Roles & Settings
+    val r0 = q8.addQueryRole(ie1)
+    r0.label = "IE1"
+    val r1 = q8.addQueryRole(ie2)
+    r1.label = "IE2"
+    r1.multi = 3 //means >= 3
+    val r2 = q8.addQueryRole(ieRie)
+    
+    println(q8)
+    println(q8.runQuery())
+  }
+  
+  def query_1(): Unit = {
+    //Query Objects
+    val q = new AMLLanguageQuery
+    val co = q.createCAEXObject()
+    
+    //Settings
+    co.getQueryObject.label = "CO"    
+        
+    println(q.getQuery())
+    println(q.getQuery().runQuery())
+  }
+  
+  def query_2(): Unit = {
+    //Query Objects
+    val q = new AMLLanguageQuery
+    val ie = q.createInternalElement()
+    val att = q.createAttribute()
+    ie.addAttributes(att)
+    
+    //Settings
+    ie.getQueryObject.label = "IE"
+    att.getQueryObject.label = "ATT"
+    att.setValueView("49", CheckingOption.biggerThan)
+    att.setNameView("weigth", CheckingOption.equalsCheck)
+    //att.getQueryObject().addAttributeFilter("name", "weigth", CheckingOption.equalsCheck)
+    //att.getQueryObject().addAttributeFilter("value", "49", CheckingOption.biggerThan)
+    
+    println(q.getQuery())
+    println(q.getQuery().runQuery())
+  }
+  
+  def query_3(): Unit = {
+    //Query Objects
+    val q = new AMLLanguageQuery
+    val ih = q.createInstanceHierarchy()
+    val ie = q.createInternalElement()
+    ih.addInternalElements(ie)
+    
+    //Settings
+    ie.getQueryObject.label = "IE"
+    ih.getQueryObject.label = "IH"
+    ih.setNameView("PPU", CheckingOption.equalsCheck)
+    //ih.getQueryObject().addAttributeFilter("name", "PPU", CheckingOption.equalsCheck)
+    ih.getQueryObject.returned = false
+    
+    println(q.getQuery())
+    println(q.getQuery().runQuery())
+    println("+++++++++++ MJ ++++++++++++++++++++++")
+    q.getQuery().generateModelJoinFromQuery()
+  }  
+  
+  def query_4(): Unit = {
+    //Query Objects
+    val q = new AMLLanguageQuery
+    val ih = q.createInstanceHierarchy()
+    val ie1 = q.createInternalElement()
+    val ie2 = q.createInternalElement()
+    ih.addInternalElements(ie1)
+    ie1.addInternalElements(ie2)
+    
+    //Settings
+    ie1.getQueryObject.label = "IE1"
+    ie2.getQueryObject.label = "IE2"
+    ih.getQueryObject.label = "IH"
+    ih.setNameView("PPU", CheckingOption.equalsCheck)
+    //ih.getQueryObject().addAttributeFilter("name", "PPU", CheckingOption.equalsCheck)
+    ih.getQueryObject.returned = false
+    
+    println(q.getQuery())
+    println(q.getQuery().runQuery())
+  }
+  
+  def query_5(): Unit = {
+    //Query Objects
+    val q = new AMLLanguageQuery
+    val ih = q.createInstanceHierarchy()
+    val ie1 = q.createInternalElement()
+    val ie2 = q.createInternalElement()
+    ih.addInternalElements(ie1)
+    ie1.addInternalElements(ie2)
+    
+    //Settings
+    ie1.getQueryObject.label = "IE1"
+    ie2.getQueryObject.label = "IE2"
+    ie2.getQueryObject.transitive = true
+    ih.getQueryObject.label = "IH"
+    ih.setNameView("PPU", CheckingOption.equalsCheck)
+    //ih.getQueryObject().addAttributeFilter("name", "PPU", CheckingOption.equalsCheck)
+    ih.getQueryObject.returned = false
+    
+    println(q.getQuery())
+    println(q.getQuery().runQuery())
+  }
+  
+  def query_6(): Unit = {
+    //Query Objects
+    val q = new AMLLanguageQuery
+    val ie1 = q.createInternalElement()
+    val ie2 = q.createInternalElement()
+    ie1.addInternalElements(ie2)
+    
+    //Settings
+    ie1.getQueryObject.label = "IE1"
+    ie2.getQueryObject.label = "IE2"
+    ie2.getQueryObject.negated = true
+    
+    println(q.getQuery())
+    println(q.getQuery().runQuery())
+  }
+  
+  def query_7(): Unit = {
+    //Query Objects
+    val q = new AMLLanguageQuery
+    val suc = q.createSystemUnitClass()
+    val ie = q.createInternalElement()
+    ie.setBaseSystemUnit(suc)
+    
+    //Settings
+    ie.getQueryObject.label = "IE"
+    suc.getQueryObject.label = "SUC"
+    suc.setNameView("Stack", CheckingOption.equalsCheck)
+    //suc.getQueryObject().addAttributeFilter("name", "Stack", CheckingOption.equalsCheck)
+    suc.getQueryObject.returned = false
+    
+    println(q.getQuery())
+    println(q.getQuery().runQuery())
+  }
+  
+  def query_8(): Unit = {
+    //Query Objects
+    val q = new AMLLanguageQuery
+    val ie1 = q.createInternalElement()
+    val ie2 = q.createInternalElement()
+    ie1.addInternalElements(ie2)
+    
+    //Settings
+    ie1.getQueryObject.label = "IE1"
+    ie2.getQueryObject.label = "IE2"
+    ie2.getQueryObject.multi = 3 //means >= 3
+    
+    println(q.getQuery())
+    println(q.getQuery().runQuery())
+  }
+  
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/example/ExampleRSUM.scala b/src/main/scala/org/rosi_project/example/ExampleRSUM.scala
new file mode 100644
index 0000000..c536c51
--- /dev/null
+++ b/src/main/scala/org/rosi_project/example/ExampleRSUM.scala
@@ -0,0 +1,63 @@
+package org.rosi_project.example
+
+import view.LibraryView
+import view.Manager0
+import view.LibrarySimple0
+
+object ExampleRSUM extends App {
+    
+  println("%%%%%%%%%%%%%%%%%%%%%% Create a view with all data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  var completeView: LibraryView = LibraryView.getNewView()
+    
+  println("%%%%%%%%%%%%%%%%%%%%%% Create elements in the view %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  var libRole = completeView.createLibrary("City Library")
+  var empRole = completeView.createEmployee(45000, "Bill Smith")
+  var manRole = completeView.createEmployee(60000, "Bob Jones")
+  libRole.addEmployees(empRole)
+  empRole.setManager(manRole)
+  
+  println(libRole.getNameView())
+  
+  completeView.printViewRoles()
+    
+  var list = completeView.getAllViewElements
+    
+  println("Test1 " + completeView.getElementsWithClassName("LibraryRole"))
+  println("Test2 " + completeView.getElementsWithExample(empRole))
+  println("Test3 " + completeView.getMapOfElements())
+
+  println("%%%%%%%%%%%%%%%%%%%%%% Activate other views %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  var managerView: Manager0 = Manager0.getNewView()
+  var simpleView: LibrarySimple0 = LibrarySimple0.getNewView()
+
+  completeView.printViewRoles()
+  managerView.printViewRoles()
+  simpleView.printViewRoles()
+
+  println("%%%%%%%%%%%%%%%%%%%%%% Create a new relation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  libRole.addEmployees(manRole)
+
+  println("%%%%%%%%%%%%%%%%%%%%%% Change the name of an employee in a view %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  empRole.setNameView("Max Smith")
+
+  completeView.printViewRoles()
+  managerView.printViewRoles()
+  simpleView.printViewRoles()
+
+  println("%%%%%%%%%%%%%%%%%%%%%% Remove an employee %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  //libRole.deleteElement()
+  empRole.deleteElement()
+  //manRole.deleteElement()
+  //hasMan.deleteElement()
+  //hasEmp2.deleteElement()
+
+  completeView.printViewRoles()
+  managerView.printViewRoles()
+  simpleView.printViewRoles()
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/example/ModelJoinExample.scala b/src/main/scala/org/rosi_project/example/ModelJoinExample.scala
new file mode 100644
index 0000000..145f2bb
--- /dev/null
+++ b/src/main/scala/org/rosi_project/example/ModelJoinExample.scala
@@ -0,0 +1,128 @@
+package org.rosi_project.example
+
+import org.rosi_project.model_management.core.RsumCompartment
+import view.EclipseLibraryView
+import view.IMDBdatabaseView
+import java.util.Date
+import view.Simple0
+
+object ModelJoinExample extends App {
+    
+  println("%%%%%%%%%%%%%%%%%%%%%% Create new views %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+  
+  var eclipseView = EclipseLibraryView.getNewView()
+  var imdbView = IMDBdatabaseView.getNewView()
+  
+  println("%%%%%%%%%%%%%%%%%%%%%% Add joinable filmes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+  
+  var avaFilmRole = imdbView.createFilm(2013, "Avatar Aufbruch nach Pandory")
+  var avaVideoRole = eclipseView.createVideoCassette(false, 230, "Avatar Aufbruch nach Pandory", new Date())
+  var dwFilmRole = imdbView.createFilm(2018, "Death Wish")
+  var asterViedeoRole = eclipseView.createVideoCassette(false, 90, "Asterix erobert Rom", new Date())
+  
+  println(avaVideoRole.getTitleView())
+  
+  eclipseView.printViewRoles()
+  imdbView.printViewRoles()
+  RsumCompartment.printStatus
+  
+  println("%%%%%%%%%%%%%%%%%%%%%% Add the join view %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+  
+  var joinView = Simple0.getNewView()
+    
+  eclipseView.printViewRoles()
+  imdbView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus
+  
+  println("%%%%%%%%%%%%%%%%%%%%%% Test Println Options for variables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+  joinView.getElementsWithClassName("JoinMovieRole").foreach(r => {
+    val movie = r.asInstanceOf[Simple0#JoinMovieRole]
+    println(movie.getTitleView())
+    println(movie.getMinutesLengthView())
+  })
+  
+  println("%%%%%%%%%%%%%%%%%%%%%% Remove Avatar in the Join View %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+  
+  joinView.getElementsWithClassName("JoinMovieRole").foreach(r => {
+    val movie = r.asInstanceOf[Simple0#JoinMovieRole]
+    if (movie.getTitleView() == "Avatar Aufbruch nach Pandory") {
+      movie.deleteElement()
+    }
+  })
+  
+  eclipseView.printViewRoles()
+  imdbView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus
+  
+  println("%%%%%%%%%%%%%%%%%%%%%% Add Death Wish in video view %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+  
+  var dwVideoRole = eclipseView.createVideoCassette(true, 98, "Death Wish", new Date())
+  
+  eclipseView.printViewRoles()
+  imdbView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus  
+    
+  println("%%%%%%%%%%%%%%%%%%%%%% Create elements in the view %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  var movieRole = joinView.createJoinMovie("Star Trek I", 1979, 132)
+  var filmRole = imdbView.createFilm(1994, "Star Trek VII")
+  
+  println("Year: " + movieRole.getYearView())
+  println("Minutes: " + movieRole.getMinutesLengthView())
+  println("Title: " + movieRole.getTitleView())
+  
+  var list = joinView.getAllViewElements
+        
+  eclipseView.printViewRoles()
+  imdbView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus
+
+  println("%%%%%%%%%%%%%%%%%%%%%% Add also video cassette from Star Trek VII %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  var videoRole = eclipseView.createVideoCassette(false, 130, "Star Trek VII", new Date())
+  
+  eclipseView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus
+  
+  println("%%%%%%%%%%%%%%%%%%%%%% Add Relations in Film view and show results in other views %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+  
+  var imdbRole = imdbView.createIMDB()
+  imdbRole.addFilms(filmRole)
+  
+  imdbView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus
+  
+  println("%%%%%%%%%%%%%%%%%%%%%% Add Relations in join view and show results in other views %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+  
+  var voteRole = joinView.createVote(6)
+  movieRole.addVotes(voteRole)
+  
+  eclipseView.printViewRoles()
+  imdbView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus
+
+  println("%%%%%%%%%%%%%%%%%%%%%% Change the name of Star Trek I in a view %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  movieRole.setTitleView("Star Trek I The Beginning")
+
+  eclipseView.printViewRoles()
+  imdbView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus
+
+  println("%%%%%%%%%%%%%%%%%%%%%% Remove the movie Start Trek I %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
+
+  movieRole.deleteElement()
+  
+  eclipseView.printViewRoles()
+  imdbView.printViewRoles()
+  joinView.printViewRoles()
+  RsumCompartment.printStatus
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/core/ModelElementLists.scala b/src/main/scala/org/rosi_project/model_management/core/ModelElementLists.scala
new file mode 100644
index 0000000..c6b126c
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/core/ModelElementLists.scala
@@ -0,0 +1,159 @@
+package org.rosi_project.model_management.core
+
+/**
+ * Provides convenient access to all instances of the synchronized models.
+ *
+ * New models may be registered by name to simplify retrieving their instances.
+ */
+object ModelElementLists {
+
+  var elements: Map[Class[_ <: AnyRef], Set[AnyRef]] = Map()
+  var model2Class: Map[String, Class[_ <: AnyRef]] = Map()
+
+  /**
+   * Inserts a new instance.
+   *
+   * The appropriate model will be inferred automatically
+   *
+   * @param obj the instance. May never be `null`
+   */
+  def addElement(obj: Object): Unit = {
+    if (obj == null) {
+      return
+    }
+
+    var elementsWithClass = elements.get(obj.getClass)
+    
+    if (elementsWithClass.isEmpty) {
+      elements += (obj.getClass -> Set(obj))
+    } else {
+      //var seti = (elementsWithClass.get ++ Set(obj))
+      elements += (obj.getClass -> (elementsWithClass.get + obj))
+    }
+  }
+
+  /**
+   * Queries for all instances of the given class.
+   *
+   * @param clazz the class
+   * @return all matching instances. If none were found or the class is not yet part of the
+   *         repository, an empty list will be returned
+   */
+  def getElementsWithClass(clazz: Class[_ <: AnyRef], excludeSubclasses: Boolean = false): Set[AnyRef] = {
+    var matchingElems: Set[AnyRef] = elements.getOrElse(clazz, Set())
+
+    /*if (!excludeSubclasses) {
+      matchingElems ++= elements
+        .filter(elem => elem._1 != clazz && clazz.isAssignableFrom(elem._1))
+        .values
+        .fold(List[AnyRef]())((l1, l2) => l1 ++ l2)
+    }*/
+
+    matchingElems
+  }
+
+  /**
+   * Queries for all instances of a given model
+   *
+   * @param name the name of the model
+   * @return if the model was found, all its instances will be wrapped in an [[Option]], otherwise
+   *         [[None]] will be returned
+   */
+  def getElementsForModel(name: String): Option[Set[AnyRef]] = {
+
+    if (!model2Class.contains(name)) {
+      None
+    } else {
+      Some(elements.getOrElse(model2Class(name), Set()))
+    }
+
+  }
+
+  def removeElement(obj: AnyRef): Unit = {
+    for { elementsWithClass <- elements.get(obj.getClass) } {
+      val filtered = elementsWithClass.filter(_ != obj)
+
+      elements += (obj.getClass -> filtered)
+    }
+  }
+
+  /**
+   * Informs the repository about what objects belong to which model
+   *
+   * @param name the model's name
+   * @param elemsType the class of the corresponding instances
+   * @throws IllegalArgumentException if the name is already in use
+   */
+  def registerModel(name: String, elemsType: Class[_ <: AnyRef]): Unit = {
+    if (model2Class.contains(name)) {
+      throw new IllegalArgumentException(s"Model is already present: $name")
+    }
+
+    model2Class += (name -> elemsType)
+  }
+
+  def printFromPackage(s: String): Unit = {
+    for (model <- model2Class) {
+      println(s"Model: ${model._1}:")
+
+      elements.getOrElse(model._2, Set()).foreach(e => println(s"++ $e"))
+
+    }
+
+    for { clazz <- elements.keys if !model2Class.exists(t => t._2 == clazz) } {
+      if (clazz.toString().contains(s)) {
+        println(s"Model: $clazz:")
+
+        elements.getOrElse(clazz, Set()).foreach(e => println(s"** $e"))
+      }
+    }
+  }
+  
+  def getElementFromType(s: String): AnyRef = {
+    for { clazz <- elements.keys if !model2Class.exists(t => t._2 == clazz) } {
+      if (clazz.toString().contains(s)) {
+        var es = elements.getOrElse(clazz, Set())
+        if (es.isEmpty) {
+          return null
+        } else {
+          return es.head
+        }
+      }
+    }
+    return null
+  }
+
+  def getElementsFromType(s: String): Set[AnyRef] = {
+    for { clazz <- elements.keys if !model2Class.exists(t => t._2 == clazz) } {
+      if (clazz.toString().contains(s)) {
+        return elements.getOrElse(clazz, Set())
+      }
+    }
+    return Set()
+  }
+  
+  def getDirectElementsFromType(s: String): Set[AnyRef] = {
+    for { clazz <- elements.keys if !model2Class.exists(t => t._2 == clazz) } {
+      if (clazz.getName == s) {
+        return elements.getOrElse(clazz, Set())
+      }
+    }
+    return Set()
+  }
+
+  def printAll(): Unit = {
+    for (model <- model2Class) {
+      println(s"Model: ${model._1}:")
+
+      elements.getOrElse(model._2, Set()).foreach(e => println(s"++ $e"))
+
+    }
+
+    for { clazz <- elements.keys if !model2Class.exists(t => t._2 == clazz) } {
+      println(s"Model: $clazz:")
+
+      elements.getOrElse(clazz, Set()).foreach(e => println(s"** $e"))
+    }
+  }
+
+}
diff --git a/src/main/scala/org/rosi_project/model_management/core/PlayerSync.scala b/src/main/scala/org/rosi_project/model_management/core/PlayerSync.scala
new file mode 100644
index 0000000..2f0cbbe
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/core/PlayerSync.scala
@@ -0,0 +1,30 @@
+package org.rosi_project.model_management.core
+
+import scroll.internal.MultiCompartment
+
+trait PlayerSync extends MultiCompartment {
+  
+  buildClass()
+
+  var deleted: Boolean = false
+
+  def isDeleted: Boolean = deleted
+
+  def buildClass(): Unit = {
+    //println("Create New Class")
+    if (!SynchronizationCompartment.isUnderConstruction()) {
+      SynchronizationCompartment combine this
+      val mani = SynchronizationCompartment.createRoleManager()
+      this play mani
+      mani.manage(this)
+      //this play SynchronizationCompartment.createRoleManager()
+      //+this manage this
+    }
+  }
+
+  def deleteObjectFromSynchro(): Unit = {
+    //println("Delete Object")
+    +this deleteManage this
+    deleted = true
+  }
+}
diff --git a/src/main/scala/org/rosi_project/model_management/core/RsumCompartment.scala b/src/main/scala/org/rosi_project/model_management/core/RsumCompartment.scala
new file mode 100644
index 0000000..b083579
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/core/RsumCompartment.scala
@@ -0,0 +1,273 @@
+package org.rosi_project.model_management.core
+
+import scroll.internal.MultiCompartment
+import scala.collection.mutable.ListBuffer
+import org.rosi_project.model_management.sum._
+import org.rosi_project.model_management.sum.roles._
+import org.rosi_project.model_management.sum.join._
+import org.rosi_project.model_management.sum.compartments.IRelationCompartment
+
+object RsumCompartment extends MultiCompartment {
+
+  //all active extensions
+  private var activeExtensions = ListBuffer[IExtensionCompartment]()
+  //all active views
+  private var activeViews = ListBuffer[IViewCompartment]()
+  
+  //all registered views
+  private var viewInfos = ListBuffer[IViewTypeInfo]()
+  private var joinInfos = ListBuffer[IJoinInfo]()
+
+  //elements in the RSUM
+  private var relations = ListBuffer[IRelationCompartment]()
+  private var naturals = ListBuffer[Object]()
+  private var joins = ListBuffer[IJoinCompartment]()
+  
+  //TODO: look if this method needs different visibility
+  def getNaturals(): ListBuffer[Object] = naturals
+  def getRelations(): ListBuffer[IRelationCompartment] = relations
+  def getJoins(): ListBuffer[IJoinCompartment] = joins  
+  
+  private[model_management] def addJoinCompartment(joinInfo: IJoinInfo): Unit = {
+    if (joinInfo == null || joinInfos.contains(joinInfo)) {
+      return
+    }
+    joinInfos += joinInfo
+    
+    val bases = RsumCompartment.getNaturals().filter(joinInfo.isInstanceBaseModel(_))
+    val others = RsumCompartment.getNaturals().filter(joinInfo.isInstanceOtherModel(_))
+    //b can only match with one o TODO: uses last one if more than one matches
+    //TODO: also iterate over joins to allow deep joins
+    bases.foreach(b => {
+      var other: Object = null
+      others.foreach(o => {
+        if (joinInfo.matchTwoObjects(b, o)) {
+          other = o
+        }
+      })
+      if (other != null || joinInfo.getJoinType() == RsumJoinType.outer) {
+        //join should be added before a view that needs it
+        val j = joinInfo.getNewInstance(b, other)
+        val rsumManager = new RsumManager
+        j play rsumManager
+        rsumManager.manageRsum(j)
+      }      
+    })
+  }
+    
+  def printStatus (): Unit = {
+    println("****************************************")
+    println("Naturals: " + naturals.size + " N: " + naturals)
+    println("Relations: " + relations.size + " R: " + relations)
+    println("Joins: " + joins.size + " J: " + joins)
+    println("****************************************")
+  }
+  
+  def isViewTypeInfo(info: IViewTypeInfo): Boolean = viewInfos.contains(info)
+  
+  def isActiveExtension(extension: IExtensionCompartment): Boolean = activeExtensions.contains(extension)
+  
+  def isActiveView(view: IViewCompartment): Boolean = activeViews.contains(view)
+  
+  def isActiveViewFromName(name: String): Boolean = {
+    activeViews.filter(_.getViewName() == name).foreach(
+        v => return true)
+    return false
+  }
+
+  def getActiveViewFromName(name: String): IViewCompartment = {
+    activeViews.filter(_.getViewName() == name).foreach(
+        v => return v)
+    return null;
+  }
+  
+  def addViewTypeInfo(view: IViewTypeInfo): IViewTypeInfo = {
+    //look if there is a view with this name
+    viewInfos.filter(_.getViewName() == view.getViewName()).foreach(v => {
+      println("View with name " + v.getViewName() + " is already known!")
+      return v
+    })
+    viewInfos = viewInfos :+ view
+    view.getJoinInfos().foreach(this.addJoinCompartment(_))
+    return view
+  }
+  
+  def createActiveViewFromName(name: String): IViewCompartment = {
+    //look if there is a view with this name
+    viewInfos.filter(_.getViewName() == name).foreach(
+        v => return this.createView(v))
+    println("View with name %s is not known!", name)
+    return null
+  }    
+
+  def createActiveView(view: IViewTypeInfo): IViewCompartment = {
+    return this.createView(this.addViewTypeInfo(view))
+  }
+
+  def deleteActiveView(view: IViewCompartment): Boolean = {
+    if (view == null || !activeViews.contains(view))
+      return false    
+    view.deleteAllRoles()
+    activeViews -= view
+    return true
+  }
+  
+  private def createView(view: IViewTypeInfo): IViewCompartment = {
+    return addActiveView(view.getViewRsumInstance())
+  }
+  
+  private[model_management] def addActiveView(view: IViewCompartment): IViewCompartment = {
+    //look if the view is registered
+    if (viewInfos.filter(_.getViewName() == view.getViewName()).isEmpty) {
+      return null
+    }
+    //look if their exists a view with the same name
+    //TODO: should be possible to create 2 views with same name
+    activeViews.filter(_.getViewName() == view.getViewName()).foreach(v => {
+      println("Two views with the same name can not be created, return old view")
+      return v
+    })
+    activeViews = activeViews :+ view
+    //combine the view with the rsum compartment   
+    this combine view
+    //add the view roles
+    naturals.foreach(n => view.getViewRole(n))
+    joins.foreach(j => view.getViewRole(j))
+    relations.foreach(r => view.getViewRole(r))
+    return view
+  }  
+
+  def addExtension(comp: IExtensionCompartment): Boolean = {
+    activeExtensions.foreach { e =>
+      //extension already integrated (ignore)
+      if (e.getExtensionName().equals(comp.getExtensionName())) {
+        println("Their already exists an extension compartment with this name")
+        return false
+      }
+    }
+    activeExtensions = activeExtensions :+ comp
+    //combine the extension with the rsum compartment
+    this combine comp
+    //adds the extension roles
+    relations.foreach(r => comp.getExtensionRole(r))
+    naturals.foreach(n => comp.getExtensionRole(n))
+    joins.foreach(j => comp.getExtensionRole(j))
+    return true
+  }
+
+  def removeExtension(name: String): Boolean = {
+    var extension: IExtensionCompartment = null
+    //find extension by name
+    activeExtensions.filter(_.getExtensionName() == name).foreach(e => extension = e)
+    //remove
+    if (extension != null) {
+      extension.deleteAllRoles()
+      activeExtensions -= extension
+      return true
+    }    
+    println("No extension with such a name!")
+    return false
+  }
+  
+  private def newObject(obj: Object): Unit = {   
+    //TODO: add here implementation for deep joins
+    //TODO: new function to get naturals and joins in one list
+    //obj should not be in the join and must be a type of it
+    joinInfos.filter(_.canMatchWithNewJoin(obj)).foreach(joinInfo => {      
+      var other: Object = null
+      var newJoin: IJoinCompartment = null
+      if (joinInfo.isInstanceBaseModel(obj)) {
+        //can be a new base instance, should not be possible that is is connect with one that is already connected
+        RsumCompartment.getNaturals().filter(n => joinInfo.isInstanceOtherModel(n) && joinInfo.matchTwoObjects(obj, n) && !joinInfo.containsObject(n)).foreach(other = _)
+        if (other != null || joinInfo.getJoinType() == RsumJoinType.outer) {
+          newJoin = joinInfo.getNewInstance(obj, other)
+        }
+      } else {
+        if (joinInfo.getJoinType() == RsumJoinType.outer) {
+          //search alle join instances from this join for a base model without connection that mathes to this obj
+          RsumCompartment.getJoins().filter(j => j.hasEmptyOther() && j.getJoinInfo().isInstanceOtherModel(obj) && j.getJoinInfo().matchTwoObjects(j.baseObj, obj)).foreach(_.addOther(obj))
+        } else {
+          //if its no outer join search for all naturals if one match that is currently not in the join
+          RsumCompartment.getNaturals().filter(n => joinInfo.isInstanceBaseModel(n) && joinInfo.matchTwoObjects(n, obj) && !joinInfo.containsObject(n)).foreach(other = _)
+          if (other != null) {
+            newJoin = joinInfo.getNewInstance(other, obj)
+          }
+        }
+      }
+      if (newJoin != null) {
+        var rsumManager: RsumManager = new RsumManager()
+        newJoin play rsumManager
+        rsumManager.manageRsum(newJoin)
+      }
+    })
+  }
+
+  class RsumManager() extends IRsumRole {
+
+    def manageRsum(incommingPlayer: Object): Unit = {
+      if (incommingPlayer == null)
+        return
+        
+      ModelElementLists.addElement(incommingPlayer)
+
+      incommingPlayer match {
+        case r: IRelationCompartment =>
+          r.initialize()
+          RsumCompartment.this combine r
+          //add to list with relations
+          relations = relations :+ r
+        case j: IJoinCompartment =>
+          //TODO: implement here deep joins
+          //newObject(j)
+          //add to list with joins
+          joins = joins :+ j
+        case n: Object =>
+          newObject(n)
+          //add to list with naturals
+          naturals = naturals :+ n
+      }
+
+      //add all roles from extension compartments
+      activeExtensions.foreach(e => e.getExtensionRole(incommingPlayer))
+      //create new elements in other views
+      activeViews.foreach(v => v.getViewRole(incommingPlayer))      
+    }
+
+    def deleteEverything(): Unit = {
+      val playerObj = this.player.right.get
+      
+      ModelElementLists.removeElement(playerObj)
+      
+      val roles = playerObj.roles()
+      //iterate over all roles and call remove methods
+      //remove methods from the rule also remove the role from the graph      
+      roles.filter(_.isInstanceOf[IRsumRole]).foreach(r => {
+        //println("Delete RsumRole (Extension, View, or Relation) Role: " + r)
+        val rsumRole = r.asInstanceOf[IRsumRole]
+        rsumRole.removeRole()
+      })
+      
+      //remove element from internal element lists
+      if (playerObj.isInstanceOf[IRelationCompartment]) {
+        val relation = playerObj.asInstanceOf[IRelationCompartment]
+        relation.deleteCompartment()
+        relations -= relation
+      } else if (playerObj.isInstanceOf[IJoinCompartment]) {
+        val join = playerObj.asInstanceOf[IJoinCompartment]
+        join.deleteCompartment()
+        joins -= join
+      } else {
+        naturals -= playerObj
+      }
+      //println("All Count: " + plays.allPlayers.size)
+    }
+
+    def changeSomething(): Unit = {
+      +this runExtension ()
+    }
+    
+    private[model_management] def removeRole(): Unit = {
+      this.remove()
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/core/SynchronizationCompartment.scala b/src/main/scala/org/rosi_project/model_management/core/SynchronizationCompartment.scala
new file mode 100644
index 0000000..bd5886a
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/core/SynchronizationCompartment.scala
@@ -0,0 +1,462 @@
+package org.rosi_project.model_management.core
+
+import scala.collection.Seq
+import scala.collection.mutable.ListBuffer
+import scala.collection.immutable.Set
+import scala.util.control.Breaks._
+
+import org.rosi_project.model_management.sync._
+import org.rosi_project.model_management.sync.roles._
+import org.rosi_project.model_management.sync.compartments._
+
+object SynchronizationCompartment extends ISynchronizationCompartment {
+
+  def createRoleManager(): IRoleManager = new RoleManager()
+
+  private var activeConstructionCompartment: IConstructionCompartment = null //object
+  private var activeDestructionCompartment: IDestructionCompartment = null //object
+  private var activeSyncCompartmentInstances = Set.empty[ISyncCompartment] //classes
+  private var activeExtensionCompartments = Set.empty[IExtenstionCompartment] //objects
+
+  private var availableExtensionCompartments: List[IExtenstionCompartment] = List[IExtenstionCompartment]()
+  private var availableConstructionCompartments: List[IConstructionCompartment] = List[IConstructionCompartment]()
+  private var availableDestructionCompartments: List[IDestructionCompartment] = List[IDestructionCompartment]()
+  private var availableSyncCompartments: List[ISyncCompartment] = List[ISyncCompartment]()
+
+  changeConstructionRule(SuppressingConstructionCompartment)
+  changeDestructionRule(GeneralDestructor)
+
+  def getConstructionRule(): IConstructionCompartment = activeConstructionCompartment
+
+  def getDestructionRule(): IDestructionCompartment = activeDestructionCompartment
+
+  def getSyncRules(): Set[ISyncCompartment] = activeSyncCompartmentInstances
+
+  def getExtensions(): Set[IExtenstionCompartment] = activeExtensionCompartments
+
+  def getAvailableConstructionRule(): List[IConstructionCompartment] = availableConstructionCompartments
+
+  def getAvailableDestructionRule(): List[IDestructionCompartment] = availableDestructionCompartments
+
+  def getAvailableSyncRules(): List[ISyncCompartment] = availableSyncCompartments
+
+  def getAvailableExtensions(): List[IExtenstionCompartment] = availableExtensionCompartments
+
+  /**
+   * Method for Debug Output.
+   */
+  private def debugCompleteRoleGraphOutput(): Unit = {
+    println("")
+    val nodes = this.allPlayers
+    nodes.foreach { n =>
+      println("Output N: " + n + " Player: " + n.player)
+    }
+    println("")
+  }
+
+  /**
+   * Method for Debug Output.
+   */
+  private def debugSyncRoleGraphOutput(): Unit = {
+    println("")
+    val nodes = this.allPlayers
+    nodes.foreach {
+      case n: ISyncRole =>
+        val role: ISyncRole = n.asInstanceOf[ISyncRole]
+        val compart: ISyncCompartment = role.getOuterCompartment
+        println("Output N: " + n + " Player: " + n.player + " Comp: " + compart + " RN: " + compart.getRuleName)
+      case _ =>
+    }
+    println("")
+  }
+
+  /**
+   * Method for Debug Output.
+   */
+  private def debugPlayerRolesOutput(): Unit = {
+    println("")
+    val nodes = this.allPlayers
+    nodes.foreach {
+      case player: PlayerSync =>
+        println("Output N: " + player.roles())
+      case _ =>
+    }
+    println("")
+  }
+
+  def registerConstructionCompartment(compartment: IConstructionCompartment): Unit = {
+    if (compartment == null)
+      return
+    if (!availableConstructionCompartments.contains(compartment)) {
+      availableConstructionCompartments = availableConstructionCompartments :+ compartment
+      this combine compartment
+    }
+  }
+
+  def registerDestructionCompartment(compartment: IDestructionCompartment): Unit = {
+    if (compartment == null)
+      return
+    if (!availableDestructionCompartments.contains(compartment)) {
+      availableDestructionCompartments = availableDestructionCompartments :+ compartment
+      this combine compartment
+    }
+  }
+
+  def registerSyncRule(compartment: ISyncCompartment): Unit = {
+    if (compartment == null)
+      return
+    if (!availableSyncCompartments.contains(compartment)) {
+      availableSyncCompartments = availableSyncCompartments :+ compartment
+    }
+  }
+
+  def registerExtensionCompartment(compartment: IExtenstionCompartment): Unit = {
+    if (compartment == null)
+      return
+    if (!availableExtensionCompartments.contains(compartment)) {
+      availableExtensionCompartments = availableExtensionCompartments :+ compartment
+      this combine compartment
+    }
+  }
+
+  def activateExtensionCompartment(compartment: IExtenstionCompartment): Unit = {
+    if (compartment == null)
+      return
+    activeExtensionCompartments += compartment
+    registerExtensionCompartment(compartment)
+  }
+
+  def deactivateExtensionCompartment(compartment: IExtenstionCompartment): Unit = {
+    if (compartment == null)
+      return
+    activeExtensionCompartments -= compartment
+  }
+
+  /**
+   * Change the actual construction role.
+   */
+  def changeConstructionRule(construct: IConstructionCompartment): Unit = {
+    if (construct == null) {
+      return
+    }
+    activeConstructionCompartment = construct
+    registerConstructionCompartment(construct)
+  }
+
+  /**
+   * Change the destruction role.
+   * Set the new one and remove old roles and add new ones.
+   */
+  def changeDestructionRule(destruct: IDestructionCompartment): Unit = {
+    if (destruct == null) {
+      return
+    }
+    if (activeDestructionCompartment == null) {
+      activeDestructionCompartment = destruct
+      registerDestructionCompartment(destruct)
+      return
+    }
+    //debugCompleteRoleGraphOutput()
+    var nodes = this.allPlayers; //get all nodes
+    //delete all destruction roles
+    nodes.foreach { n =>
+      if (n.isInstanceOf[IDestructor])
+        n.remove()
+    }
+    //debugCompleteRoleGraphOutput()
+    //add all new ones
+    nodes = this.allPlayers
+    nodes.foreach {
+      case n: IRoleManager =>
+        //add new role here
+        val player = n.player
+        if (player.isRight) {
+          val realPlayer = player.right.get
+          val newRole = destruct.getDestructorForClassName(realPlayer)
+          n play newRole
+        }
+      case _ =>
+    }
+    //debugCompleteRoleGraphOutput()
+    activeDestructionCompartment = destruct
+
+    registerDestructionCompartment(destruct)
+  }
+
+  /**
+   * Integration of a new Model with an integration compartment.
+   */
+  def integrateNewModel(integrationRule: IIntegrationCompartment): Unit = {
+    this combine integrationRule
+    val nodes = this.allPlayers
+    nodes.foreach {
+      case player: PlayerSync =>
+        val role = integrationRule.getIntegratorForClassName(player)
+        //println("RM: " + n + " Role: " + role)
+        if (role != null) {
+          player play role
+          underConstruction = true;
+          (+player).integrate(player)
+          underConstruction = false;
+          role.remove()
+        }
+      case _ =>
+    }
+    nodes.foreach {
+      case player: PlayerSync =>
+        val role = integrationRule.getRelationalIntegratorsForClassName(player)
+        //println("RM: " + n + " Role: " + role)
+        if (role != null) {
+          player play role
+          underConstruction = true;
+          (+player).integrate(player)
+          underConstruction = false;
+          role.remove()
+        }
+      case _ =>
+    }
+    integrationRule.finalEditFunction()
+  }
+
+  /**
+   * Add a new synchronization rule to the synchronization process.
+   */
+  def addSynchronizationRule(newRule: ISyncCompartment): Unit = {
+    if (newRule == null) {
+      return
+    }
+    //if the rule is in the list stop
+    activeSyncCompartmentInstances.foreach { s =>
+      if (s.getRuleName == newRule.getRuleName)
+        return
+    }
+    activeSyncCompartmentInstances += newRule
+
+    var running = true
+    var nodes = Seq[AnyRef]()
+    //debugSyncRoleGraphOutput()
+    while (running) {
+      breakable {
+        running = false
+        nodes = this.allPlayers; //get all nodes
+        nodes.foreach {
+          case n: RoleManager =>
+            //proof if the role manager does not play this rule
+            var proof = true
+            val player = n.player
+            if (player.isRight) {
+              val realPlayer = player.right.get
+              val relatedRoles = n.roles()
+              //println(realPlayer + "-----" + relatedRoles)
+              relatedRoles.foreach {
+                case syncRole: ISyncRole =>
+                  val syncComp: ISyncCompartment = syncRole.getOuterCompartment
+                  if (syncComp.getRuleName == newRule.getRuleName || !newRule.isFirstIntegration(realPlayer))
+                    proof = false
+                case _ =>
+              }
+
+              //if synchronization compartment was not integrated before then integrate now
+              if (proof) {
+                //add new role to the player
+                //the new compartment
+                val newComp: ISyncCompartment = newRule.getNewInstance
+                val newRole = newComp.getNextIntegrationRole(realPlayer)
+                //println("**" + newComp + " " + newRole + " " + n + " " + realPlayer)
+                if (newRole != null)
+                  n play newRole
+                else
+                  proof = false
+
+                if (proof) {
+                  //add roles to related role manager because on is added to this one
+                  val related = n.getRelatedManager
+                  related.foreach { r =>
+                    val player = r.player
+                    if (player.isRight) {
+                      val realPlayer = player.right.get
+                      if (newComp.isNextIntegration(realPlayer)) {
+                        val newRole = newComp.getNextIntegrationRole(realPlayer)
+                        r play newRole
+                      }
+                    }
+                  }
+                  this combine newComp
+                  running = true
+                  break
+                }
+              }
+            }
+          case _ =>
+
+        }
+      }
+    }
+
+    registerSyncRule(newRule)
+    //debugPlayerRolesOutput()
+    //debugSyncRoleGraphOutput()
+  }
+
+  def hasSynchronizationRule(ruleName: String): Boolean = {
+    activeSyncCompartmentInstances.map(_.getRuleName).contains(ruleName)
+  }
+
+  /**
+   * Delete all rules with this name.
+   */
+  def deleteRule(ruleName: String): Unit = {
+    val nodes = this.allPlayers //get all nodes
+    nodes.foreach {
+      case n: ISyncRole =>
+        val role: ISyncRole = n.asInstanceOf[ISyncRole]
+        val compart: ISyncCompartment = role.getOuterCompartment
+        //println("Destruct1: " + n.isInstanceOf[ISyncRole] + " N: " + n + " Player: " + n.player + " Comp: " + compart + " RN: " + compart.getRuleName() + " From: " + from)
+        if (compart.getRuleName == ruleName) {
+          compart.clearSyncer()
+          n.remove()
+        }
+      case _ =>
+
+    }
+
+    // rule names should be unique (in theory)
+    // but we're better save than sorry
+    val ruleCompartments = activeSyncCompartmentInstances.filter(_.getRuleName == ruleName)
+    for (comp <- ruleCompartments) {
+      activeSyncCompartmentInstances -= comp
+    }
+
+    //debugCompleteRoleGraphOutput()
+  }
+
+  /**
+   * Change rule with this name to new rule.
+   */
+  def changeRuleFromTo(from: String, to: ISyncCompartment): Unit = {
+    var running = true
+    var nodes = Seq[AnyRef]()
+    while (running) {
+      breakable {
+        running = false
+        nodes = this.allPlayers //get all nodes
+        nodes.foreach {
+          case role: ISyncRole =>
+            val compart: ISyncCompartment = role.getOuterCompartment
+            //println("Destruct1: " + n.isInstanceOf[ISyncRole] + " N: " + n + " Player: " + n.player + " Comp: " + compart + " RN: " + compart.getRuleName() + " From: " + from)
+            if (compart.getRuleName == from) {
+              //exchange this with a new compartment
+              val newComp: ISyncCompartment = to.getNewInstance
+              compart.getSyncer.foreach { r =>
+                val manager = (+r).getManager()
+                if (manager.isRight) {
+                  val realManager: RoleManager = manager.right.get(0).right.get
+                  val player = r.player
+                  if (player.isRight) {
+                    val realPlayer = player.right.get
+                    val newRole = newComp.getNextIntegrationRole(realPlayer)
+                    r.remove()
+                    realManager play newRole
+                  }
+                }
+              }
+              //role graph combination
+              this combine newComp
+              //delete compartment
+              compart.clearSyncer()
+              running = true
+              break
+            }
+          case _ =>
+
+        }
+      }
+    }
+
+    // rule names should be unique (in theory)
+    // but we're better save than sorry
+    val oldRuleCompartments = activeSyncCompartmentInstances.filter(_.getRuleName == from)
+    for (comp <- oldRuleCompartments) {
+      activeSyncCompartmentInstances -= comp
+    }
+    activeSyncCompartmentInstances += to
+
+    registerSyncRule(to)
+    //debugSyncRoleGraphOutput()
+  }
+
+  class RoleManager() extends IRoleManager {
+
+    def getRelatedClassFromName(name: String): PlayerSync = {
+      getRelatedManager.foreach(rm => {
+        val realPlayer = rm.player.right.get
+        //TODO: look on more superclasses
+        //println(realPlayer.getClass.getSimpleName + " " + realPlayer.getClass.getName + " " + realPlayer.getClass.getCanonicalName)
+        if (realPlayer.getClass.getName.contains(name) || realPlayer.getClass.getSuperclass.getName.contains(name)) {
+          return realPlayer.asInstanceOf[PlayerSync]
+        }
+      })
+      null
+    }
+
+    def getSetRelatedClassesFromName(name: String): Set[PlayerSync] = {
+      var resultSet: Set[PlayerSync] = Set.empty
+      getRelatedManager.foreach(rm => {
+        val realPlayer = rm.player.right.get
+        if (realPlayer.getClass.getName.contains(name) || realPlayer.getClass.getSuperclass.getName.contains(name)) {
+          resultSet += realPlayer.asInstanceOf[PlayerSync]
+        }
+      })
+      resultSet
+    }
+
+    def insertNotification(): Unit = {
+      //println("Insert Notification")
+      +this notifyInsertion ()
+    }
+
+    def deletionNotification(): Unit = {
+      //println("Deletion Notification")
+      +this notifyDeletion ()
+    }
+
+    def updateNotification(): Unit = {
+      //println("Update Notification")
+      +this notifyUpdate ()
+    }
+
+    def printAllManager(): Unit = {
+      println("++ Ma => Pl: " + this + " | " + this.player.right.get)
+      getRelatedManager().foreach(m => {
+        println("-- Ma => Pl: " + m + " | " + m.player.right.get)
+      })
+    }
+
+    def deleteManage(value: PlayerSync): Unit = {
+      val delete = activeDestructionCompartment.getDestructorForClassName(value)
+      if (delete != null) {
+        this play delete
+        +this deleteRoleFunction ()
+      }
+    }
+
+    def manage(value: PlayerSync): Unit = {
+      val construct = activeConstructionCompartment.getConstructorForClassName(value)
+      if (construct != null) {
+        this play construct
+        underConstruction = true;
+        val _ = +this construct (value, this)
+        underConstruction = false;
+        construct.remove()
+      }
+    }
+
+    /**
+     * Create a relation between two IRoleManager and RoleManager of other PlayerSync instances.
+     */
+    def makePlayerSyncRelated(playerSync: PlayerSync): Unit = {
+      +playerSync makeRelated (this)
+    }
+  }
+
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sum/IExtensionCompartment.scala b/src/main/scala/org/rosi_project/model_management/sum/IExtensionCompartment.scala
new file mode 100644
index 0000000..9919711
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/IExtensionCompartment.scala
@@ -0,0 +1,67 @@
+package org.rosi_project.model_management.sum
+
+import scroll.internal.Compartment
+import scala.collection.mutable.ListBuffer
+import org.rosi_project.model_management.sum.roles.IExtensionRole
+import org.rosi_project.model_management.core.RsumCompartment
+
+trait IExtensionCompartment extends Compartment {
+  
+  protected var roles = ListBuffer[IExtensionRole]()
+  
+  protected def getRole(classname: Object) : IExtensionRole
+  
+  private def getRoleFromList(classname: Object): IExtensionRole = {
+    roles.foreach { r =>
+      if (+r == +classname) {
+        return r
+      }
+    }
+    return null
+  }
+  
+  protected def removeRoleFromList(role: IExtensionRole): Unit = {
+    if (roles.contains(role))
+      roles -= role
+  }
+  
+  /**
+   * Get a new extension role for the object. Adds automatically the play relation.
+   */
+  private[model_management] def getExtensionRole(classname: Object) : IExtensionRole = {
+    if (!RsumCompartment.isActiveExtension(this)) {
+      return null
+    }
+    
+    //look if a role from this elements exists in this extension
+    var role: IExtensionRole = getRoleFromList(classname)
+    //YES Return this role
+    if (role != null) {
+      return role
+    }
+    
+    role = this.getRole(classname)
+    if (role != null) {
+      classname play role
+      roles = roles :+ role
+    }
+    return role
+  }
+  
+  //TODO: do we need this function
+  def getNewInstance() : IExtensionCompartment
+  
+  def getExtensionName() : String
+  
+  def deleteAllRoles() : Unit = {
+    roles.foreach(_.remove())
+  }
+  
+  abstract class AExtensionRole extends IExtensionRole {
+    
+    private[model_management] def removeRole(): Unit = {
+      this.remove()
+      IExtensionCompartment.this.removeRoleFromList(this)
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/IViewCompartment.scala b/src/main/scala/org/rosi_project/model_management/sum/IViewCompartment.scala
new file mode 100644
index 0000000..84c3746
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/IViewCompartment.scala
@@ -0,0 +1,237 @@
+package org.rosi_project.model_management.sum
+
+import scroll.internal.Compartment
+import scala.collection.mutable.ListBuffer
+import scala.collection.mutable.Set
+import org.rosi_project.model_management.core.RsumCompartment
+import org.rosi_project.model_management.core.RsumCompartment.RsumManager
+import org.rosi_project.model_management.sum.compartments.IRelationCompartment
+import org.rosi_project.model_management.sum.roles.IViewRole
+import org.rosi_project.model_management.sum.join.IJoinCompartment
+
+trait IViewCompartment extends Compartment {
+
+  private var initRelationRole: Boolean = false
+  private var naturalRoles = ListBuffer[AViewRole]()
+  private var relationalRoles = ListBuffer[AViewRole]()
+
+  /**
+   * Get a map with the simple names of all elements
+   * and the connected elements in the view.
+   */
+  def getMapOfElements(): Map[String, Set[AViewRole]] = {
+    var result: Map[String, Set[AViewRole]] = Map.empty
+    naturalRoles.foreach(n => {
+      if (result.contains(n.getClass.getSimpleName)) {
+        result(n.getClass.getSimpleName) += n
+      } else {
+        result = result + (n.getClass.getSimpleName -> Set(n))
+      }
+    })
+    result
+  }
+
+  /**
+   * Get all elements with the specific simple name.
+   */
+  def getElementsWithClassName(s: String): Set[AViewRole] = {
+    var result: Set[AViewRole] = Set.empty
+    naturalRoles.foreach(n => {
+      if (n.getClass.getSimpleName == s) {
+        result += n
+      }
+    })
+    result
+  }
+
+  /**
+   * Get all elements with the same type from the view.
+   */
+  def getElementsWithExample[A <: IViewRole](a: A): Set[A] = {
+    var result: Set[A] = Set.empty
+    naturalRoles.foreach(n => {
+      if (n.getClass.getName == a.getClass.getName) {
+        result += n.asInstanceOf[A]
+      }
+    })
+    result
+  }
+
+  /**
+   * Get a new view role for the object. Adds automatically the play relation.
+   */
+  private[model_management] def getViewRole(classname: Object): IViewRole = {
+    if (!RsumCompartment.isActiveView(this)) {
+      return null
+    }
+
+    if (!isViewable(classname)) {
+      return null
+    }
+
+    //look if a role from this elements exists in this view
+    var role: AViewRole = getRoleFromList(classname)
+    //YES Return this role
+    if (role != null) {
+      return role
+    }
+
+    //it can not be possible that relations are created without their connection parts before
+    //decide if source or target need a join role than we must look if they are also connected with such a role
+    //NO create a new one
+    if (classname.isInstanceOf[IRelationCompartment]) {
+      //1. Handle the Relational Compartment
+      var comp: IRelationCompartment = classname.asInstanceOf[IRelationCompartment]
+      var source = comp.getSource()
+      var target = comp.getTarget()
+      var sourcePlayer = source.player.right.get
+      var targetPlayer = target.player.right.get
+      var sourceRole: AViewRole = getRoleFromList(source) //should work now with join objects
+      var targetRole: AViewRole = getRoleFromList(target) //should work now with join objects 
+      //requirement that a relational compartment cannot play a role in a relational compartment
+      //if one source does not exists then do not create the new relation
+      if (sourceRole != null && targetRole != null) {
+        initRelationRole = true
+        role = getRelationalRole(classname, sourceRole, targetRole)
+        classname play role
+        initRelationRole = false
+      }      
+    } else {
+      //2. Handle the natural and join types
+      initRelationRole = true
+      role = getNaturalRole(classname)
+      classname play role
+      initRelationRole = false
+    }
+    return role
+  }
+
+  protected def isViewable(classname: Object): Boolean
+  protected def getNaturalRole(classname: Object): AViewRole
+  protected def getRelationalRole(classname: Object, sourceRole: AViewRole, targetRole: AViewRole): AViewRole
+
+  protected def getRoleFromList(classname: Object): AViewRole = {
+    relationalRoles.foreach(r => {
+      if (+r == +classname) {
+        return r
+      }
+    })
+    naturalRoles.foreach(r => {
+      if (r.player.right.get.isInstanceOf[IJoinCompartment] && !classname.isInstanceOf[IJoinCompartment]) {
+        if (+r joinEquals(classname)) {
+          return r
+        }
+      } else {
+        if (+r == +classname) {
+          return r
+        }
+      }
+    })
+    return null
+  }
+
+  def printViewRoles(): Unit = {
+    println("-------------------------------------------------------------------")
+    println("View: " + this.getViewName() + " #Roles: " + naturalRoles.size)
+    naturalRoles.foreach { r =>
+      var player = r.player.right.get
+      var playerRoles = player.roles()
+      println("* Player: " + player + " - Role: " + r + " - Size: " + playerRoles.size)
+    }
+    relationalRoles.foreach { r =>
+      var player = r.player.right.get
+      var playerRoles = player.roles()
+      println("# Player: " + player + " - Role: " + r + " - Size: " + playerRoles.size)
+    }
+    println("-------------------------------------------------------------------")
+  }
+
+  def getAllViewElements(): ListBuffer[AViewRole] = naturalRoles
+
+  def containsRole(role: AViewRole): Boolean = naturalRoles.contains(role)
+
+  def getViewName(): String
+
+  private[model_management] def deleteAllRoles(): Unit = {
+    naturalRoles.foreach { r =>
+      r.remove()
+    }
+    relationalRoles.foreach { r =>
+      r.remove()
+    }
+  }
+
+  protected def removeRoleFromList(role: AViewRole): Unit = {
+    if (naturalRoles.contains(role))
+      naturalRoles -= role
+    if (relationalRoles.contains(role))
+      relationalRoles -= role
+  }
+
+  private def initElement(element: Object, relational: Boolean, role: AViewRole): Unit = {
+    //proof if the actual view is in
+    if (!RsumCompartment.isActiveView(this)) {
+      return
+    }
+    if (relational)
+      relationalRoles = relationalRoles :+ role
+    else
+      naturalRoles = naturalRoles :+ role
+
+    //do this only if element is created in the view and not somewhere else  
+    if (!initRelationRole) {
+      var rsumManager: RsumManager = new RsumManager()
+      element play rsumManager
+      element play role
+      rsumManager.manageRsum(element)
+    }
+  }
+
+  private def isActive(): Boolean = RsumCompartment.isActiveView(this)
+
+  abstract class AViewRole extends IViewRole {
+
+    initializeElement()
+
+    protected def isRelational(): Boolean
+
+    protected def getCreationObject(): Object
+
+    private def initializeElement(): Unit = {
+      if (isActive) {
+        if (isRelational) {
+          relationalRoles = relationalRoles :+ this
+        } else {
+          naturalRoles = naturalRoles :+ this
+        }
+        if (!initRelationRole) {
+          var rsumManager: RsumManager = new RsumManager()
+          var obj = getCreationObject
+          obj play rsumManager
+          obj play this
+          rsumManager.manageRsum(obj)
+        }
+      }
+    }
+    
+    protected def getPlayerOfType(obj: Object, t: String): Object = {
+      val source: Object = obj.player.right.get
+      if (source.isInstanceOf[IJoinCompartment]) {
+        val joinNats = source.asInstanceOf[IJoinCompartment].getAllJoinNaturals()
+        joinNats.filter(_.getClass.getSimpleName == t).foreach(n => return n)
+      } else {
+        return source
+      }
+      source
+    }
+
+    protected def deleteElement(): Unit = {
+      +this deleteEverything ()
+    }
+
+    private[model_management] def removeRole(): Unit = {
+      this.remove()
+      IViewCompartment.this.removeRoleFromList(this)
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/IViewTypeInfo.scala b/src/main/scala/org/rosi_project/model_management/sum/IViewTypeInfo.scala
new file mode 100644
index 0000000..0539b46
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/IViewTypeInfo.scala
@@ -0,0 +1,26 @@
+package org.rosi_project.model_management.sum
+
+import org.rosi_project.model_management.sum.join.IJoinInfo
+import org.rosi_project.model_management.core.RsumCompartment
+
+trait IViewTypeInfo {
+  
+  def getViewName(): String
+  
+  protected def getNewViewTypeInstance(): IViewCompartment = {
+    RsumCompartment.addViewTypeInfo(this)
+    var view = RsumCompartment.getActiveViewFromName(this.getViewName())
+    if (view == null) {
+      return RsumCompartment.addActiveView(this.getNewInstance())
+    }
+    else {
+      return view
+    }
+  }
+  
+  def getJoinInfos(): Set[IJoinInfo]
+  
+  private[model_management] def getViewRsumInstance(): IViewCompartment = getNewInstance
+  
+  protected def getNewInstance(): IViewCompartment
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/compartments/IAggregation.scala b/src/main/scala/org/rosi_project/model_management/sum/compartments/IAggregation.scala
new file mode 100644
index 0000000..c5e8b39
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/compartments/IAggregation.scala
@@ -0,0 +1,11 @@
+package org.rosi_project.model_management.sum.compartments
+
+trait IAggregation extends IDirectAggregation {
+  
+  trait IAggregationSource extends IDirectAggregationSource {
+  }
+  
+  trait IAggregationTarget extends IDirectAggregationTarget {
+    def getSource (): ISource = IAggregation.this.source
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/compartments/IAssociation.scala b/src/main/scala/org/rosi_project/model_management/sum/compartments/IAssociation.scala
new file mode 100644
index 0000000..3296872
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/compartments/IAssociation.scala
@@ -0,0 +1,11 @@
+package org.rosi_project.model_management.sum.compartments
+
+trait IAssociation extends IDirectAssoziation {
+  
+  trait IAssociationSource extends IDirectAssoziationSource {
+  }
+  
+  trait IAssociationTarget extends IDirectAssoziationTarget {    
+    def getSource (): ISource = IAssociation.this.source
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/compartments/IComposition.scala b/src/main/scala/org/rosi_project/model_management/sum/compartments/IComposition.scala
new file mode 100644
index 0000000..a85581c
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/compartments/IComposition.scala
@@ -0,0 +1,11 @@
+package org.rosi_project.model_management.sum.compartments
+
+trait IComposition extends IDirectComposition {
+  
+  trait ICompositionSource extends IDirectCompositionSource {    
+  }
+  
+  trait ICompositionTarget extends IDirectCompositionTarget {    
+    def getSource (): ISource = IComposition.this.source
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectAggregation.scala b/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectAggregation.scala
new file mode 100644
index 0000000..6a8e264
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectAggregation.scala
@@ -0,0 +1,10 @@
+package org.rosi_project.model_management.sum.compartments
+
+trait IDirectAggregation extends IRelationCompartment {
+  
+  trait IDirectAggregationSource extends ISource {
+  }
+  
+  trait IDirectAggregationTarget extends ITarget {
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectAssoziation.scala b/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectAssoziation.scala
new file mode 100644
index 0000000..ee8e2e8
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectAssoziation.scala
@@ -0,0 +1,10 @@
+package org.rosi_project.model_management.sum.compartments
+
+trait IDirectAssoziation extends IRelationCompartment {
+  
+  trait IDirectAssoziationSource extends ISource {
+  }
+  
+  trait IDirectAssoziationTarget extends ITarget {
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectComposition.scala b/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectComposition.scala
new file mode 100644
index 0000000..4084544
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/compartments/IDirectComposition.scala
@@ -0,0 +1,32 @@
+package org.rosi_project.model_management.sum.compartments
+
+trait IDirectComposition extends IRelationCompartment {
+  
+  override def deleteCompartment () : Unit = {
+    //println("DeleteCompartment IDirectComposition")
+    if (source != null)
+    {
+      source.remove()
+      source = null;
+    }
+    if (target != null)
+    {
+      var player = target.player
+      if (player.isRight) {
+        var realPlayer = player.right.get
+        target.remove()
+        target = null;
+        +realPlayer deleteEverything()
+      }      
+    }
+    //+this deleteEverything()
+  }
+  
+  trait IDirectCompositionSource extends ISource {
+    override private[model_management] def removeRole(): Unit = +IDirectComposition.this deleteEverything()
+  }
+  
+  trait IDirectCompositionTarget extends ITarget {
+    override private[model_management] def removeRole(): Unit = +IDirectComposition.this deleteEverything()
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/compartments/IRelationCompartment.scala b/src/main/scala/org/rosi_project/model_management/sum/compartments/IRelationCompartment.scala
new file mode 100644
index 0000000..4af7d9c
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/compartments/IRelationCompartment.scala
@@ -0,0 +1,49 @@
+package org.rosi_project.model_management.sum.compartments
+
+import scroll.internal.Compartment
+import org.rosi_project.model_management.sum.roles.IRelationRole
+import org.rosi_project.model_management.core.PlayerSync
+
+trait IRelationCompartment extends PlayerSync {
+  
+  protected var source: ISource = null;
+  protected var target: ITarget = null;
+  
+  //TODO: change again to protected
+  def internalInitialize(): Unit
+  
+  def getTarget(): ITarget = target
+  
+  def getSource(): ISource = source
+  
+  def initialize(): Unit = {
+    if (source == null && target == null)
+      internalInitialize()
+  }
+  
+  def deleteCompartment () : Unit = {  
+    //println("DeletCompartment IRelationCompartment")
+    if (source != null)
+    {
+      source.remove()
+      source = null;
+    }
+    if (target != null)
+    {
+      target.remove()
+      target = null;
+    }
+    //+this deleteEverything()
+  }
+  
+  trait ISource extends IRelationRole {    
+    def getTarget (): ITarget = IRelationCompartment.this.target
+    private[model_management] def removeRole(): Unit = +IRelationCompartment.this deleteEverything()
+    override def getOuterCompartment(): IRelationCompartment = IRelationCompartment.this
+  }
+  
+  trait ITarget extends IRelationRole {    
+    private[model_management] def removeRole(): Unit = +IRelationCompartment.this deleteEverything()
+    override def getOuterCompartment(): IRelationCompartment = IRelationCompartment.this
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/join/IJoinCompartment.scala b/src/main/scala/org/rosi_project/model_management/sum/join/IJoinCompartment.scala
new file mode 100644
index 0000000..5c256dd
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/join/IJoinCompartment.scala
@@ -0,0 +1,123 @@
+package org.rosi_project.model_management.sum.join
+
+import scroll.internal.Compartment
+import org.rosi_project.model_management.sum.roles.IRsumRole
+import org.rosi_project.model_management.core.RsumCompartment.RsumManager
+import org.rosi_project.model_management.core.RsumCompartment
+
+trait IJoinCompartment extends Compartment {
+  var baseObj: Object = null
+  var otherObj: Object = null
+    
+  protected val baseRole: BaseRole = new BaseRole
+  protected val otherRole: OtherRole = new OtherRole
+  
+  def getJoinInfo(): IJoinInfo
+  
+  def getAllJoinNaturals(): Set[Object] = {
+    var bases: Set[Object] = Set(baseObj)
+    if (baseObj.isInstanceOf[IJoinCompartment]) {
+      bases = baseObj.asInstanceOf[IJoinCompartment].getAllJoinNaturals()
+    }
+    if (otherObj != null) {
+      var others: Set[Object] = Set(otherObj)
+      if (otherObj.isInstanceOf[IJoinCompartment]) {
+        others = otherObj.asInstanceOf[IJoinCompartment].getAllJoinNaturals()
+      }
+      return others ++ bases
+    }
+    return bases
+  }
+  
+  def hasEmptyOther(): Boolean = otherObj == null
+  
+  def joinEquals(obj: Object): Boolean = {
+    var baseEquals: Boolean = false
+    var otherEquals: Boolean = false
+    if (baseObj.isInstanceOf[IJoinCompartment]) {
+      baseEquals = baseObj.asInstanceOf[IJoinCompartment].joinEquals(obj)
+    } else {
+      baseEquals = +obj == +baseObj
+    }
+    if (otherObj.isInstanceOf[IJoinCompartment]) {
+      otherEquals = otherObj.asInstanceOf[IJoinCompartment].joinEquals(obj)
+    } else {
+      otherEquals = +obj == +otherObj
+    }
+    baseEquals || otherEquals
+  }
+  
+  def addOther(obj: Object): Unit = {
+    if (obj != null && otherObj == null) {
+      getJoinInfo.addObject(obj)
+      otherObj = obj
+      otherObj play otherRole
+    }
+  }
+  
+  //if deletion comes from down than is stop in roles
+  def deleteCompartment(): Unit = {
+    if (baseObj != null) {
+      getJoinInfo.removeObject(baseObj)
+      baseRole.remove()
+      +baseObj deleteEverything()
+    }
+    if (otherObj != null) {
+      getJoinInfo.removeObject(otherObj)
+      otherRole.remove()
+      +otherObj deleteEverything()
+    }
+  }
+  
+  private[join] def objectInitialization(base: Object, other: Object): Unit = {
+    if (base != null) {
+      getJoinInfo.addObject(base)
+      baseObj = base
+      base play baseRole
+    }
+    if (other != null) {
+      getJoinInfo.addObject(other)
+      otherObj = other
+      other play otherRole      
+    }
+  }
+  
+  protected def initialize(base: Object, other: Object): Unit = {
+    RsumCompartment.combine(this)
+    var rsumManager: RsumManager = null
+    if (base != null) {
+      getJoinInfo.addObject(base)
+      baseObj = base
+      base play baseRole
+      rsumManager = new RsumManager()
+      base play rsumManager
+      rsumManager.manageRsum(base)
+    }
+    if (other != null) {
+      getJoinInfo.addObject(other)
+      otherObj = other
+      other play otherRole
+      rsumManager = new RsumManager()
+      other play rsumManager
+      rsumManager.manageRsum(other)      
+    }
+  } 
+  
+  class BaseRole extends IRsumRole {
+    //deletion comes from down
+    private[model_management] def removeRole(): Unit = {
+      baseRole.remove()
+      otherRole.remove()
+      +IJoinCompartment.this deleteEverything()
+    }
+  }
+  
+  class OtherRole extends IRsumRole {
+    private[model_management] def removeRole(): Unit = {
+      baseRole.remove()
+      otherRole.remove()
+      +IJoinCompartment.this deleteEverything()
+    }
+  }
+  
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/join/IJoinInfo.scala b/src/main/scala/org/rosi_project/model_management/sum/join/IJoinInfo.scala
new file mode 100644
index 0000000..8e25239
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/join/IJoinInfo.scala
@@ -0,0 +1,36 @@
+package org.rosi_project.model_management.sum.join
+
+trait IJoinInfo {
+  
+  private var allPlayers: Set[Object] = Set.empty
+  
+  def addObject(obj: Object): Unit = {
+    allPlayers = allPlayers + obj
+  }
+  
+  def removeObject(obj: Object): Unit = {
+    allPlayers = allPlayers - obj
+  }
+  
+  protected def objectInitialize(join: IJoinCompartment, base: Object, other: Object): Unit = {
+    join.objectInitialization(base, other)
+  }
+  
+  def containsObject(obj: Object): Boolean = allPlayers.contains(obj)
+  
+  def getJoinType(): RsumJoinType.Value  
+  
+  private def canInJoin(obj: Object): Boolean = (isInstanceBaseModel(obj) || isInstanceOtherModel(obj)) && !allPlayers.contains(obj)
+  
+  def canMatchWithNewJoin(obj: Object): Boolean = canInJoin(obj) && !containsObject(obj)
+  
+  def isInstanceBaseModel(obj: Object): Boolean
+  
+  def isInstanceOtherModel(obj: Object): Boolean
+  
+  def matchTwoObjects(b: Object, o: Object): Boolean
+  
+  def getNewInstance(b: Object, o: Object): IJoinCompartment
+  
+  def isInstanceOf(obj: Object): Boolean
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/join/RsumJoinType.scala b/src/main/scala/org/rosi_project/model_management/sum/join/RsumJoinType.scala
new file mode 100644
index 0000000..709ec2e
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/join/RsumJoinType.scala
@@ -0,0 +1,5 @@
+package org.rosi_project.model_management.sum.join
+
+object RsumJoinType extends Enumeration {
+  val outer, natural, theta = Value
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/query/AQuery.scala b/src/main/scala/org/rosi_project/model_management/sum/query/AQuery.scala
new file mode 100644
index 0000000..165cebc
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/query/AQuery.scala
@@ -0,0 +1,102 @@
+package org.rosi_project.model_management.sum.query
+
+import scroll.internal.Compartment
+
+/**
+ * Describes the abstract query compartment with the roles that each query must implement.
+ */
+abstract class AQuery(val name: String) extends Compartment {
+  
+  def deleteQueryResults(): Unit
+  def deleteQueryObjects(): Unit
+  
+  /**
+   * Create ModelJoin syntax for views.
+   */
+  def generateModelJoinFromQuery(): String
+  
+  /**
+   * Add a query role to the underlying object.
+   */
+  def addQueryRole(obj: Object): AQuery#QueryObject
+  
+  /**
+   * Remove a query role from the query.
+   */
+  def removeQueryRole(role: AQuery#QueryObject): Unit
+  
+  /**
+   * Proof if the query has a correct form.
+   * Not more than one connection island.
+   */
+  def isQueryCorrect(): Boolean
+  
+  /**
+   * Running the query and getting a set of sets of result objects.
+   */
+  def runQuery(): Set[Set[Object]]
+  
+  /**
+   * Abstract query object to create the query from example.
+   */
+  abstract class QueryObject() {
+    
+    /**
+     * Label to identify a query object.
+     */
+    var label: String = ""
+    
+    /**
+     * Describes is necessary to be in the results or to be not.
+     */
+    var negated: Boolean = false
+    
+    /**
+     * Important to describe if a transitive closure should be created.
+     */
+    var transitive: Boolean = false
+    
+    /**
+     * Describes how often a connection must exists.
+     */
+    var multi: Int = 1
+    
+    /**
+     * Describes if the elements should be returned in the results or not.
+     */
+    var returned: Boolean = true
+    
+    private var attributeFilters: Set[AttributeFilter] = Set.empty
+      
+    /**
+  	 * Create and add an attribute filter object to a query object.
+   	 */        
+    def addAttributeFilter(attributeName: String, value: String, bigger: CheckingOption.Value): Boolean = {
+      if (attributeName == null || attributeName == "" ||
+        bigger == null || value == null || value == "") {
+        return false
+      }
+      attributeFilters += new AttributeFilter(attributeName, value, bigger)
+      return true
+    }
+    
+    def getAttributeFilters(): Set[AttributeFilter] = attributeFilters
+    
+    def overallConnectionUnit(): Int
+    
+    override def toString(): String = "QO: " + label
+  }  
+  
+  /**
+   * Abstract query results that each element which matches the query gets.
+   */
+  abstract class QueryResult(val matchedQueryObject: QueryObject) {
+    
+    override def toString(): String = "QR: (" + this.player.right.get.toString() + " " + matchedQueryObject + ")"
+  }
+  
+  /**
+   * Should collect information about the attributes a query element must have
+   */
+  class AttributeFilter(val attributeName: String, val value: String, val checking: CheckingOption.Value) {}
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/query/CheckingOption.scala b/src/main/scala/org/rosi_project/model_management/sum/query/CheckingOption.scala
new file mode 100644
index 0000000..9d6ceff
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/query/CheckingOption.scala
@@ -0,0 +1,5 @@
+package org.rosi_project.model_management.sum.query
+
+object CheckingOption extends Enumeration {
+  val equalsCheck, biggerThan, smallerThan = Value
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/query/IQueryViewCompartment.scala b/src/main/scala/org/rosi_project/model_management/sum/query/IQueryViewCompartment.scala
new file mode 100644
index 0000000..462693e
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/query/IQueryViewCompartment.scala
@@ -0,0 +1,138 @@
+package org.rosi_project.model_management.sum.query
+
+import scroll.internal.Compartment
+import scala.collection.mutable.ListBuffer
+import scala.collection.mutable.Set
+import org.rosi_project.model_management.core.RsumCompartment
+import org.rosi_project.model_management.sum.compartments.IRelationCompartment
+
+trait IQueryViewCompartment extends Compartment {
+  
+  private var name: String = ""
+  private var query: Query = null
+  
+  RsumCompartment.combine(this)
+  
+  protected def init(n: String): Unit = {
+    name = n
+    query = new Query(n)
+  }
+  
+  private var naturalRoles = Set[AQueryViewRole]()
+  private var relationalRoles = Set[AQueryViewRole]()
+  
+  def getName(): String = name
+  
+  def getQuery(): Query = query
+  
+  /**
+   * Get a map with the simple names of all elements 
+   * and the connected elements in the view.
+   */
+  def getMapOfElements(): Map[String, Set[AQueryViewRole]] = {
+    var result: Map[String, Set[AQueryViewRole]] = Map.empty
+    naturalRoles.foreach(n => {
+      if (result.contains(n.getClass.getSimpleName)) {
+        result(n.getClass.getSimpleName) += n
+      } else {
+        result = result + (n.getClass.getSimpleName -> Set(n))
+      }
+    })
+    result
+  }
+  
+  /**
+   * Get all elements with the specific simple name.
+   */
+  def getElementsWithClassName(s: String): Set[AQueryViewRole] = {
+    var result: Set[AQueryViewRole] = Set.empty
+    naturalRoles.foreach(n => {
+      if (n.getClass.getSimpleName == s) {
+        result += n
+      }
+    })
+    result
+  }  
+  
+  /**
+   * Get all elements with the same type from the view.
+   */
+  def getElementsWithExample[A <: AQueryViewRole](a: A): Set[A] = {
+    var result: Set[A] = Set.empty
+    naturalRoles.foreach(n => {
+      if (n.getClass.getName == a.getClass.getName) {
+        result += n.asInstanceOf[A]
+      }
+    })
+    result
+  }
+  
+  protected def getRoleFromList(classname: Object): AQueryViewRole = {
+    relationalRoles.foreach { r =>
+      if (+r == +classname) {
+        return r
+      }
+    }
+    naturalRoles.foreach { r =>
+      if (+r == +classname) {
+        return r
+      }
+    }
+    return null
+  }
+
+  def printViewRoles(): Unit = {
+    println("-------------------------------------------------------------------")
+    println("QueryView: " + name + " #Roles: " + naturalRoles.size)
+    naturalRoles.foreach { r =>
+      var player = r.player.right.get
+      var playerRoles = player.roles()
+      println("* Player: " + player + " - Role: " + r + " - Size: " + playerRoles.size)
+    }
+    relationalRoles.foreach { r =>
+      var player = r.player.right.get
+      var playerRoles = player.roles()
+      println("# Player: " + player + " - Role: " + r + " - Size: " + playerRoles.size)
+    }
+    println("-------------------------------------------------------------------")
+  }
+  
+  def getAllViewElements(): Set[AQueryViewRole] = naturalRoles
+  
+  def containsRole(role: AQueryViewRole): Boolean = naturalRoles.contains(role)
+  
+  abstract class AQueryViewRole {  
+    
+    protected var connected: AQuery#QueryObject = null 
+    
+    initializeElement()
+    
+    protected def isRelational(): Boolean
+    
+    protected def getCreationObject(): Object
+    
+    def getQueryObject: AQuery#QueryObject = connected  
+
+    private def initializeElement(): Unit = {
+      val obj = getCreationObject
+      if (isRelational) {
+        relationalRoles += this
+        val rel = obj.asInstanceOf[IRelationCompartment]
+        RsumCompartment.combine(rel)
+        rel.internalInitialize()
+      } else {
+        naturalRoles += this
+      }
+      connected = query.addQueryRole(obj)
+      obj play this
+    }      
+  
+    protected def deleteElement(): Unit = {
+      if (isRelational) {
+        +this deleteCompartment()
+      }
+      this.remove()
+      query.removeQueryRole(connected)
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/query/ModelJoinContainer.scala b/src/main/scala/org/rosi_project/model_management/sum/query/ModelJoinContainer.scala
new file mode 100644
index 0000000..a53ad57
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/query/ModelJoinContainer.scala
@@ -0,0 +1,5 @@
+package org.rosi_project.model_management.sum.query
+
+class ModelJoinContainer(val name: String, val source: String, val target: String) {
+  
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/query/Query.scala b/src/main/scala/org/rosi_project/model_management/sum/query/Query.scala
new file mode 100644
index 0000000..dbb13df
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/query/Query.scala
@@ -0,0 +1,624 @@
+package org.rosi_project.model_management.sum.query
+
+import scroll.internal.Compartment
+import org.rosi_project.model_management.core.RsumCompartment
+import org.rosi_project.model_management.sum.compartments.IRelationCompartment
+import org.rosi_project.model_management.sum.roles.IRelationRole
+import org.rosi_project.model_management.util.query.ModelJoinCreator
+import org.rosi_project.model_sync.model_join.representation.grammar.CompoundKeepBuilder
+
+/**
+ * Special query implementation for the query interface that works on the RSUM.
+ */
+class Query(_name: String) extends AQuery(_name) {
+  
+  RsumCompartment.combine(this)
+  
+  private var queryRelRoles: Set[QueryRelObject] = Set.empty
+  private var queryNatRoles: Set[QueryNatObject] = Set.empty
+  
+  private var queryRelResults: Set[QueryRelResult] = Set.empty
+  private var queryNatResults: Set[QueryNatResult] = Set.empty
+    
+  private def getQueryNatRole(obj: Object): QueryNatObject = {
+    //queryNatRoles.filter(+_ == +obj).foreach(return _)
+    queryNatRoles.foreach(q => {
+      if (+obj == +q) {
+        return q
+      }
+    })
+    return null
+  }
+    
+  private def getQueryRelRole(obj: Object): QueryRelObject = {
+    //queryRelRoles.filter(+_ == +obj).foreach(return _)
+    queryRelRoles.foreach(q => {
+      if (+obj == +q) {
+        return q
+      }
+    })
+    return null
+  }
+  
+  private def getNatResultRole(player: Object, queryObject: QueryNatObject): QueryNatResult = {
+    //queryNatResults.filter(r => r.connectedQueryObject == queryObject && +player == +r).foreach(return _)
+    queryNatResults.foreach(r => {
+      if (r.connectedQueryObject == queryObject && +player == +r) {
+        return r
+      }
+    })
+    return null
+  }
+  
+  def generateModelJoinFromQuery(): String = {
+    val creator = new ModelJoinCreator
+    /*val start = queryNatRoles.head
+    val playerStart: Object = start.player.right.get
+    playerStart.getClass.getPackage.getName
+    playerStart.getClass.getSimpleName*/
+    var relHelper: Set[ModelJoinContainer] = Set.empty
+    var relNames: Set[String] = Set.empty
+    var sources: Set[String] = Set.empty
+    var targets: Set[String] = Set.empty
+    
+    var names: Set[String] = Set.empty 
+    var connected: Map[String, Object] = Map()
+    
+    queryNatRoles.foreach(q => {
+      val playerStart: Object = q.player.right.get
+      println(playerStart.getClass.getName)
+      names += playerStart.getClass.getName      
+    })
+    queryRelRoles.foreach(q => {
+      val playerStart: Object = q.player.right.get
+      val playerSource: Object = q.source.player.right.get
+      val playerTarget: Object = q.target.player.right.get
+      println("+" + playerStart.getClass.getName)
+      println(playerSource.getClass.getName)
+      println(playerTarget.getClass.getName)
+      if (!relNames.contains(playerStart.getClass.getName)) {
+        relNames += playerStart.getClass.getName
+        sources += playerSource.getClass.getName
+        targets += playerTarget.getClass.getName
+        relHelper += new ModelJoinContainer(playerStart.getClass.getName, playerSource.getClass.getName, playerTarget.getClass.getName)
+        if (!connected.contains(playerSource.getClass.getName)) {
+          connected += (playerSource.getClass.getName -> creator.createNaturalJoin(playerSource.getClass.getName))
+        }
+        connected += (playerTarget.getClass.getName -> creator.createOutgoingReference(playerTarget.getClass.getName, playerStart.getClass.getSimpleName).asInstanceOf[Object])
+      }
+    })
+    
+    val start = sources.filter(!targets.contains(_)).head
+    val builder = creator.createNaturalJoin(start)
+    relHelper.filter(_.source == start).foreach(r => {
+      
+    })
+    ""
+  }
+  
+  def deleteQueryResults(): Unit = {
+    queryRelResults.foreach(_.remove())
+    queryRelResults = Set.empty
+    queryNatResults.foreach(_.remove())
+    queryNatResults = Set.empty
+  }  
+    
+  def deleteQueryObjects(): Unit = {
+    queryRelRoles.foreach(_.remove())
+    queryRelRoles = Set.empty
+    queryNatRoles.foreach(_.remove())
+    queryNatRoles = Set.empty
+  }
+  
+  def isQueryCorrect(): Boolean = {
+    //check if the query is correct and does not contain more close islands
+    queryRelRoles.foreach(qo => {
+      return qo.overallConnectionUnit() == (queryRelRoles.size + queryNatRoles.size)
+    })
+    queryNatRoles.foreach(qo => {
+      return qo.overallConnectionUnit() == (queryRelRoles.size + queryNatRoles.size)
+    })
+    return true
+  }
+  
+  def removeQueryRole(role: AQuery#QueryObject): Unit = {
+    if (role.isInstanceOf[QueryNatObject]) {
+      queryNatRoles -= role.asInstanceOf[QueryNatObject]
+    }
+    if (role.isInstanceOf[QueryRelObject]) {
+      queryRelRoles -= role.asInstanceOf[QueryRelObject]
+    }
+  }
+  
+  def addQueryRole(obj: Object): AQuery#QueryObject = {
+    val relResult = getQueryRelRole(obj)
+    if (relResult != null) return relResult
+    val natResult = getQueryNatRole(obj)
+    if (natResult != null) return natResult
+    //get player
+    val playerObj = obj.player.getOrElse(obj)
+    //difference between relation and natural
+    if (playerObj.isInstanceOf[IRelationCompartment]) {
+      val refComp = playerObj.asInstanceOf[IRelationCompartment]
+      this.combine(refComp)
+      val sourceRole: QueryNatObject = getQueryNatRole(refComp.getSource())
+      val targetRole: QueryNatObject = getQueryNatRole(refComp.getTarget())
+      if (sourceRole == null || targetRole == null) {
+        println("--- Error: Relational compartment can only be added if source and target are added before")
+        return null
+      }
+      val newRole = new QueryRelObject(sourceRole, targetRole)
+      queryRelRoles += newRole    
+      playerObj play newRole
+      return newRole
+    } else {
+      val newRole = new QueryNatObject()
+      queryNatRoles += newRole    
+      playerObj play newRole
+      return newRole
+    }  
+  }  
+  
+  def runQuery(): Set[Set[Object]] = {
+    //delete at the end
+    var forDeletionQueryResults: Set[QueryNatResult] = Set.empty
+    //immediate values
+    var deleteNatResults: Set[QueryNatResult] = Set.empty   
+    var doSomething = true
+    //output value
+    var result: Set[Set[Object]] = Set.empty
+    
+    //###add query results to all elements that can be results because of connection properties
+    //...iterate over non negated query relations and add result roles if necessary 
+    queryRelRoles.filter(!_.isNegated()).foreach(queryRel => {
+      val playerQueryRel: IRelationCompartment = queryRel.player.right.get.asInstanceOf[IRelationCompartment]
+      RsumCompartment.getRelations().foreach(rsumRel => {
+        if (playerQueryRel.getClass.isInstance(rsumRel)) {
+          //search if their are existing results if not create new ones
+          val rsumNatSource: Object = rsumRel.getSource().player.right.get
+          val rsumNatTarget: Object = rsumRel.getTarget().player.right.get
+          var queryNatResultSource: QueryNatResult = getNatResultRole(rsumNatSource, queryRel.source)
+          if (queryNatResultSource == null) {
+            queryNatResultSource = new QueryNatResult(queryRel.source)  
+            rsumNatSource play queryNatResultSource
+            queryNatResults += queryNatResultSource
+          }          
+          var queryNatResultTarget: QueryNatResult = getNatResultRole(rsumNatTarget, queryRel.target)
+          if (queryNatResultTarget == null) {
+            queryNatResultTarget = new QueryNatResult(queryRel.target)  
+            rsumNatTarget play queryNatResultTarget
+            queryNatResults += queryNatResultTarget
+          }
+          //connect them in a new relation result
+          val queryRelResult: QueryRelResult = new QueryRelResult(queryRel, queryNatResultSource, queryNatResultTarget, false) 
+          rsumRel play queryRelResult     
+          queryRelResults += queryRelResult
+          
+          //if transitive add new relation to separate list to add them at the end
+          if (queryRel.isTransitive) {
+            //set only source new because target must be old one, transitive query means always target same
+            queryNatResultSource = getNatResultRole(rsumNatSource, queryRel.target)
+            if (queryNatResultSource == null) {
+              queryNatResultSource = new QueryNatResult(queryRel.target)  
+              rsumNatSource play queryNatResultSource
+              queryNatResults += queryNatResultSource
+            }
+            val transitiveQueryRelResult: QueryRelResult = new QueryRelResult(queryRel, queryNatResultSource, queryNatResultTarget, true) 
+            rsumRel play transitiveQueryRelResult     
+            queryRelResults += transitiveQueryRelResult
+          }
+        }
+      })      
+    })
+    
+    //...iterate over negated related roles and search all opposite naturals that do not implement this rel
+    queryRelRoles.filter(_.isNegated()).foreach(queryRel => {
+      val playerQueryRel: IRelationCompartment = queryRel.player.right.get.asInstanceOf[IRelationCompartment]
+      var playerQueryNat: Object = null
+      if (queryRel.source.negated) {
+        playerQueryNat = playerQueryRel.getSource.player.right.get 
+      } else {
+        playerQueryNat = playerQueryRel.getTarget.player.right.get 
+      }
+      //source or target negated, search for negated class
+      RsumCompartment.getNaturals().foreach(rsumNat => {
+        if (playerQueryNat.getClass.isInstance(rsumNat))
+        {
+          var goodElement: Boolean = true;
+          //filtered roles of the natural type
+          var roles: Set[IRelationRole] = Set.empty 
+          if (queryRel.source.negated) {
+            roles = rsumNat.roles().filter(_.isInstanceOf[IRelationCompartment#ITarget]).toSet.asInstanceOf[Set[IRelationRole]] 
+          } else {
+            roles = rsumNat.roles().filter(_.isInstanceOf[IRelationCompartment#ISource]).toSet.asInstanceOf[Set[IRelationRole]] 
+          }
+          //if we find a role that works than we can not add this natural to the results
+          roles.foreach(r => {            
+            val outerRelComp = r.getOuterCompartment()
+            //println("COMP: " + outerRelComp + " " + playerQueryRel + " " + playerQueryRel.getClass.isInstance(outerRelComp))
+            if (playerQueryRel.getClass.isInstance(outerRelComp)) {
+              //we can not use this element
+              goodElement = false
+            }
+          })
+          //if we do not find a compatible element in this natural role we can add it
+          if (goodElement) {
+            var queryNatRole: QueryNatObject = null
+            if (queryRel.source.negated) {
+              queryNatRole = queryRel.target            
+            } else {
+              queryNatRole = queryRel.source
+            }
+            var queryNatResult: QueryNatResult = getNatResultRole(rsumNat, queryNatRole)
+            if (queryNatResult == null) {
+              queryNatResult = new QueryNatResult(queryNatRole) 
+              rsumNat play queryNatResult
+              queryNatResults += queryNatResult
+            }
+            if (queryRel.source.negated) {
+              queryNatResult.increaseTargetNegated()
+            } else {
+              queryNatResult.increaseSourceNegated()
+            }          
+          }
+        }
+      })
+    })    
+    
+    //...iterate over all query naturals without a connection and add result roles if necessary
+    queryNatRoles.filter(_.connectionSize == 0).foreach(queryNat => {
+      //connected one are visited in the part before
+      val playerQueryNat: Object = queryNat.player.right.get
+      RsumCompartment.getNaturals().foreach(rsumNat => {
+        if (playerQueryNat.isInstanceOf[QueryHelper]) {
+          if (playerQueryNat.equals(rsumNat)) {
+            var queryNatResult: QueryNatResult = getNatResultRole(rsumNat, queryNat)
+            if (queryNatResult == null) {
+              queryNatResult = new QueryNatResult(queryNat)  
+              rsumNat play queryNatResult
+              queryNatResults += queryNatResult
+            }
+          }
+        } else {
+          if (playerQueryNat.getClass.isInstance(rsumNat)) {
+            var queryNatResult: QueryNatResult = getNatResultRole(rsumNat, queryNat)
+            if (queryNatResult == null) {
+              queryNatResult = new QueryNatResult(queryNat)  
+              rsumNat play queryNatResult
+              queryNatResults += queryNatResult
+            }
+          }
+        }        
+      })
+    })
+    
+    //###proof correctness of results
+    //...proof attribute correctness once
+    queryNatResults.filter(!_.proofAttributes).foreach(deleteNatResults += _)
+    //delete them
+    deleteNatResults.foreach(queryResultNat => {
+      queryNatResults -= queryResultNat
+      forDeletionQueryResults += queryResultNat
+      queryResultNat.removeConnections()
+    })
+    
+    //...proof the correctness of the query results and delete non correct ones
+    while (doSomething) {
+      deleteNatResults = Set.empty      
+      //proof the connection correctness
+      queryNatResults.filter(!_.proofConnections).foreach(deleteNatResults += _)
+      
+      //do as long as everything is correct
+      doSomething = !deleteNatResults.isEmpty
+      //delete them
+      deleteNatResults.foreach(queryResultNat => {
+        queryNatResults -= queryResultNat
+        forDeletionQueryResults += queryResultNat
+        queryResultNat.removeConnections()   
+      })
+    }
+    
+    //###make good outputs from the current query results
+    //...only correct elements should now play result roles and are in the list    
+    var combinedResult: Set[QueryCombinedResult] = queryRelResults.filter(!_.transitive).map(_.createCombinedResult())
+    
+    //...combine the result elements to good output units
+    doSomething = true
+    while (doSomething) {
+      doSomething = false
+      combinedResult.foreach(combined => {
+        queryRelResults.foreach(rel => {
+          if (rel.source == combined.target && !combined.contains(rel.target)) {
+            //add in the back
+            combined.addBack(rel.target)
+            doSomething = true
+          } else {
+            if (rel.target == combined.source && !combined.contains(rel.source)) {
+              //add in the front
+              combined.addFront(rel.source)
+              doSomething = true
+            }            
+          }
+        })    
+      })  
+      //delete duplicated elements
+      combinedResult = combinedResult.groupBy(_.getBetween).map(_._2.head).toSet
+      //combinedResult.distinct
+    }
+    
+    //create only results with tuples
+    /*queryRelResults.foreach(rel => {
+      var rSet: Set[Object] = Set.empty
+      if (rel.source.connectedQueryObject.returned) {
+        rSet += rel.source.player.right.get
+      }
+      if (rel.target.connectedQueryObject.returned) {
+        rSet += rel.target.player.right.get
+      }
+      result += rSet
+    })*/
+    
+    //...bring the output format to the reals one
+    combinedResult.foreach(combined => {
+      var rSet: Set[Object] = Set.empty
+      combined.getBetween.foreach(queryNat => {
+        if (queryNat.connectedQueryObject.returned) {
+          rSet += queryNat.player.right.get
+        }
+      })
+      result += rSet
+    })
+    
+    //...add also single results
+    queryNatResults.foreach(queryResultNat => {
+      if (!queryResultNat.isConnected() && queryResultNat.connectedQueryObject.returned) {
+        result += Set(queryResultNat.player.right.get)
+      }
+    })
+    
+    //...delete now really all not needed result roles 
+    forDeletionQueryResults.foreach(_.remove())
+    
+    return result
+  }
+  
+  override def toString(): String = name + ": " + isQueryCorrect + " Rs: " + queryNatRoles + " " + queryRelRoles
+  
+  /**
+   * Query object specialized for naturals in the RSUM.
+   */
+  class QueryNatObject() extends QueryObject() {
+    private var sourceRelations: Set[QueryRelObject] = Set.empty
+    private var targetRelations: Set[QueryRelObject] = Set.empty    
+    
+    def addSourceRelation(rel: QueryRelObject): Unit = {
+      sourceRelations += rel
+    }    
+    
+    def removeSourceRelation(rel: QueryRelObject): Unit = {
+      sourceRelations -= rel
+    }
+    
+    def getSourceRelationsSize(): Int = sourceRelations.filter(!_.isNegated()).map(_.multiTarget).sum //sum up multi value not use size
+    def getNegatedSourceRelationsSize(): Int = sourceRelations.filter(_.isNegated()).size
+    
+    def addTargetRelation(rel: QueryRelObject): Unit = {
+      targetRelations += rel
+    }
+    
+    def removeTargetRelation(rel: QueryRelObject): Unit = {
+      targetRelations -= rel
+    }
+    
+    def getTargetRelationsSize(): Int = targetRelations.filter(!_.isNegated()).map(_.multiSource).sum
+    def getNegatedTargetRelationsSize(): Int = targetRelations.filter(_.isNegated()).size
+    
+    def connectionSize(): Int = targetRelations.size + sourceRelations.size
+    
+    def overallConnectionUnit(): Int = {
+      var visitedRel: Set[QueryRelObject] = Set.empty
+      var visitedNat: Set[QueryNatObject] = Set(this)
+      var unVisitedRel: Set[QueryRelObject] = targetRelations ++ sourceRelations
+      var unVisitedNat: Set[QueryNatObject] = Set.empty
+      while (!unVisitedRel.isEmpty || !unVisitedNat.isEmpty) {
+        //run over all unvisited relations 
+        unVisitedRel.foreach(rel => {
+          if (!visitedNat.contains(rel.source))
+            unVisitedNat += rel.source 
+          if (!visitedNat.contains(rel.target))
+            unVisitedNat += rel.target
+        })
+        visitedRel ++= unVisitedRel
+        unVisitedRel = Set.empty
+        //run over all unvisited naturals 
+        unVisitedNat.foreach(nat => {
+          nat.sourceRelations.filter(!visitedRel.contains(_)).foreach(unVisitedRel += _)
+          nat.targetRelations.filter(!visitedRel.contains(_)).foreach(unVisitedRel += _)
+        })
+        visitedNat ++= unVisitedNat
+        unVisitedNat = Set.empty        
+      }
+      return visitedRel.size + visitedNat.size
+    }
+    
+    override def toString: String = "QON: " + label + " C: " + connectionSize
+  }
+    
+  /**
+   * Query object specialized for relational compartments in the RSUM.
+   */
+  class QueryRelObject(val source: QueryNatObject, val target: QueryNatObject) extends QueryObject() {
+
+    def isNegated(): Boolean = source.negated || target.negated
+    def isTransitive(): Boolean = target.transitive
+    def multiTarget(): Int = target.multi
+    def multiSource(): Int = source.multi
+    
+    source.addSourceRelation(this)
+    target.addTargetRelation(this)
+    
+    def overallConnectionUnit(): Int = source.overallConnectionUnit()
+    
+    override def toString: String = "QOR: " + source.label + "-" + target.label
+  }
+    
+  /**
+   * Query result roles for natural query roles.
+   */
+  class QueryNatResult(val connectedQueryObject: QueryNatObject) extends QueryResult(connectedQueryObject) {
+    private var sourceRelations: Set[QueryRelResult] = Set.empty
+    private var targetRelations: Set[QueryRelResult] = Set.empty
+    
+    private var negatedSources: Int = 0
+    private var negatedTargets: Int = 0
+    
+    def increaseSourceNegated(): Unit = { negatedSources += 1 }
+    def decreaseSourceNegated(): Unit = { negatedSources -= 1 }
+    
+    def increaseTargetNegated(): Unit = { negatedTargets += 1 }
+    def decreaseTargetNegated(): Unit = { negatedTargets -= 1 }
+    
+    /**
+     * Proof if the player has all the necessary attributes with its values.
+     */
+    def proofAttributes(): Boolean = {
+      val player: Object = this.player.right.get   
+      var returnValue = true 
+      connectedQueryObject.getAttributeFilters.foreach(a => {
+        try {
+          //player.getClass.getMethods.foreach(f => println(f.toString))
+          //println(player.getClass.getMethod("name").getReturnType) //getName
+          val met = player.getClass.getMethod(a.attributeName)        
+          val result: String = met.invoke(player).asInstanceOf[String]
+          a.checking match {
+            case CheckingOption.equalsCheck => if (result != a.value) returnValue = false
+            case CheckingOption.biggerThan => if (result <= a.value) returnValue = false
+            case CheckingOption.smallerThan => if (result >= a.value) returnValue = false
+            case _ =>
+          }
+        } catch {
+          case _: Throwable => { 
+            println("!!! No attribute with this name!!!") 
+            return false
+          }
+        }
+      })
+      return returnValue
+    }
+    
+    /**
+     * Proof if the number of connections is equals to the related query object.
+     */
+    def proofConnections(): Boolean = {
+      //TODO: proof also the number of types and not only the numbers
+      //println("S: " + _connectedQueryObject.getSourceRelationsSize() + " T: " + _connectedQueryObject.getTargetRelationsSize() + " NS: " + _connectedQueryObject.getNegatedSourceRelationsSize() + " NT: " + _connectedQueryObject.getNegatedTargetRelationsSize() + " Con: " + _connectedQueryObject)
+      //println("S: " + getSourceRelationsSize() + " T: " + getTargetRelationsSize() + " NS: " + negatedSources + " NT: " + negatedTargets + " This: " + this)
+      if (getSourceRelationsSize >= connectedQueryObject.getSourceRelationsSize() 
+          && getTargetRelationsSize >= connectedQueryObject.getTargetRelationsSize()
+          && negatedSources >= connectedQueryObject.getNegatedSourceRelationsSize()
+          && negatedTargets >= connectedQueryObject.getNegatedTargetRelationsSize()) {
+        return true
+      }
+      return false
+    }
+    
+    def addSourceRelation(rel: QueryRelResult): Unit = {
+      sourceRelations += rel
+    }
+    
+    def removeSourceRelation(rel: QueryRelResult): Unit = {
+      sourceRelations -= rel
+    }
+    
+    def getSourceRelationsSize(): Int = sourceRelations.size
+    
+    def addTargetRelation(rel: QueryRelResult): Unit = {
+      targetRelations += rel
+    }
+    
+    def removeTargetRelation(rel: QueryRelResult): Unit = {
+      targetRelations -= rel
+    }
+    
+    def getTargetRelationsSize(): Int = targetRelations.size
+        
+    def isConnected(): Boolean = (targetRelations.size + sourceRelations.size) > 0
+    
+    def removeConnections(): Unit = {
+      sourceRelations.foreach(rel => {        
+        rel.target.removeTargetRelation(rel)
+        queryRelResults -= rel
+        rel.remove()
+      })      
+      targetRelations.foreach(rel => {        
+        rel.source.removeSourceRelation(rel)
+        queryRelResults -= rel
+        rel.remove()
+      })
+      sourceRelations = Set.empty
+      targetRelations = Set.empty    
+      negatedSources = 0
+      negatedTargets = 0
+    }
+  }
+  
+  /**
+   * Query result roles for relation query roles.
+   */
+  class QueryRelResult(val connectedQueryObject: QueryRelObject, val source: QueryNatResult, val target: QueryNatResult, val transitive: Boolean) extends QueryResult(connectedQueryObject) {
+    //only add this relation to the connect results if it is not transitive
+    if (!transitive) {
+      source.addSourceRelation(this)
+      target.addTargetRelation(this)
+    }
+    
+    /**
+     * Create a new combined result which is a copy of this one.
+     */
+    def createCombinedResult(): QueryCombinedResult = new QueryCombinedResult(source, target)
+  }
+  
+  /**
+   * Helper class to connect the results to a chain.
+   */
+  class QueryCombinedResult(var source: QueryNatResult, var target: QueryNatResult) {
+    
+    //list of all query results that are connected
+    private var between: Seq[QueryNatResult] = Seq(source, target)
+    
+    def getBetween(): Seq[QueryNatResult] = between
+    
+    def addFront(newIn: QueryNatResult): Unit = {
+      between = newIn +: between
+      source = newIn
+    }
+    
+    def addBack(newIn: QueryNatResult): Unit = {
+      between = between :+ newIn
+      target = newIn
+    }
+    
+    def contains(result: QueryNatResult): Boolean = ( between.contains(result) )
+    
+    private def getSize(): Int = between.size    
+    
+    protected def canEqual(other: Any): Boolean = other.isInstanceOf[QueryCombinedResult]
+    
+    override def equals(other: Any): Boolean = other match {
+      case that: QueryCombinedResult => {
+        if (that canEqual this) {
+          between.foreach(b => {
+            if (!that.contains(b))
+              return false
+          })
+          return that.getSize == this.getSize()
+        } else {
+          return false
+        }
+      }
+      case _ => return false
+    }
+    
+    override def toString(): String = "QCR: (" + between + ")"
+  }  
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/query/QueryHelper.scala b/src/main/scala/org/rosi_project/model_management/sum/query/QueryHelper.scala
new file mode 100644
index 0000000..496be48
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/query/QueryHelper.scala
@@ -0,0 +1,5 @@
+package org.rosi_project.model_management.sum.query
+
+trait QueryHelper {
+  
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/roles/IExtensionRole.scala b/src/main/scala/org/rosi_project/model_management/sum/roles/IExtensionRole.scala
new file mode 100644
index 0000000..ed7738f
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/roles/IExtensionRole.scala
@@ -0,0 +1,6 @@
+package org.rosi_project.model_management.sum.roles
+
+trait IExtensionRole extends IRsumRole {
+  
+  def runExtension() : Unit
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/roles/IRelationRole.scala b/src/main/scala/org/rosi_project/model_management/sum/roles/IRelationRole.scala
new file mode 100644
index 0000000..20e4c62
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/roles/IRelationRole.scala
@@ -0,0 +1,9 @@
+package org.rosi_project.model_management.sum.roles
+
+import org.rosi_project.model_management.sum.compartments.IRelationCompartment
+
+trait IRelationRole extends IRsumRole {
+  
+  //TODO: look if this method needs different visibility
+  def getOuterCompartment() : IRelationCompartment
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/roles/IRsumRole.scala b/src/main/scala/org/rosi_project/model_management/sum/roles/IRsumRole.scala
new file mode 100644
index 0000000..e0a13d0
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/roles/IRsumRole.scala
@@ -0,0 +1,6 @@
+package org.rosi_project.model_management.sum.roles
+
+trait IRsumRole {
+  
+  private[model_management] def removeRole(): Unit
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sum/roles/IViewRole.scala b/src/main/scala/org/rosi_project/model_management/sum/roles/IViewRole.scala
new file mode 100644
index 0000000..73093fc
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sum/roles/IViewRole.scala
@@ -0,0 +1,5 @@
+package org.rosi_project.model_management.sum.roles
+
+trait IViewRole extends IRsumRole {
+      
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sync/IConstructionCompartment.scala b/src/main/scala/org/rosi_project/model_management/sync/IConstructionCompartment.scala
new file mode 100644
index 0000000..9fd3371
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/IConstructionCompartment.scala
@@ -0,0 +1,161 @@
+package org.rosi_project.model_management.sync
+
+import scroll.internal.Compartment
+
+import org.rosi_project.model_management.core._
+import org.rosi_project.model_management.sync.helper.ConstructionContainer
+import org.rosi_project.model_management.sync.roles.IConstructor
+
+/**
+ * Interface for each construction rule.
+ */
+trait IConstructionCompartment extends Compartment {
+
+  /**
+   * Return a role instance that handles the construction process for the object.
+   */
+  def getConstructorForClassName(classname: Object): IConstructor
+
+  def getRuleName: String
+
+  private def addExtensionRoles(containers: Set[ConstructionContainer]): Unit = {
+    containers.foreach { cc =>
+      if (cc.isConstructed) {
+        SynchronizationCompartment.getExtensions().foreach { e =>
+          var role = e.getExtensionForClassName(cc.getPlayerInstance())
+          if (role != null) {
+            cc.getManagerInstance() play role
+          }
+        }
+      }
+    }
+  }
+
+  private def notifyExtensionRoles(containers: Set[ConstructionContainer]): Unit = {
+    if (!SynchronizationCompartment.getExtensions().isEmpty) {
+      containers.foreach { cc =>
+        if (cc.isConstructed) {
+          var playerInstance = cc.getPlayerInstance()
+          +playerInstance insertNotification ()
+        }
+      }
+    }
+  }
+
+  /**
+   * Add the RoleManager roles from the synchronization compartment if necessary
+   */
+  protected def addManagerRoles(containers: Set[ConstructionContainer]): Unit = {
+    containers.foreach { cc =>
+      if (cc.isConstructed && !cc.isStartElement) {
+        cc.getPlayerInstance play cc.getManagerInstance
+      }
+    }
+  }
+
+  /**
+   * Add the delete roles for the elements in the ConstructionContainers.
+   */
+  protected def addDeleteRoles(containers: Set[ConstructionContainer]): Unit = {
+    containers.foreach { cc =>
+      if (cc.isConstructed) {
+        cc.getManagerInstance() play SynchronizationCompartment.getDestructionRule().getDestructorForClassName(cc.getPlayerInstance())
+      }
+    }
+  }
+
+  /**
+   * Add the related RoleManagers for the elements in the ConstructionContainers.
+   */
+  protected def addRelatedRoleManager(containers: Set[ConstructionContainer]): Unit = {
+    containers.foreach { cc =>
+      containers.foreach { inner =>
+        cc.getManagerInstance.addRelatedManager(inner.getManagerInstance)
+      }
+    }
+  }
+
+  /**
+   * Combine the SynchronizationCompartment with all Players from the ConstructionContainers.
+   */
+  protected def synchronizeCompartments(containers: Set[ConstructionContainer]): Unit = {
+    containers.foreach { cc =>
+      if (cc.isConstructed() && !cc.isStartElement()) {
+        SynchronizationCompartment combine cc.getPlayerInstance
+      }
+    }
+  }
+
+  /**
+   * Create the Synchronization mechanisms for the elements in the ConstructionContainers.
+   */
+  protected def bindSynchronizationRules(containers: Set[ConstructionContainer]): Unit = {
+    SynchronizationCompartment.getSyncRules().foreach { s =>
+      var sync: ISyncCompartment = null
+      //Proof all container for integration
+      containers.foreach { cc =>
+        if (s.isNextIntegration(cc.getPlayerInstance)) {
+          if (cc.isConstructed && sync == null) {
+            sync = s.getNewInstance
+          }
+          if (sync != null) {
+            cc.getManagerInstance() play sync.getNextIntegrationRole(cc.getPlayerInstance())
+          }
+        }
+      }
+      if (sync != null)
+        SynchronizationCompartment combine sync
+    }
+  }
+
+  /**
+   * Fill the test lists with all Players from the ConstructionContainers.
+   */
+  protected def fillTestLists(containers: Set[ConstructionContainer]): Unit = {
+    containers.foreach { cc =>
+      ModelElementLists.addElement(cc.getPlayerInstance)
+    }
+  }
+
+  protected def makeCompleteConstructionProcess(containers: Set[ConstructionContainer]): Unit = {
+    //first synchronize new compartments
+    //var t1 = System.nanoTime()
+    this.synchronizeCompartments(containers)
+    //var t2 = System.nanoTime()
+
+    //add role manager and relations
+    this.addManagerRoles(containers)
+    //var t3 = System.nanoTime()
+    this.addRelatedRoleManager(containers)
+    //var t4 = System.nanoTime()
+
+    //binding of roles
+    //this.addDeleteRoles(containers)
+    this.bindSynchronizationRules(containers)
+    //var t5 = System.nanoTime()
+    this.addExtensionRoles(containers)
+    //var t6 = System.nanoTime()
+
+    //notify extensions
+    this.notifyExtensionRoles(containers)
+    //var t7 = System.nanoTime()
+
+    //fill test list
+    this.fillTestLists(containers)
+    /*var t8 = System.nanoTime()
+    println("1: " + (t2 - t1))
+    println("2: " + (t3 - t2))
+    println("3: " + (t4 - t3))
+    println("4: " + (t5 - t4))
+    println("5: " + (t6 - t5))
+    println("6: " + (t7 - t6))
+    println("7: " + (t8 - t7))*/
+
+    /*println("Construction ++++++++++++++++++++++++++++++++++++++++++++------------------------++++++++++++++++++++++++++++++++++++++++++++++++++++")
+    containers.foreach { cc =>
+      println((cc.getPlayerInstance).roles())
+    }
+    println("Construction ++++++++++++++++++++++++++++++++++++++++++++------------------------++++++++++++++++++++++++++++++++++++++++++++++++++++")*/
+  }
+
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/IDestructionCompartment.scala b/src/main/scala/org/rosi_project/model_management/sync/IDestructionCompartment.scala
new file mode 100644
index 0000000..4034957
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/IDestructionCompartment.scala
@@ -0,0 +1,18 @@
+package org.rosi_project.model_management.sync
+
+import org.rosi_project.model_management.sync.roles.IDestructor
+import scroll.internal.Compartment
+
+/**
+  * Interface for each destruction rule.
+  */
+trait IDestructionCompartment extends Compartment {
+
+  /**
+    * Return a role instance that handles the destruction process for the object.
+    */
+  def getDestructorForClassName(classname: Object) : IDestructor
+  
+  def getRuleName: String
+  
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/IExtenstionCompartment.scala b/src/main/scala/org/rosi_project/model_management/sync/IExtenstionCompartment.scala
new file mode 100644
index 0000000..ffa94fa
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/IExtenstionCompartment.scala
@@ -0,0 +1,20 @@
+package org.rosi_project.model_management.sync
+
+import org.rosi_project.model_management.sync.roles.IExtension
+import scroll.internal.Compartment
+
+/**
+  * Interface for each extension rule.
+  */
+trait IExtenstionCompartment extends Compartment {
+  
+  /**
+    * Return a role instance that handles the extension process for the object.
+    */
+  def getExtensionForClassName(classname: Object) : IExtension
+  
+  /**
+   * Return a unique name that describes this extension.
+   */
+  def getExtensionName() : String
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sync/IIntegrationCompartment.scala b/src/main/scala/org/rosi_project/model_management/sync/IIntegrationCompartment.scala
new file mode 100644
index 0000000..6ab5927
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/IIntegrationCompartment.scala
@@ -0,0 +1,198 @@
+package org.rosi_project.model_management.sync
+
+import scroll.internal.Compartment
+import org.rosi_project.model_management.sync.roles.ISyncRole
+import org.rosi_project.model_management.sync.roles.IIntegrator
+import org.rosi_project.model_management.sync.helper.IntegrationContainer
+import org.rosi_project.model_management.core._
+import org.rosi_project.model_management.sync.roles.IRoleManager
+
+/**
+ * Interface for each integration rule.
+ */
+trait IIntegrationCompartment extends Compartment {
+
+  /**
+   * Return a role instance that handles the integration process for a new model to this instance.
+   */
+  def getIntegratorForClassName(classname: Object): IIntegrator
+
+  /**
+   * Return a role instance that handles the integration process for a new relational compartment.
+   */
+  def getRelationalIntegratorsForClassName(classname: Object): IIntegrator
+
+  def finalEditFunction(): Unit
+
+  protected def connectTargetElementWithSourceElementes(target: PlayerSync, sourceList: Set[PlayerSync]): Unit = {
+    var containers: Set[IntegrationContainer] = Set.empty
+    //Create Containers
+    sourceList.foreach(e => {
+      containers += new IntegrationContainer(target, e)
+    })
+    //Finish Creation
+    makeCompleteIntegrationProcess(containers)
+  }
+
+  protected def connectTargetElementWithSourceElemente(target: PlayerSync, source: PlayerSync): Unit = {
+    var containers: Set[IntegrationContainer] = Set.empty
+    //Create Container
+    containers += new IntegrationContainer(target, source)
+    //Finish Creation
+    makeCompleteIntegrationProcess(containers)
+  }
+
+  private def addExtensionRoles(containers: Set[IntegrationContainer]): Unit = {
+    containers.filter(_.newManagerConnection).foreach { cc =>
+      SynchronizationCompartment.getExtensions().foreach { e =>
+        var role = e.getExtensionForClassName(cc.getNewPlayerInstance())
+        if (role != null) {
+          cc.getNewManagerInstance() play role
+        }
+      }
+    }
+  }
+
+  private def notifyExtensionRoles(containers: Set[IntegrationContainer]): Unit = {
+    if (!SynchronizationCompartment.getExtensions().isEmpty) {
+      containers.filter(_.newManagerConnection).foreach { cc =>
+        var playerInstance = cc.getNewPlayerInstance()
+        +playerInstance insertNotification ()
+      }
+    }
+  }
+
+  /**
+   * Add Manager roles to all constructed elements.
+   */
+  private def addManagerRoles(containers: Set[IntegrationContainer]): Unit = {
+    containers.filter(_.newManagerConnection).foreach { cc =>
+      cc.getNewPlayerInstance() play cc.getNewManagerInstance()
+    }
+  }
+
+  /**
+   * Add the delete roles for the elements in the IntegrationContainer.
+   */
+  private def addDeleteRoles(containers: Set[IntegrationContainer]): Unit = {
+    containers.filter(_.newManagerConnection).foreach { cc =>
+      cc.getNewManagerInstance() play SynchronizationCompartment.getDestructionRule().getDestructorForClassName(cc.getNewPlayerInstance())
+    }
+  }
+
+  /**
+   * Add the related RoleManagers for the elements in the IntegrationContainer.
+   */
+  private def addRelatedRoleManager(containers: Set[IntegrationContainer]): Unit = {
+    containers.foreach { cc =>
+      val oldPlayer = cc.getOldPlayerInstance()
+      if (cc.simpleRelatedManagerConnection) {
+        val manager: IRoleManager = +oldPlayer getManager ()
+        if (manager != null) {
+          manager.makeRelated(cc.getNewManagerInstance())
+        }
+      } else {
+        val allManager: Set[IRoleManager] = +oldPlayer getAllManager ()
+        if (allManager != null) {
+          allManager.foreach { r =>
+            r.makeRelated(cc.getNewManagerInstance())
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * Combine the SynchronizationCompartment with all Players from the IntegrationContainer.
+   */
+  private def synchronizeCompartments(containers: Set[IntegrationContainer]): Unit = {
+    containers.filter(_.newManagerConnection).foreach { cc =>
+      SynchronizationCompartment combine cc.getNewPlayerInstance()
+    }
+  }
+
+  /**
+   * Create the Synchronization mechanisms for the elements in the IntegrationContainer.
+   */
+  private def bindSynchronizationRules(containers: Set[IntegrationContainer]): Unit = {
+    containers.filter(_.newManagerConnection).foreach { cc =>
+      val oldPlayer = cc.getOldPlayerInstance()
+      val allManager: Set[IRoleManager] = +oldPlayer getAllManager ()
+      if (allManager != null) {
+        allManager.foreach { rm =>
+          val roles = rm.roles()
+          //println("Player: " + rm.player + "Roles: " + roles)
+          roles.foreach { r =>
+            if (r.isInstanceOf[ISyncRole]) {
+              val syncRole: ISyncRole = r.asInstanceOf[ISyncRole]
+              val syncComp: ISyncCompartment = syncRole.getOuterCompartment
+              //println("+~~~Sync: " + syncRole + " " + syncComp)
+              if (!syncComp.containsSyncer(cc.getNewPlayerInstance()) && syncComp.isFirstIntegration(r.player.right.get)) {
+                val newRole = syncComp.getNextIntegrationRole(cc.getNewPlayerInstance())
+                //println("+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~New Role: " + newRole)
+                if (newRole != null) {
+                  cc.getNewManagerInstance() play newRole
+                  allManager.foreach { internalSync =>
+                    val playerSync = internalSync.player.right.get
+                    if (syncComp.isNextIntegration(playerSync)) {
+                      if (!syncComp.containsSyncer(playerSync)) {
+                        internalSync play syncComp.getNextIntegrationRole(playerSync)
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * Fill the test lists with all Players from the IntegrationContainer.
+   */
+  private def fillTestLists(containers: Set[IntegrationContainer]): Unit = {
+    containers.filter(_.newManagerConnection).foreach { cc =>
+      ModelElementLists.addElement(cc.getNewPlayerInstance())
+    }
+  }
+
+  /**
+   * Do the integration process automatically.
+   */
+  protected def makeCompleteIntegrationProcess(containers: Set[IntegrationContainer]): Unit = {
+    containers.foreach(cc => {
+      if (cc.getNewManagerInstance() == null) {
+        val newPlayer = cc.getNewPlayerInstance()
+        val manager = +newPlayer getManager ()
+        if (manager.isRight && manager.right.get != null) {
+          cc.newManagerConnection = false
+          cc.newManagerInstance = manager.right.get
+        } else {
+          cc.newManagerConnection = true
+          cc.newManagerInstance = SynchronizationCompartment.createRoleManager()
+        }
+      }
+    })
+
+    //add new role managers to the new players
+    this.addManagerRoles(containers)
+    //this.addDeleteRoles(containers)
+    this.addRelatedRoleManager(containers)
+    //combines the new compartments with the existing ones
+    this.synchronizeCompartments(containers)
+    this.bindSynchronizationRules(containers)
+    //add extension roles and notify them because of creation
+    this.addExtensionRoles(containers)
+    this.notifyExtensionRoles(containers)
+    //add the new model element to the elements list
+    this.fillTestLists(containers)
+    /*println("Integrate +++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++")
+    containers.foreach { cc =>
+      println((cc.getNewPlayerInstance()).roles())
+      println((cc.getOldPlayerInstance()).roles())
+    }
+    println("Integrate ++++++++++++++++++++++++++++++++++++++++++++------------------------++++++++++++++++++++++++++++++++++++++++++++++++++++")*/
+  }
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/ISyncCompartment.scala b/src/main/scala/org/rosi_project/model_management/sync/ISyncCompartment.scala
new file mode 100644
index 0000000..4b50e08
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/ISyncCompartment.scala
@@ -0,0 +1,101 @@
+package org.rosi_project.model_management.sync
+
+import org.rosi_project.model_management.sync.roles.ISyncRole
+import scroll.internal.Compartment
+
+import scala.collection.immutable.Set
+
+/**
+  * Interface for each synchronization rule.
+  */
+trait ISyncCompartment extends Compartment {
+
+  /**
+    * Variable to proof if he is actual in a sync process.
+    */
+  protected var doSync = false
+  /**
+    * All sync roles of this synchronization rule.
+    */
+  private var syncer: Set[ISyncRole] = Set.empty
+
+  /**
+    * Get roles for all integration classes.
+    */
+  protected def getNextRole(classname: Object) : ISyncRole = {
+    getFirstRole(classname)
+  }
+  
+  /**
+    * Get roles for integration classes. Should give less roles than getNextRole.
+    */
+  protected def getFirstRole(classname: Object) : ISyncRole
+  
+  def containsSyncer(value: Object): Boolean = {
+    syncer.foreach { s =>
+      if (+s == +value) {
+      //if (s.player.equals(value.player)) {
+        return true;
+      }
+    }
+    return false
+  }
+
+  def addSyncer(sync: ISyncRole): Unit = {
+    syncer += sync
+  }
+
+  /**
+    * Get the list of all sync roles.
+    */
+  def getSyncer(): Set[ISyncRole] = syncer
+
+  /**
+    * Clear the list of all sync roles.
+    */
+  def clearSyncer(): Unit = {
+    syncer = Set.empty
+  }
+
+  /**
+    * Get roles for integration classes. Should give less roles than getNextRole.
+    */
+  def getFirstIntegrationRole(classname: Object) : ISyncRole = {
+    val role: ISyncRole = this.getFirstRole(classname)
+    if (role != null)
+      this.addSyncer(role)
+    role
+  }
+
+  /**
+    * Get all roles for integration classes.
+    */
+  def getNextIntegrationRole(classname: Object) : ISyncRole = {
+    val role: ISyncRole = this.getNextRole(classname)
+    if (role != null)
+      this.addSyncer(role)
+    role
+  }
+
+  /**
+    * Get roles for all integration classes.
+    */
+  def isFirstIntegration(classname: Object): Boolean
+
+  /**
+    * Get boolean if next integration
+    */
+  def isNextIntegration(classname: Object): Boolean = {
+    isFirstIntegration(classname)
+  }
+
+  /**
+    * Create a new instance of this class.
+    */
+  def getNewInstance: ISyncCompartment
+
+  /**
+    * Get the name of this rule.
+    */
+  def getRuleName: String
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/ISynchronizationCompartment.scala b/src/main/scala/org/rosi_project/model_management/sync/ISynchronizationCompartment.scala
new file mode 100644
index 0000000..367abac
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/ISynchronizationCompartment.scala
@@ -0,0 +1,22 @@
+package org.rosi_project.model_management.sync
+
+import org.rosi_project.model_management.sync.roles.IRoleManager
+import scroll.internal.MultiCompartment
+
+/**
+  * Interface for the synchronization management compartment.
+  */
+trait ISynchronizationCompartment extends MultiCompartment {
+
+  protected var underConstruction: Boolean = false
+
+  /**
+    * Is currently in a process where new elements could be created.
+    */
+  def isUnderConstruction(): Boolean = underConstruction
+
+  /**
+    * Get a new RoleManager instance.
+    */
+  def createRoleManager(): IRoleManager
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/compartments/GeneralDestructor.scala b/src/main/scala/org/rosi_project/model_management/sync/compartments/GeneralDestructor.scala
new file mode 100644
index 0000000..b9a0db9
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/compartments/GeneralDestructor.scala
@@ -0,0 +1,73 @@
+package org.rosi_project.model_management.sync.compartments
+
+import org.rosi_project.model_management.core.PlayerSync
+import org.rosi_project.model_management.sync.IDestructionCompartment
+import org.rosi_project.model_management.sync.roles.{ IDestructor, IRoleManager }
+
+import scala.collection.mutable.ListBuffer
+import org.rosi_project.model_management.core.ModelElementLists
+
+/**
+ * Calls the destruction method from all related RoleManagers and then deletes all roles from this player.
+ */
+object GeneralDestructor extends IDestructionCompartment {
+
+  override def getDestructorForClassName(classname: Object): IDestructor = new DeleteRole
+
+  override def getRuleName: String = "GeneralDestructor"
+  
+  class DeleteRole() extends IDestructor {
+
+    def deleteRoleFunction(): Unit = {
+      //remove this manager from all related ones
+      +this removeThisManager()
+      //clear list of related manager
+      +this clearRelatedManager()
+      //send notification about deletion
+      +this deletionNotification()
+
+      //delete all roles this element has
+      val player = this.player
+      if (player.isRight) {
+        val test: PlayerSync = player.right.get.asInstanceOf[PlayerSync]
+        ModelElementLists.removeElement(test)
+        val roles = test.roles()
+        roles.foreach { r =>
+          r.remove()
+        }
+      }
+    }
+  }
+
+  class DeleteRoleAndConnections() extends IDestructor {
+
+    def deleteRoleFunction(): Unit = {
+      //get the list of related manager
+      var relatedManagers: Set[IRoleManager] = (+this).getRelatedManager()
+      
+      //clear all lists from the related managers
+      (+this).clearListsOfRelatedManager()
+
+      //delete also all related elements
+      relatedManagers.foreach { m =>
+        (+m).deleteObjectFromSynchro()
+      }
+
+      //send notification about deletion
+      (+this).deletionNotification()
+
+      //clear now the related manager list
+      (+this).clearRelatedManager()
+      //delete all roles this element has
+      val player = this.player
+      if (player.isRight) {
+        val test: PlayerSync = player.right.get.asInstanceOf[PlayerSync]
+        ModelElementLists.removeElement(test)
+        val roles = test.roles()
+        roles.foreach { r =>
+          r.remove()
+        }
+      }
+    }
+  }
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/compartments/ModelElementsListGCExtension.scala b/src/main/scala/org/rosi_project/model_management/sync/compartments/ModelElementsListGCExtension.scala
new file mode 100644
index 0000000..1bba7d4
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/compartments/ModelElementsListGCExtension.scala
@@ -0,0 +1,58 @@
+package org.rosi_project.model_management.sync.compartments
+
+import org.rosi_project.model_management.core.ModelElementLists
+import org.rosi_project.model_management.sync.IExtenstionCompartment
+import org.rosi_project.model_management.sync.roles.IExtension
+import scroll.internal.errors.SCROLLErrors.TypeError
+
+/** Extension to delete instances which are removed from the synchronization context from the
+  * [[ModelElementLists]]. This extension therefore functions as some kind of garbage collector,
+  * hence the name.
+  *
+  * @author Rico Bergmann
+  */
+object ModelElementsListGCExtension extends IExtenstionCompartment {
+
+  /**
+    * Return a role instance that handles the extension process for the object.
+    */
+  override def getExtensionForClassName(classname: Object): IExtension = new GarbageCollector
+
+  /**
+    * Return a unique name that describes this extension.
+    */
+  override def getExtensionName(): String = "ModelElementsList GarbageCollector"
+
+  /** The actual extension.
+    */
+  class GarbageCollector extends IExtension {
+
+    /**
+      * Function to react on insertion behavior.
+      */
+    override def notifyInsertion(): Unit = {
+      ;
+    }
+
+    /**
+      * Function to react on deletion behavior.
+      */
+    override def notifyDeletion(): Unit = {      
+      val player: Either[TypeError, AnyRef] = this.player
+
+      player.right.foreach { obj =>
+        println(s"Removing $obj")
+        ModelElementLists.removeElement(obj)
+      }
+
+    }
+
+    /**
+      * Function to react on update behavior.
+      */
+    override def notifyUpdate(): Unit = {
+      ;
+    }
+  }
+
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/compartments/SuppressingConstructionCompartment.scala b/src/main/scala/org/rosi_project/model_management/sync/compartments/SuppressingConstructionCompartment.scala
new file mode 100644
index 0000000..987002f
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/compartments/SuppressingConstructionCompartment.scala
@@ -0,0 +1,30 @@
+package org.rosi_project.model_management.sync.compartments
+
+import org.rosi_project.model_management.core.{PlayerSync, SynchronizationCompartment}
+import org.rosi_project.model_management.sync.IConstructionCompartment
+import org.rosi_project.model_management.sync.roles.{IConstructor, IRoleManager}
+
+/** An [[IConstructionCompartment]] which will not create any related instances in other models
+  *
+  * @author Rico Bergmann
+  */
+object SuppressingConstructionCompartment extends IConstructionCompartment {
+
+  override def getConstructorForClassName(classname: Object): IConstructor = new Suppressor
+
+  override def getRuleName: String = "SuppressingConstructionCompartment"
+  
+  /** The constructor will only create the necessary `plays` relationships with the synchronization
+    * services
+    */
+  class Suppressor extends IConstructor {
+
+    override def construct(comp: PlayerSync, man: IRoleManager): Unit = {
+      // just set up the player
+      createContainerElement(start=true, con=true, comp, man)
+      makeCompleteConstructionProcess(containers)
+    }
+
+  }
+
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/helper/ConstructionContainer.scala b/src/main/scala/org/rosi_project/model_management/sync/helper/ConstructionContainer.scala
new file mode 100644
index 0000000..55ebd19
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/helper/ConstructionContainer.scala
@@ -0,0 +1,29 @@
+package org.rosi_project.model_management.sync.helper
+
+import org.rosi_project.model_management.sync.roles.IRoleManager
+import org.rosi_project.model_management.core.PlayerSync
+
+/**
+  * Helper class for all construction processes to manage standard work loads.
+  */
+class ConstructionContainer(val startElement: Boolean, val constructed: Boolean, val player: PlayerSync, val manager: IRoleManager) {
+  /**
+    * Returns true if it is the start construction element.
+    */
+  def isStartElement(): Boolean = startElement
+
+  /**
+    * Return true if it is new constructed.
+    */
+  def isConstructed(): Boolean = constructed
+
+  /**
+    * Get the PlayerSync instance of this element.
+    */
+  def getPlayerInstance(): PlayerSync = player
+
+  /**
+    * Get the RoleManager instance of this element
+    */
+  def getManagerInstance(): IRoleManager = manager
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/helper/IntegrationContainer.scala b/src/main/scala/org/rosi_project/model_management/sync/helper/IntegrationContainer.scala
new file mode 100644
index 0000000..3237c18
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/helper/IntegrationContainer.scala
@@ -0,0 +1,29 @@
+package org.rosi_project.model_management.sync.helper
+
+import org.rosi_project.model_management.sync.roles.IRoleManager
+import org.rosi_project.model_management.core.PlayerSync
+
+/**
+  * Helper class for all integration processes to manage standard work loads.
+  */
+class IntegrationContainer (val newPlayerInstance: PlayerSync, val oldPlayerInstance: PlayerSync) {
+  
+  var simpleRelatedManagerConnection: Boolean = true
+  var newManagerConnection: Boolean = true
+  var newManagerInstance: IRoleManager = null
+  
+  /**
+   * Get the new PlayerSync instance of this element.
+   */
+  def getNewPlayerInstance(): PlayerSync = newPlayerInstance
+  
+  /**
+   * Get the new RoleManager instance of this element
+   */
+  def getNewManagerInstance(): IRoleManager = newManagerInstance
+  
+  /**
+   * Get the old PlayerSync instance of this element.
+   */
+  def getOldPlayerInstance(): PlayerSync = oldPlayerInstance  
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sync/roles/IConstructor.scala b/src/main/scala/org/rosi_project/model_management/sync/roles/IConstructor.scala
new file mode 100644
index 0000000..dcfacf1
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/roles/IConstructor.scala
@@ -0,0 +1,29 @@
+package org.rosi_project.model_management.sync.roles
+
+import org.rosi_project.model_management.core.PlayerSync
+import org.rosi_project.model_management.sync.helper.ConstructionContainer
+
+/**
+  * Interface for the constructor roles.
+  */
+trait IConstructor {
+
+  /**
+    * Container list for the construction process.
+    */
+  protected var containers: Set[ConstructionContainer] = Set.empty
+
+  /**
+    * Create a container element with the incoming configuration.
+    */
+  protected def createContainerElement(start: Boolean, con: Boolean, play: PlayerSync, man: IRoleManager): Unit = {
+    if (play == null)
+      return
+    containers += new ConstructionContainer(start, con, play, man)
+  }
+
+  /**
+    * General construction function for external call.
+    */
+  def construct(comp: PlayerSync, man: IRoleManager): Unit
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/roles/IDestructor.scala b/src/main/scala/org/rosi_project/model_management/sync/roles/IDestructor.scala
new file mode 100644
index 0000000..dd979c8
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/roles/IDestructor.scala
@@ -0,0 +1,12 @@
+package org.rosi_project.model_management.sync.roles
+
+/**
+  * Interface for the destructor roles.
+  */
+trait IDestructor {
+  
+  /**
+    * General destruction function for external call.
+    */
+  def deleteRoleFunction(): Unit
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/roles/IExtension.scala b/src/main/scala/org/rosi_project/model_management/sync/roles/IExtension.scala
new file mode 100644
index 0000000..95363b5
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/roles/IExtension.scala
@@ -0,0 +1,22 @@
+package org.rosi_project.model_management.sync.roles
+
+/**
+  * Interface for the extension roles.
+  */
+trait IExtension {
+  
+  /**
+   * Function to react on insertion behavior.
+   */
+  def notifyInsertion(): Unit
+  
+  /**
+   * Function to react on deletion behavior.
+   */
+  def notifyDeletion(): Unit
+  
+  /**
+   * Function to react on update behavior.
+   */
+  def notifyUpdate(): Unit
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sync/roles/IIntegrator.scala b/src/main/scala/org/rosi_project/model_management/sync/roles/IIntegrator.scala
new file mode 100644
index 0000000..33336c0
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/roles/IIntegrator.scala
@@ -0,0 +1,30 @@
+package org.rosi_project.model_management.sync.roles
+
+import org.rosi_project.model_management.sync.helper.IntegrationContainer
+import org.rosi_project.model_management.core.PlayerSync
+import org.rosi_project.model_management.core.SynchronizationCompartment
+
+/**
+  * Interface for the integration roles.
+  */
+trait IIntegrator {
+
+  /**
+   * Container list for the integration process.
+   */
+  protected var containers: Set[IntegrationContainer] = Set.empty
+
+  /**
+   * Create a container element with the incoming configuration.
+   */
+  protected def createContainerElement(newPlayer: PlayerSync, oldPlayer: PlayerSync): Unit = {
+    if (newPlayer == null || oldPlayer == null)
+      return
+    containers += new IntegrationContainer(newPlayer, oldPlayer)
+  }
+  
+  /**
+   * General integration function for external call.
+   */
+  def integrate(comp: PlayerSync) : PlayerSync
+}
\ No newline at end of file
diff --git a/src/main/scala/org/rosi_project/model_management/sync/roles/IRoleManager.scala b/src/main/scala/org/rosi_project/model_management/sync/roles/IRoleManager.scala
new file mode 100644
index 0000000..fa466ee
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/roles/IRoleManager.scala
@@ -0,0 +1,103 @@
+package org.rosi_project.model_management.sync.roles
+
+import org.rosi_project.model_management.core.PlayerSync
+
+import scala.collection.mutable.ListBuffer
+
+/**
+ * Interface for the manager roles.
+ */
+trait IRoleManager {
+
+  private var relatedManager: Set[IRoleManager] = Set.empty
+
+  /**
+   * Add a related manager to the list.
+   */
+  def addRelatedManager(related: IRoleManager): Unit = {
+    if (related == null || related.equals(this))
+      return
+    relatedManager += related
+  }
+
+  /**
+   * Get the list of related managers.
+   */
+  def getRelatedManager(): Set[IRoleManager] = relatedManager
+
+  /**
+   * Get this manager.
+   */
+  def getManager(): IRoleManager = this
+
+  /**
+   * Get this manager plus related manager.
+   */
+  def getAllManager(): Set[IRoleManager] = relatedManager + this
+
+  /**
+   * Remove a related manager from the list.
+   */
+  def removeRelatedManager(related: IRoleManager): Unit = {
+    if (related != null)
+      relatedManager -= related
+  }
+
+  /**
+   * Remove this manager from the lists of all related managers.
+   */
+  def removeThisManager(): Unit = {
+    relatedManager.foreach { m =>
+      m.removeRelatedManager(this)
+    }
+  }
+
+  /**
+   * Clear the lists of all related managers,
+   */
+  def clearListsOfRelatedManager(): Unit = {
+    relatedManager.foreach { m =>
+      m.clearRelatedManager()
+    }
+  }
+
+  /**
+   * Clear the list of this role manager.
+   */
+  def clearRelatedManager(): Unit = {
+    relatedManager = Set.empty
+  }
+
+  /**
+   * Create a relation between two IRoleManager instances.
+   */
+  def makeRelated(relate: IRoleManager): Unit = {
+    this.addRelatedManager(relate)
+    relate.addRelatedManager(this)
+  }
+
+  /**
+   * General manage function for external call.
+   */
+  def manage(value: PlayerSync): Unit
+
+  /**
+   * Function to manage the deletion.
+   */
+  def deleteManage(value: PlayerSync): Unit
+
+  /**
+   * Get related PlayerSync with the specific name.
+   */
+  def getRelatedClassFromName(name: String): PlayerSync
+
+  /**
+   * Create a relation between two IRoleManager and RoleManager of other PlayerSync instances.
+   */
+  def makePlayerSyncRelated(playerSync: PlayerSync): Unit
+
+  /**
+   * Print all Manager only for debug.
+   */
+  def printAllManager(): Unit
+}
diff --git a/src/main/scala/org/rosi_project/model_management/sync/roles/ISyncRole.scala b/src/main/scala/org/rosi_project/model_management/sync/roles/ISyncRole.scala
new file mode 100644
index 0000000..7682043
--- /dev/null
+++ b/src/main/scala/org/rosi_project/model_management/sync/roles/ISyncRole.scala
@@ -0,0 +1,14 @@
+package org.rosi_project.model_management.sync.roles
+
+import org.rosi_project.model_management.sync.ISyncCompartment
+
+/**
+  * Interface for the synchronization roles.
+  */
+trait ISyncRole {
+  
+  /**
+    * Function to get the synchronization compartment from a role instance.
+    */
+  def getOuterCompartment: ISyncCompartment
+}
diff --git a/src/main/scala/query/AMLLanguageQuery.scala b/src/main/scala/query/AMLLanguageQuery.scala
new file mode 100644
index 0000000..a13b9fb
--- /dev/null
+++ b/src/main/scala/query/AMLLanguageQuery.scala
@@ -0,0 +1,446 @@
+package query
+
+import aml.SystemUnitClassInternalElementsInternalElement
+import aml.InternalElement
+import aml.SystemUnitClassAttributesAttribute
+import aml.CAEXObject
+import aml.Attribute
+import org.rosi_project.model_management.sum.query.IQueryViewCompartment
+import aml.InstanceHierarchyInternalElementsInternalElement
+import aml.InternalElementBaseSystemUnitSystemUnitClass
+import aml.HelperCAEXObject
+import aml.InstanceHierarchy
+import org.rosi_project.model_management.sum.query.CheckingOption
+import aml.SystemUnitClass
+
+class AMLLanguageQuery extends IQueryViewCompartment {
+
+  init("AMLLanguageQuery")
+
+  def createSystemUnitClass(): AMLLanguageQuery#SystemUnitClassRole = {
+    return new SystemUnitClassRole()
+  }
+
+  def createInternalElement(): AMLLanguageQuery#InternalElementRole = {
+    return new InternalElementRole()
+  }
+
+  def createCAEXObject(): AMLLanguageQuery#CAEXObjectRole = {
+    return new CAEXObjectRole()
+  }
+
+  def createAttribute(): AMLLanguageQuery#AttributeRole = {
+    return new AttributeRole()
+  }
+
+  def createInstanceHierarchy(): AMLLanguageQuery#InstanceHierarchyRole = {
+    return new InstanceHierarchyRole()
+  }
+
+  override def toString(): String = {
+    "AMLLanguageQuery:"
+  }
+
+  class SystemUnitClassRole extends CAEXObjectRole() {
+
+    private var internalElements: Set[AMLLanguageQuery#SystemUnitClassInternalElementsInternalElementRole] = Set.empty
+    private var attributes: Set[AMLLanguageQuery#SystemUnitClassAttributesAttributeRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new SystemUnitClass(null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      internalElements.foreach(_.deleteElement())
+      attributes.foreach(_.deleteElement())
+    }
+
+    private[AMLLanguageQuery] def removeInternalElementsIntern(v: AMLLanguageQuery#SystemUnitClassInternalElementsInternalElementRole): Unit = {
+      internalElements -= v
+    }
+
+    private[AMLLanguageQuery] def setInternalElementsIntern(v: AMLLanguageQuery#SystemUnitClassInternalElementsInternalElementRole): Unit = {
+      internalElements += v
+    }
+
+    def getInternalElements(): Set[AMLLanguageQuery#InternalElementRole] = {
+      var vs: Set[AMLLanguageQuery#InternalElementRole] = Set.empty
+      internalElements.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasInternalElements(v: AMLLanguageQuery#InternalElementRole): Boolean = {
+      return getInternalElements.contains(v)
+    }
+
+    def addInternalElements(v: AMLLanguageQuery#InternalElementRole): Boolean = {
+      if (hasInternalElements(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new SystemUnitClassInternalElementsInternalElementRole(this, v)
+      return true
+    }
+
+    def removeInternalElements(v: AMLLanguageQuery#InternalElementRole): Boolean = {
+      if (!hasInternalElements(v)) return false
+      internalElements.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[AMLLanguageQuery] def removeAttributesIntern(v: AMLLanguageQuery#SystemUnitClassAttributesAttributeRole): Unit = {
+      attributes -= v
+    }
+
+    private[AMLLanguageQuery] def setAttributesIntern(v: AMLLanguageQuery#SystemUnitClassAttributesAttributeRole): Unit = {
+      attributes += v
+    }
+
+    def getAttributes(): Set[AMLLanguageQuery#AttributeRole] = {
+      var vs: Set[AMLLanguageQuery#AttributeRole] = Set.empty
+      attributes.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasAttributes(v: AMLLanguageQuery#AttributeRole): Boolean = {
+      return getAttributes.contains(v)
+    }
+
+    def addAttributes(v: AMLLanguageQuery#AttributeRole): Boolean = {
+      if (hasAttributes(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new SystemUnitClassAttributesAttributeRole(this, v)
+      return true
+    }
+
+    def removeAttributes(v: AMLLanguageQuery#AttributeRole): Boolean = {
+      if (!hasAttributes(v)) return false
+      attributes.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override def toString(): String = {
+      "SystemUnitClassRole:"
+    }
+
+  }
+
+  class AttributeRole extends CAEXObjectRole() {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Attribute(null, null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getValueView(): String = {
+      +this getValue ()
+    }
+
+    def setValueView(value: String, check: CheckingOption.Value): Unit = {
+      +this setValue (value)
+      connected.addAttributeFilter("value", value.toString(), check)
+    }
+
+    override def toString(): String = {
+      "AttributeRole:"
+    }
+
+  }
+
+  class InstanceHierarchyRole extends CAEXObjectRole() {
+
+    private var internalElements: Set[AMLLanguageQuery#InstanceHierarchyInternalElementsInternalElementRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new InstanceHierarchy(null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      internalElements.foreach(_.deleteElement())
+    }
+
+    private[AMLLanguageQuery] def removeInternalElementsIntern(v: AMLLanguageQuery#InstanceHierarchyInternalElementsInternalElementRole): Unit = {
+      internalElements -= v
+    }
+
+    private[AMLLanguageQuery] def setInternalElementsIntern(v: AMLLanguageQuery#InstanceHierarchyInternalElementsInternalElementRole): Unit = {
+      internalElements += v
+    }
+
+    def getInternalElements(): Set[AMLLanguageQuery#InternalElementRole] = {
+      var vs: Set[AMLLanguageQuery#InternalElementRole] = Set.empty
+      internalElements.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasInternalElements(v: AMLLanguageQuery#InternalElementRole): Boolean = {
+      return getInternalElements.contains(v)
+    }
+
+    def addInternalElements(v: AMLLanguageQuery#InternalElementRole): Boolean = {
+      if (hasInternalElements(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new InstanceHierarchyInternalElementsInternalElementRole(this, v)
+      return true
+    }
+
+    def removeInternalElements(v: AMLLanguageQuery#InternalElementRole): Boolean = {
+      if (!hasInternalElements(v)) return false
+      internalElements.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override def toString(): String = {
+      "InstanceHierarchyRole:"
+    }
+
+  }
+
+  class CAEXObjectRole extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new HelperCAEXObject(null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String, check: CheckingOption.Value): Unit = {
+      +this setName (name)
+      connected.addAttributeFilter("name", name.toString(), check)
+    }
+
+    def getIdView(): String = {
+      +this getId ()
+    }
+
+    def setIdView(id: String, check: CheckingOption.Value): Unit = {
+      +this setId (id)
+      connected.addAttributeFilter("id", id.toString(), check)
+    }
+
+    override def toString(): String = {
+      "CAEXObjectRole:"
+    }
+
+  }
+
+  class InternalElementRole extends SystemUnitClassRole() {
+
+    private var baseSystemUnit: AMLLanguageQuery#InternalElementBaseSystemUnitSystemUnitClassRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new InternalElement(null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      if (baseSystemUnit != null) baseSystemUnit.deleteElement()
+    }
+
+    private[AMLLanguageQuery] def removeBaseSystemUnitIntern(v: AMLLanguageQuery#InternalElementBaseSystemUnitSystemUnitClassRole): Unit = {
+      baseSystemUnit = null
+    }
+
+    private[AMLLanguageQuery] def setBaseSystemUnitIntern(v: AMLLanguageQuery#InternalElementBaseSystemUnitSystemUnitClassRole): Unit = {
+      baseSystemUnit = v
+    }
+
+    def getBaseSystemUnit(): AMLLanguageQuery#SystemUnitClassRole = {
+      return baseSystemUnit.getTarget()
+    }
+
+    def setBaseSystemUnit(v: AMLLanguageQuery#SystemUnitClassRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (baseSystemUnit != null) {
+        if (baseSystemUnit.getTarget() == v) return false
+        baseSystemUnit.deleteElement()
+      }
+      new InternalElementBaseSystemUnitSystemUnitClassRole(this, v)
+      return true
+    }
+
+    override def toString(): String = {
+      "InternalElementRole:"
+    }
+
+  }
+
+  class SystemUnitClassInternalElementsInternalElementRole(private val source: AMLLanguageQuery#SystemUnitClassRole, private val target: AMLLanguageQuery#InternalElementRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setInternalElementsIntern(this)
+      val sp: SystemUnitClass = source.player.right.get.asInstanceOf[SystemUnitClass]
+      val tp: InternalElement = target.player.right.get.asInstanceOf[InternalElement]
+      val v: SystemUnitClassInternalElementsInternalElement = new SystemUnitClassInternalElementsInternalElement(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeInternalElementsIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): AMLLanguageQuery#SystemUnitClassRole = {
+      source
+    }
+
+    def getTarget(): AMLLanguageQuery#InternalElementRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "SystemUnitClassInternalElementsInternalElementRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class SystemUnitClassAttributesAttributeRole(private val source: AMLLanguageQuery#SystemUnitClassRole, private val target: AMLLanguageQuery#AttributeRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setAttributesIntern(this)
+      val sp: SystemUnitClass = source.player.right.get.asInstanceOf[SystemUnitClass]
+      val tp: Attribute = target.player.right.get.asInstanceOf[Attribute]
+      val v: SystemUnitClassAttributesAttribute = new SystemUnitClassAttributesAttribute(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeAttributesIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): AMLLanguageQuery#SystemUnitClassRole = {
+      source
+    }
+
+    def getTarget(): AMLLanguageQuery#AttributeRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "SystemUnitClassAttributesAttributeRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class InstanceHierarchyInternalElementsInternalElementRole(private val source: AMLLanguageQuery#InstanceHierarchyRole, private val target: AMLLanguageQuery#InternalElementRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setInternalElementsIntern(this)
+      val sp: InstanceHierarchy = source.player.right.get.asInstanceOf[InstanceHierarchy]
+      val tp: InternalElement = target.player.right.get.asInstanceOf[InternalElement]
+      val v: InstanceHierarchyInternalElementsInternalElement = new InstanceHierarchyInternalElementsInternalElement(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeInternalElementsIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): AMLLanguageQuery#InstanceHierarchyRole = {
+      source
+    }
+
+    def getTarget(): AMLLanguageQuery#InternalElementRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "InstanceHierarchyInternalElementsInternalElementRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class InternalElementBaseSystemUnitSystemUnitClassRole(private val source: AMLLanguageQuery#InternalElementRole, private val target: AMLLanguageQuery#SystemUnitClassRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setBaseSystemUnitIntern(this)
+      val sp: InternalElement = source.player.right.get.asInstanceOf[InternalElement]
+      val tp: SystemUnitClass = target.player.right.get.asInstanceOf[SystemUnitClass]
+      val v: InternalElementBaseSystemUnitSystemUnitClass = new InternalElementBaseSystemUnitSystemUnitClass(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeBaseSystemUnitIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): AMLLanguageQuery#InternalElementRole = {
+      source
+    }
+
+    def getTarget(): AMLLanguageQuery#SystemUnitClassRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "InternalElementBaseSystemUnitSystemUnitClassRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/query/EclipseLibraryQuery.scala b/src/main/scala/query/EclipseLibraryQuery.scala
new file mode 100644
index 0000000..344278b
--- /dev/null
+++ b/src/main/scala/query/EclipseLibraryQuery.scala
@@ -0,0 +1,1274 @@
+package query
+
+import elib.BookAuthorWriter
+import elib.BookCategory
+import elib.BookOnTapeReaderPerson
+import elib.Employee
+import elib.LibraryBranchesLibrary
+import elib.VideoCassette
+import elib.BookOnTapeAuthorWriter
+import elib.LibraryBooksBook
+import elib.LibraryBorrowersBorrower
+import elib.Borrower
+import elib.LibraryParentBranchLibrary
+import elib.Periodical
+import elib.Writer
+import elib.AudioVisualItem
+import org.rosi_project.model_management.sum.query.IQueryViewCompartment
+import elib.EmployeeManagerEmployee
+import elib.Person
+import java.util.Date
+import elib.BookOnTape
+import elib.VideoCassetteCastPerson
+import org.rosi_project.model_management.sum.query.CheckingOption
+import elib.Library
+import elib.Book
+import elib.LibraryWritersWriter
+import elib.LibraryEmployeesEmployee
+import elib.CirculatingItem
+import elib.Item
+import elib.LibraryStockItem
+
+class EclipseLibraryQuery extends IQueryViewCompartment {
+
+  init("EclipseLibraryQuery")
+
+  def createLibrary(): EclipseLibraryQuery#LibraryRole = {
+    return new LibraryRole()
+  }
+
+  def createPeriodical(): EclipseLibraryQuery#PeriodicalRole = {
+    return new PeriodicalRole()
+  }
+
+  def createPerson(): EclipseLibraryQuery#PersonRole = {
+    return new PersonRole()
+  }
+
+  def createBorrower(): EclipseLibraryQuery#BorrowerRole = {
+    return new BorrowerRole()
+  }
+
+  def createItem(): EclipseLibraryQuery#ItemRole = {
+    return new ItemRole()
+  }
+
+  def createAudioVisualItem(): EclipseLibraryQuery#AudioVisualItemRole = {
+    return new AudioVisualItemRole()
+  }
+
+  def createCirculatingItem(): EclipseLibraryQuery#CirculatingItemRole = {
+    return new CirculatingItemRole()
+  }
+
+  def createBookOnTape(): EclipseLibraryQuery#BookOnTapeRole = {
+    return new BookOnTapeRole()
+  }
+
+  def createVideoCassette(): EclipseLibraryQuery#VideoCassetteRole = {
+    return new VideoCassetteRole()
+  }
+
+  def createBook(): EclipseLibraryQuery#BookRole = {
+    return new BookRole()
+  }
+
+  def createWriter(): EclipseLibraryQuery#WriterRole = {
+    return new WriterRole()
+  }
+
+  def createEmployee(): EclipseLibraryQuery#EmployeeRole = {
+    return new EmployeeRole()
+  }
+
+  override def toString(): String = {
+    "EclipseLibraryQuery:"
+  }
+
+  class ItemRole extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Item(null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getPublicationDateView(): Date = {
+      +this getPublicationDate ()
+    }
+
+    def setPublicationDateView(publicationdate: Date, check: CheckingOption.Value): Unit = {
+      +this setPublicationDate (publicationdate)
+      connected.addAttributeFilter("publicationDate", publicationdate.toString(), check)
+    }
+
+    override def toString(): String = {
+      "ItemRole:"
+    }
+
+  }
+
+  class EmployeeRole extends PersonRole() {
+
+    private var manager: EclipseLibraryQuery#EmployeeManagerEmployeeRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Employee(null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      if (manager != null) manager.deleteElement()
+    }
+
+    private[EclipseLibraryQuery] def removeManagerIntern(v: EclipseLibraryQuery#EmployeeManagerEmployeeRole): Unit = {
+      manager = null
+    }
+
+    private[EclipseLibraryQuery] def setManagerIntern(v: EclipseLibraryQuery#EmployeeManagerEmployeeRole): Unit = {
+      manager = v
+    }
+
+    def getManager(): EclipseLibraryQuery#EmployeeRole = {
+      return manager.getTarget()
+    }
+
+    def setManager(v: EclipseLibraryQuery#EmployeeRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (manager != null) {
+        if (manager.getTarget() == v) return false
+        manager.deleteElement()
+      }
+      new EmployeeManagerEmployeeRole(this, v)
+      return true
+    }
+
+    override def toString(): String = {
+      "EmployeeRole:"
+    }
+
+  }
+
+  class PeriodicalRole extends ItemRole() {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Periodical(0, null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getIssuesPerYearView(): Int = {
+      +this getIssuesPerYear ()
+    }
+
+    def setIssuesPerYearView(issuesperyear: Int, check: CheckingOption.Value): Unit = {
+      +this setIssuesPerYear (issuesperyear)
+      connected.addAttributeFilter("issuesPerYear", issuesperyear.toString(), check)
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String, check: CheckingOption.Value): Unit = {
+      +this setTitle (title)
+      connected.addAttributeFilter("title", title.toString(), check)
+    }
+
+    override def toString(): String = {
+      "PeriodicalRole:"
+    }
+
+  }
+
+  class VideoCassetteRole extends AudioVisualItemRole() {
+
+    private var cast: Set[EclipseLibraryQuery#VideoCassetteCastPersonRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new VideoCassette(false, 0, null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      cast.foreach(_.deleteElement())
+    }
+
+    private[EclipseLibraryQuery] def removeCastIntern(v: EclipseLibraryQuery#VideoCassetteCastPersonRole): Unit = {
+      cast -= v
+    }
+
+    private[EclipseLibraryQuery] def setCastIntern(v: EclipseLibraryQuery#VideoCassetteCastPersonRole): Unit = {
+      cast += v
+    }
+
+    def getCast(): Set[EclipseLibraryQuery#PersonRole] = {
+      var vs: Set[EclipseLibraryQuery#PersonRole] = Set.empty
+      cast.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasCast(v: EclipseLibraryQuery#PersonRole): Boolean = {
+      return getCast.contains(v)
+    }
+
+    def addCast(v: EclipseLibraryQuery#PersonRole): Boolean = {
+      if (hasCast(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new VideoCassetteCastPersonRole(this, v)
+      return true
+    }
+
+    def removeCast(v: EclipseLibraryQuery#PersonRole): Boolean = {
+      if (!hasCast(v)) return false
+      cast.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override def toString(): String = {
+      "VideoCassetteRole:"
+    }
+
+  }
+
+  class AudioVisualItemRole extends CirculatingItemRole() {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new AudioVisualItem(false, 0, null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getDamagedView(): Boolean = {
+      +this getDamaged ()
+    }
+
+    def setDamagedView(damaged: Boolean, check: CheckingOption.Value): Unit = {
+      +this setDamaged (damaged)
+      connected.addAttributeFilter("damaged", damaged.toString(), check)
+    }
+
+    def getMinutesLengthView(): Int = {
+      +this getMinutesLength ()
+    }
+
+    def setMinutesLengthView(minuteslength: Int, check: CheckingOption.Value): Unit = {
+      +this setMinutesLength (minuteslength)
+      connected.addAttributeFilter("minutesLength", minuteslength.toString(), check)
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String, check: CheckingOption.Value): Unit = {
+      +this setTitle (title)
+      connected.addAttributeFilter("title", title.toString(), check)
+    }
+
+    override def toString(): String = {
+      "AudioVisualItemRole:"
+    }
+
+  }
+
+  class WriterRole extends PersonRole() {
+
+    private var books: Set[EclipseLibraryQuery#BookAuthorWriterRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Writer(null, null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      books.foreach(_.deleteElement())
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String, check: CheckingOption.Value): Unit = {
+      +this setName (name)
+      connected.addAttributeFilter("name", name.toString(), check)
+    }
+
+    private[EclipseLibraryQuery] def removeBooksIntern(v: EclipseLibraryQuery#BookAuthorWriterRole): Unit = {
+      books -= v
+    }
+
+    private[EclipseLibraryQuery] def setBooksIntern(v: EclipseLibraryQuery#BookAuthorWriterRole): Unit = {
+      books += v
+    }
+
+    def getBooks(): Set[EclipseLibraryQuery#BookRole] = {
+      var vs: Set[EclipseLibraryQuery#BookRole] = Set.empty
+      books.foreach { v => vs += v.getSource() }
+      return vs
+    }
+
+    def hasBooks(v: EclipseLibraryQuery#BookRole): Boolean = {
+      return getBooks.contains(v)
+    }
+
+    def addBooks(v: EclipseLibraryQuery#BookRole): Boolean = {
+      if (hasBooks(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new BookAuthorWriterRole(v, this)
+      return true
+    }
+
+    def removeBooks(v: EclipseLibraryQuery#BookRole): Boolean = {
+      if (!hasBooks(v)) return false
+      books.foreach { h =>
+        if (h.getSource() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override def toString(): String = {
+      "WriterRole:"
+    }
+
+  }
+
+  class BookRole extends CirculatingItemRole() {
+
+    private var author: EclipseLibraryQuery#BookAuthorWriterRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Book(null, 0, null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      if (author != null) author.deleteElement()
+    }
+
+    def getCategoryView(): BookCategory.Value = {
+      +this getCategory ()
+    }
+
+    def setCategoryView(category: BookCategory.Value, check: CheckingOption.Value): Unit = {
+      +this setCategory (category)
+      connected.addAttributeFilter("category", category.toString(), check)
+    }
+
+    def getPagesView(): Int = {
+      +this getPages ()
+    }
+
+    def setPagesView(pages: Int, check: CheckingOption.Value): Unit = {
+      +this setPages (pages)
+      connected.addAttributeFilter("pages", pages.toString(), check)
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String, check: CheckingOption.Value): Unit = {
+      +this setTitle (title)
+      connected.addAttributeFilter("title", title.toString(), check)
+    }
+
+    private[EclipseLibraryQuery] def removeAuthorIntern(v: EclipseLibraryQuery#BookAuthorWriterRole): Unit = {
+      author = null
+    }
+
+    private[EclipseLibraryQuery] def setAuthorIntern(v: EclipseLibraryQuery#BookAuthorWriterRole): Unit = {
+      author = v
+    }
+
+    def getAuthor(): EclipseLibraryQuery#WriterRole = {
+      return author.getTarget()
+    }
+
+    def setAuthor(v: EclipseLibraryQuery#WriterRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (author != null) {
+        if (author.getTarget() == v) return false
+        author.deleteElement()
+      }
+      new BookAuthorWriterRole(this, v)
+      return true
+    }
+
+    override def toString(): String = {
+      "BookRole:"
+    }
+
+  }
+
+  class LibraryRole extends AQueryViewRole {
+
+    private var employees: Set[EclipseLibraryQuery#LibraryEmployeesEmployeeRole] = Set.empty
+    private var parentBranch: EclipseLibraryQuery#LibraryParentBranchLibraryRole = null
+    private var writers: Set[EclipseLibraryQuery#LibraryWritersWriterRole] = Set.empty
+    private var borrowers: Set[EclipseLibraryQuery#LibraryBorrowersBorrowerRole] = Set.empty
+    private var stock: Set[EclipseLibraryQuery#LibraryStockItemRole] = Set.empty
+    private var branches: Set[EclipseLibraryQuery#LibraryBranchesLibraryRole] = Set.empty
+    private var books: Set[EclipseLibraryQuery#LibraryBooksBookRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Library(null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      employees.foreach(_.deleteElement())
+      if (parentBranch != null) parentBranch.deleteElement()
+      writers.foreach(_.deleteElement())
+      borrowers.foreach(_.deleteElement())
+      stock.foreach(_.deleteElement())
+      branches.foreach(_.deleteElement())
+      books.foreach(_.deleteElement())
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String, check: CheckingOption.Value): Unit = {
+      +this setName (name)
+      connected.addAttributeFilter("name", name.toString(), check)
+    }
+
+    private[EclipseLibraryQuery] def removeEmployeesIntern(v: EclipseLibraryQuery#LibraryEmployeesEmployeeRole): Unit = {
+      employees -= v
+    }
+
+    private[EclipseLibraryQuery] def setEmployeesIntern(v: EclipseLibraryQuery#LibraryEmployeesEmployeeRole): Unit = {
+      employees += v
+    }
+
+    def getEmployees(): Set[EclipseLibraryQuery#EmployeeRole] = {
+      var vs: Set[EclipseLibraryQuery#EmployeeRole] = Set.empty
+      employees.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasEmployees(v: EclipseLibraryQuery#EmployeeRole): Boolean = {
+      return getEmployees.contains(v)
+    }
+
+    def addEmployees(v: EclipseLibraryQuery#EmployeeRole): Boolean = {
+      if (hasEmployees(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new LibraryEmployeesEmployeeRole(this, v)
+      return true
+    }
+
+    def removeEmployees(v: EclipseLibraryQuery#EmployeeRole): Boolean = {
+      if (!hasEmployees(v)) return false
+      employees.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryQuery] def removeParentBranchIntern(v: EclipseLibraryQuery#LibraryParentBranchLibraryRole): Unit = {
+      parentBranch = null
+    }
+
+    private[EclipseLibraryQuery] def setParentBranchIntern(v: EclipseLibraryQuery#LibraryParentBranchLibraryRole): Unit = {
+      parentBranch = v
+    }
+
+    def getParentBranch(): EclipseLibraryQuery#LibraryRole = {
+      return parentBranch.getTarget()
+    }
+
+    def setParentBranch(v: EclipseLibraryQuery#LibraryRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (parentBranch != null) {
+        if (parentBranch.getTarget() == v) return false
+        parentBranch.deleteElement()
+      }
+      new LibraryParentBranchLibraryRole(this, v)
+      return true
+    }
+
+    private[EclipseLibraryQuery] def removeWritersIntern(v: EclipseLibraryQuery#LibraryWritersWriterRole): Unit = {
+      writers -= v
+    }
+
+    private[EclipseLibraryQuery] def setWritersIntern(v: EclipseLibraryQuery#LibraryWritersWriterRole): Unit = {
+      writers += v
+    }
+
+    def getWriters(): Set[EclipseLibraryQuery#WriterRole] = {
+      var vs: Set[EclipseLibraryQuery#WriterRole] = Set.empty
+      writers.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasWriters(v: EclipseLibraryQuery#WriterRole): Boolean = {
+      return getWriters.contains(v)
+    }
+
+    def addWriters(v: EclipseLibraryQuery#WriterRole): Boolean = {
+      if (hasWriters(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new LibraryWritersWriterRole(this, v)
+      return true
+    }
+
+    def removeWriters(v: EclipseLibraryQuery#WriterRole): Boolean = {
+      if (!hasWriters(v)) return false
+      writers.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryQuery] def removeBorrowersIntern(v: EclipseLibraryQuery#LibraryBorrowersBorrowerRole): Unit = {
+      borrowers -= v
+    }
+
+    private[EclipseLibraryQuery] def setBorrowersIntern(v: EclipseLibraryQuery#LibraryBorrowersBorrowerRole): Unit = {
+      borrowers += v
+    }
+
+    def getBorrowers(): Set[EclipseLibraryQuery#BorrowerRole] = {
+      var vs: Set[EclipseLibraryQuery#BorrowerRole] = Set.empty
+      borrowers.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasBorrowers(v: EclipseLibraryQuery#BorrowerRole): Boolean = {
+      return getBorrowers.contains(v)
+    }
+
+    def addBorrowers(v: EclipseLibraryQuery#BorrowerRole): Boolean = {
+      if (hasBorrowers(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new LibraryBorrowersBorrowerRole(this, v)
+      return true
+    }
+
+    def removeBorrowers(v: EclipseLibraryQuery#BorrowerRole): Boolean = {
+      if (!hasBorrowers(v)) return false
+      borrowers.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryQuery] def removeStockIntern(v: EclipseLibraryQuery#LibraryStockItemRole): Unit = {
+      stock -= v
+    }
+
+    private[EclipseLibraryQuery] def setStockIntern(v: EclipseLibraryQuery#LibraryStockItemRole): Unit = {
+      stock += v
+    }
+
+    def getStock(): Set[EclipseLibraryQuery#ItemRole] = {
+      var vs: Set[EclipseLibraryQuery#ItemRole] = Set.empty
+      stock.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasStock(v: EclipseLibraryQuery#ItemRole): Boolean = {
+      return getStock.contains(v)
+    }
+
+    def addStock(v: EclipseLibraryQuery#ItemRole): Boolean = {
+      if (hasStock(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new LibraryStockItemRole(this, v)
+      return true
+    }
+
+    def removeStock(v: EclipseLibraryQuery#ItemRole): Boolean = {
+      if (!hasStock(v)) return false
+      stock.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryQuery] def removeBranchesIntern(v: EclipseLibraryQuery#LibraryBranchesLibraryRole): Unit = {
+      branches -= v
+    }
+
+    private[EclipseLibraryQuery] def setBranchesIntern(v: EclipseLibraryQuery#LibraryBranchesLibraryRole): Unit = {
+      branches += v
+    }
+
+    def getBranches(): Set[EclipseLibraryQuery#LibraryRole] = {
+      var vs: Set[EclipseLibraryQuery#LibraryRole] = Set.empty
+      branches.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasBranches(v: EclipseLibraryQuery#LibraryRole): Boolean = {
+      return getBranches.contains(v)
+    }
+
+    def addBranches(v: EclipseLibraryQuery#LibraryRole): Boolean = {
+      if (hasBranches(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new LibraryBranchesLibraryRole(this, v)
+      return true
+    }
+
+    def removeBranches(v: EclipseLibraryQuery#LibraryRole): Boolean = {
+      if (!hasBranches(v)) return false
+      branches.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryQuery] def removeBooksIntern(v: EclipseLibraryQuery#LibraryBooksBookRole): Unit = {
+      books -= v
+    }
+
+    private[EclipseLibraryQuery] def setBooksIntern(v: EclipseLibraryQuery#LibraryBooksBookRole): Unit = {
+      books += v
+    }
+
+    def getBooks(): Set[EclipseLibraryQuery#BookRole] = {
+      var vs: Set[EclipseLibraryQuery#BookRole] = Set.empty
+      books.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasBooks(v: EclipseLibraryQuery#BookRole): Boolean = {
+      return getBooks.contains(v)
+    }
+
+    def addBooks(v: EclipseLibraryQuery#BookRole): Boolean = {
+      if (hasBooks(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new LibraryBooksBookRole(this, v)
+      return true
+    }
+
+    def removeBooks(v: EclipseLibraryQuery#BookRole): Boolean = {
+      if (!hasBooks(v)) return false
+      books.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override def toString(): String = {
+      "LibraryRole:"
+    }
+
+  }
+
+  class BookOnTapeRole extends AudioVisualItemRole() {
+
+    private var author: EclipseLibraryQuery#BookOnTapeAuthorWriterRole = null
+    private var reader: EclipseLibraryQuery#BookOnTapeReaderPersonRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new BookOnTape(false, 0, null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      if (author != null) author.deleteElement()
+      if (reader != null) reader.deleteElement()
+    }
+
+    private[EclipseLibraryQuery] def removeAuthorIntern(v: EclipseLibraryQuery#BookOnTapeAuthorWriterRole): Unit = {
+      author = null
+    }
+
+    private[EclipseLibraryQuery] def setAuthorIntern(v: EclipseLibraryQuery#BookOnTapeAuthorWriterRole): Unit = {
+      author = v
+    }
+
+    def getAuthor(): EclipseLibraryQuery#WriterRole = {
+      return author.getTarget()
+    }
+
+    def setAuthor(v: EclipseLibraryQuery#WriterRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (author != null) {
+        if (author.getTarget() == v) return false
+        author.deleteElement()
+      }
+      new BookOnTapeAuthorWriterRole(this, v)
+      return true
+    }
+
+    private[EclipseLibraryQuery] def removeReaderIntern(v: EclipseLibraryQuery#BookOnTapeReaderPersonRole): Unit = {
+      reader = null
+    }
+
+    private[EclipseLibraryQuery] def setReaderIntern(v: EclipseLibraryQuery#BookOnTapeReaderPersonRole): Unit = {
+      reader = v
+    }
+
+    def getReader(): EclipseLibraryQuery#PersonRole = {
+      return reader.getTarget()
+    }
+
+    def setReader(v: EclipseLibraryQuery#PersonRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (reader != null) {
+        if (reader.getTarget() == v) return false
+        reader.deleteElement()
+      }
+      new BookOnTapeReaderPersonRole(this, v)
+      return true
+    }
+
+    override def toString(): String = {
+      "BookOnTapeRole:"
+    }
+
+  }
+
+  class CirculatingItemRole extends ItemRole() {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new CirculatingItem(null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "CirculatingItemRole:"
+    }
+
+  }
+
+  class BorrowerRole extends PersonRole() {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Borrower(null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "BorrowerRole:"
+    }
+
+  }
+
+  class PersonRole extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Person(null, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getLastNameView(): String = {
+      +this getLastName ()
+    }
+
+    def setLastNameView(lastname: String, check: CheckingOption.Value): Unit = {
+      +this setLastName (lastname)
+      connected.addAttributeFilter("lastName", lastname.toString(), check)
+    }
+
+    def getFirstNameView(): String = {
+      +this getFirstName ()
+    }
+
+    def setFirstNameView(firstname: String, check: CheckingOption.Value): Unit = {
+      +this setFirstName (firstname)
+      connected.addAttributeFilter("firstName", firstname.toString(), check)
+    }
+
+    override def toString(): String = {
+      "PersonRole:"
+    }
+
+  }
+
+  class LibraryEmployeesEmployeeRole(private val source: EclipseLibraryQuery#LibraryRole, private val target: EclipseLibraryQuery#EmployeeRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setEmployeesIntern(this)
+      val sp: Library = source.player.right.get.asInstanceOf[Library]
+      val tp: Employee = target.player.right.get.asInstanceOf[Employee]
+      val v: LibraryEmployeesEmployee = new LibraryEmployeesEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeEmployeesIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#EmployeeRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "LibraryEmployeesEmployeeRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class LibraryParentBranchLibraryRole(private val source: EclipseLibraryQuery#LibraryRole, private val target: EclipseLibraryQuery#LibraryRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setParentBranchIntern(this)
+      val sp: Library = source.player.right.get.asInstanceOf[Library]
+      val tp: Library = target.player.right.get.asInstanceOf[Library]
+      val v: LibraryParentBranchLibrary = new LibraryParentBranchLibrary(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeParentBranchIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#LibraryRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "LibraryParentBranchLibraryRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class LibraryWritersWriterRole(private val source: EclipseLibraryQuery#LibraryRole, private val target: EclipseLibraryQuery#WriterRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setWritersIntern(this)
+      val sp: Library = source.player.right.get.asInstanceOf[Library]
+      val tp: Writer = target.player.right.get.asInstanceOf[Writer]
+      val v: LibraryWritersWriter = new LibraryWritersWriter(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeWritersIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#WriterRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "LibraryWritersWriterRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class BookOnTapeAuthorWriterRole(private val source: EclipseLibraryQuery#BookOnTapeRole, private val target: EclipseLibraryQuery#WriterRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setAuthorIntern(this)
+      val sp: BookOnTape = source.player.right.get.asInstanceOf[BookOnTape]
+      val tp: Writer = target.player.right.get.asInstanceOf[Writer]
+      val v: BookOnTapeAuthorWriter = new BookOnTapeAuthorWriter(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeAuthorIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#BookOnTapeRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#WriterRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "BookOnTapeAuthorWriterRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class BookOnTapeReaderPersonRole(private val source: EclipseLibraryQuery#BookOnTapeRole, private val target: EclipseLibraryQuery#PersonRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setReaderIntern(this)
+      val sp: BookOnTape = source.player.right.get.asInstanceOf[BookOnTape]
+      val tp: Person = target.player.right.get.asInstanceOf[Person]
+      val v: BookOnTapeReaderPerson = new BookOnTapeReaderPerson(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeReaderIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#BookOnTapeRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#PersonRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "BookOnTapeReaderPersonRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class LibraryBorrowersBorrowerRole(private val source: EclipseLibraryQuery#LibraryRole, private val target: EclipseLibraryQuery#BorrowerRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setBorrowersIntern(this)
+      val sp: Library = source.player.right.get.asInstanceOf[Library]
+      val tp: Borrower = target.player.right.get.asInstanceOf[Borrower]
+      val v: LibraryBorrowersBorrower = new LibraryBorrowersBorrower(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeBorrowersIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#BorrowerRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "LibraryBorrowersBorrowerRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class LibraryStockItemRole(private val source: EclipseLibraryQuery#LibraryRole, private val target: EclipseLibraryQuery#ItemRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setStockIntern(this)
+      val sp: Library = source.player.right.get.asInstanceOf[Library]
+      val tp: Item = target.player.right.get.asInstanceOf[Item]
+      val v: LibraryStockItem = new LibraryStockItem(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeStockIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#ItemRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "LibraryStockItemRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class BookAuthorWriterRole(private val source: EclipseLibraryQuery#BookRole, private val target: EclipseLibraryQuery#WriterRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setBooksIntern(this)
+      source.setAuthorIntern(this)
+      val sp: Book = source.player.right.get.asInstanceOf[Book]
+      val tp: Writer = target.player.right.get.asInstanceOf[Writer]
+      val v: BookAuthorWriter = new BookAuthorWriter(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeAuthorIntern(this)
+      target.removeBooksIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#BookRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#WriterRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "BookAuthorWriterRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class LibraryBranchesLibraryRole(private val source: EclipseLibraryQuery#LibraryRole, private val target: EclipseLibraryQuery#LibraryRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setBranchesIntern(this)
+      val sp: Library = source.player.right.get.asInstanceOf[Library]
+      val tp: Library = target.player.right.get.asInstanceOf[Library]
+      val v: LibraryBranchesLibrary = new LibraryBranchesLibrary(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeBranchesIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#LibraryRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "LibraryBranchesLibraryRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class VideoCassetteCastPersonRole(private val source: EclipseLibraryQuery#VideoCassetteRole, private val target: EclipseLibraryQuery#PersonRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setCastIntern(this)
+      val sp: VideoCassette = source.player.right.get.asInstanceOf[VideoCassette]
+      val tp: Person = target.player.right.get.asInstanceOf[Person]
+      val v: VideoCassetteCastPerson = new VideoCassetteCastPerson(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeCastIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#VideoCassetteRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#PersonRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "VideoCassetteCastPersonRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class EmployeeManagerEmployeeRole(private val source: EclipseLibraryQuery#EmployeeRole, private val target: EclipseLibraryQuery#EmployeeRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setManagerIntern(this)
+      val sp: Employee = source.player.right.get.asInstanceOf[Employee]
+      val tp: Employee = target.player.right.get.asInstanceOf[Employee]
+      val v: EmployeeManagerEmployee = new EmployeeManagerEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeManagerIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#EmployeeRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#EmployeeRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "EmployeeManagerEmployeeRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class LibraryBooksBookRole(private val source: EclipseLibraryQuery#LibraryRole, private val target: EclipseLibraryQuery#BookRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setBooksIntern(this)
+      val sp: Library = source.player.right.get.asInstanceOf[Library]
+      val tp: Book = target.player.right.get.asInstanceOf[Book]
+      val v: LibraryBooksBook = new LibraryBooksBook(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeBooksIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): EclipseLibraryQuery#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryQuery#BookRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "LibraryBooksBookRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/query/IMDBdatabaseQuery.scala b/src/main/scala/query/IMDBdatabaseQuery.scala
new file mode 100644
index 0000000..12c15ee
--- /dev/null
+++ b/src/main/scala/query/IMDBdatabaseQuery.scala
@@ -0,0 +1,1028 @@
+package query
+
+import imdbdatabase.User
+import imdbdatabase.IMDBFilmsFilm
+import imdbdatabase.FilmFiguresFigure
+import imdbdatabase.VoteFilmFilm
+import imdbdatabase.Film
+import imdbdatabase.IMDBVotesVote
+import imdbdatabase.VoteUserUser
+import imdbdatabase.FigurePlayedByActor
+import imdbdatabase.Person
+import org.rosi_project.model_management.sum.query.IQueryViewCompartment
+import imdbdatabase.IMDB
+import imdbdatabase.Figure
+import imdbdatabase.Actor
+import org.rosi_project.model_management.sum.query.CheckingOption
+import imdbdatabase.Vote
+import imdbdatabase.IMDBUsersUser
+import imdbdatabase.IMDBActorsActor
+
+class IMDBdatabaseQuery extends IQueryViewCompartment {
+
+  init("IMDBdatabaseQuery")
+
+  def createFigure(): IMDBdatabaseQuery#FigureRole = {
+    return new FigureRole()
+  }
+
+  def createActor(): IMDBdatabaseQuery#ActorRole = {
+    return new ActorRole()
+  }
+
+  def createPerson(): IMDBdatabaseQuery#PersonRole = {
+    return new PersonRole()
+  }
+
+  def createUser(): IMDBdatabaseQuery#UserRole = {
+    return new UserRole()
+  }
+
+  def createVote(): IMDBdatabaseQuery#VoteRole = {
+    return new VoteRole()
+  }
+
+  def createIMDB(): IMDBdatabaseQuery#IMDBRole = {
+    return new IMDBRole()
+  }
+
+  def createFilm(): IMDBdatabaseQuery#FilmRole = {
+    return new FilmRole()
+  }
+
+  override def toString(): String = {
+    "IMDBdatabaseQuery:"
+  }
+
+  class IMDBRole extends AQueryViewRole {
+
+    private var users: Set[IMDBdatabaseQuery#IMDBUsersUserRole] = Set.empty
+    private var votes: Set[IMDBdatabaseQuery#IMDBVotesVoteRole] = Set.empty
+    private var actors: Set[IMDBdatabaseQuery#IMDBActorsActorRole] = Set.empty
+    private var films: Set[IMDBdatabaseQuery#IMDBFilmsFilmRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new IMDB()
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      users.foreach(_.deleteElement())
+      votes.foreach(_.deleteElement())
+      actors.foreach(_.deleteElement())
+      films.foreach(_.deleteElement())
+    }
+
+    private[IMDBdatabaseQuery] def removeUsersIntern(v: IMDBdatabaseQuery#IMDBUsersUserRole): Unit = {
+      users -= v
+    }
+
+    private[IMDBdatabaseQuery] def setUsersIntern(v: IMDBdatabaseQuery#IMDBUsersUserRole): Unit = {
+      users += v
+    }
+
+    def getUsers(): Set[IMDBdatabaseQuery#UserRole] = {
+      var vs: Set[IMDBdatabaseQuery#UserRole] = Set.empty
+      users.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasUsers(v: IMDBdatabaseQuery#UserRole): Boolean = {
+      return getUsers.contains(v)
+    }
+
+    def addUsers(v: IMDBdatabaseQuery#UserRole): Boolean = {
+      if (hasUsers(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new IMDBUsersUserRole(this, v)
+      return true
+    }
+
+    def removeUsers(v: IMDBdatabaseQuery#UserRole): Boolean = {
+      if (!hasUsers(v)) return false
+      users.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeVotesIntern(v: IMDBdatabaseQuery#IMDBVotesVoteRole): Unit = {
+      votes -= v
+    }
+
+    private[IMDBdatabaseQuery] def setVotesIntern(v: IMDBdatabaseQuery#IMDBVotesVoteRole): Unit = {
+      votes += v
+    }
+
+    def getVotes(): Set[IMDBdatabaseQuery#VoteRole] = {
+      var vs: Set[IMDBdatabaseQuery#VoteRole] = Set.empty
+      votes.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasVotes(v: IMDBdatabaseQuery#VoteRole): Boolean = {
+      return getVotes.contains(v)
+    }
+
+    def addVotes(v: IMDBdatabaseQuery#VoteRole): Boolean = {
+      if (hasVotes(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new IMDBVotesVoteRole(this, v)
+      return true
+    }
+
+    def removeVotes(v: IMDBdatabaseQuery#VoteRole): Boolean = {
+      if (!hasVotes(v)) return false
+      votes.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeActorsIntern(v: IMDBdatabaseQuery#IMDBActorsActorRole): Unit = {
+      actors -= v
+    }
+
+    private[IMDBdatabaseQuery] def setActorsIntern(v: IMDBdatabaseQuery#IMDBActorsActorRole): Unit = {
+      actors += v
+    }
+
+    def getActors(): Set[IMDBdatabaseQuery#ActorRole] = {
+      var vs: Set[IMDBdatabaseQuery#ActorRole] = Set.empty
+      actors.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasActors(v: IMDBdatabaseQuery#ActorRole): Boolean = {
+      return getActors.contains(v)
+    }
+
+    def addActors(v: IMDBdatabaseQuery#ActorRole): Boolean = {
+      if (hasActors(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new IMDBActorsActorRole(this, v)
+      return true
+    }
+
+    def removeActors(v: IMDBdatabaseQuery#ActorRole): Boolean = {
+      if (!hasActors(v)) return false
+      actors.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeFilmsIntern(v: IMDBdatabaseQuery#IMDBFilmsFilmRole): Unit = {
+      films -= v
+    }
+
+    private[IMDBdatabaseQuery] def setFilmsIntern(v: IMDBdatabaseQuery#IMDBFilmsFilmRole): Unit = {
+      films += v
+    }
+
+    def getFilms(): Set[IMDBdatabaseQuery#FilmRole] = {
+      var vs: Set[IMDBdatabaseQuery#FilmRole] = Set.empty
+      films.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasFilms(v: IMDBdatabaseQuery#FilmRole): Boolean = {
+      return getFilms.contains(v)
+    }
+
+    def addFilms(v: IMDBdatabaseQuery#FilmRole): Boolean = {
+      if (hasFilms(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new IMDBFilmsFilmRole(this, v)
+      return true
+    }
+
+    def removeFilms(v: IMDBdatabaseQuery#FilmRole): Boolean = {
+      if (!hasFilms(v)) return false
+      films.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override def toString(): String = {
+      "IMDBRole:"
+    }
+
+  }
+
+  class FilmRole extends AQueryViewRole {
+
+    private var library: IMDBdatabaseQuery#IMDBFilmsFilmRole = null
+    private var votes: Set[IMDBdatabaseQuery#VoteFilmFilmRole] = Set.empty
+    private var figures: Set[IMDBdatabaseQuery#FilmFiguresFigureRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Film(0, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      if (library != null) library.deleteElement()
+      votes.foreach(_.deleteElement())
+      figures.foreach(_.deleteElement())
+    }
+
+    def getYearView(): Int = {
+      +this getYear ()
+    }
+
+    def setYearView(year: Int, check: CheckingOption.Value): Unit = {
+      +this setYear (year)
+      connected.addAttributeFilter("year", year.toString(), check)
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String, check: CheckingOption.Value): Unit = {
+      +this setTitle (title)
+      connected.addAttributeFilter("title", title.toString(), check)
+    }
+
+    private[IMDBdatabaseQuery] def removeLibraryIntern(v: IMDBdatabaseQuery#IMDBFilmsFilmRole): Unit = {
+      library = null
+    }
+
+    private[IMDBdatabaseQuery] def setLibraryIntern(v: IMDBdatabaseQuery#IMDBFilmsFilmRole): Unit = {
+      library = v
+    }
+
+    def getLibrary(): IMDBdatabaseQuery#IMDBRole = {
+      return library.getSource()
+    }
+
+    def setLibrary(v: IMDBdatabaseQuery#IMDBRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (library != null) {
+        if (library.getSource() == v) return false
+        library.deleteElement()
+      }
+      new IMDBFilmsFilmRole(v, this)
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeVotesIntern(v: IMDBdatabaseQuery#VoteFilmFilmRole): Unit = {
+      votes -= v
+    }
+
+    private[IMDBdatabaseQuery] def setVotesIntern(v: IMDBdatabaseQuery#VoteFilmFilmRole): Unit = {
+      votes += v
+    }
+
+    def getVotes(): Set[IMDBdatabaseQuery#VoteRole] = {
+      var vs: Set[IMDBdatabaseQuery#VoteRole] = Set.empty
+      votes.foreach { v => vs += v.getSource() }
+      return vs
+    }
+
+    def hasVotes(v: IMDBdatabaseQuery#VoteRole): Boolean = {
+      return getVotes.contains(v)
+    }
+
+    def addVotes(v: IMDBdatabaseQuery#VoteRole): Boolean = {
+      if (hasVotes(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new VoteFilmFilmRole(v, this)
+      return true
+    }
+
+    def removeVotes(v: IMDBdatabaseQuery#VoteRole): Boolean = {
+      if (!hasVotes(v)) return false
+      votes.foreach { h =>
+        if (h.getSource() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeFiguresIntern(v: IMDBdatabaseQuery#FilmFiguresFigureRole): Unit = {
+      figures -= v
+    }
+
+    private[IMDBdatabaseQuery] def setFiguresIntern(v: IMDBdatabaseQuery#FilmFiguresFigureRole): Unit = {
+      figures += v
+    }
+
+    def getFigures(): Set[IMDBdatabaseQuery#FigureRole] = {
+      var vs: Set[IMDBdatabaseQuery#FigureRole] = Set.empty
+      figures.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasFigures(v: IMDBdatabaseQuery#FigureRole): Boolean = {
+      return getFigures.contains(v)
+    }
+
+    def addFigures(v: IMDBdatabaseQuery#FigureRole): Boolean = {
+      if (hasFigures(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new FilmFiguresFigureRole(this, v)
+      return true
+    }
+
+    def removeFigures(v: IMDBdatabaseQuery#FigureRole): Boolean = {
+      if (!hasFigures(v)) return false
+      figures.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override def toString(): String = {
+      "FilmRole:"
+    }
+
+  }
+
+  class VoteRole extends AQueryViewRole {
+
+    private var user: IMDBdatabaseQuery#VoteUserUserRole = null
+    private var library: IMDBdatabaseQuery#IMDBVotesVoteRole = null
+    private var film: IMDBdatabaseQuery#VoteFilmFilmRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Vote(0)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      if (user != null) user.deleteElement()
+      if (library != null) library.deleteElement()
+      if (film != null) film.deleteElement()
+    }
+
+    def getScoreView(): Int = {
+      +this getScore ()
+    }
+
+    def setScoreView(score: Int, check: CheckingOption.Value): Unit = {
+      +this setScore (score)
+      connected.addAttributeFilter("score", score.toString(), check)
+    }
+
+    private[IMDBdatabaseQuery] def removeUserIntern(v: IMDBdatabaseQuery#VoteUserUserRole): Unit = {
+      user = null
+    }
+
+    private[IMDBdatabaseQuery] def setUserIntern(v: IMDBdatabaseQuery#VoteUserUserRole): Unit = {
+      user = v
+    }
+
+    def getUser(): IMDBdatabaseQuery#UserRole = {
+      return user.getTarget()
+    }
+
+    def setUser(v: IMDBdatabaseQuery#UserRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (user != null) {
+        if (user.getTarget() == v) return false
+        user.deleteElement()
+      }
+      new VoteUserUserRole(this, v)
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeLibraryIntern(v: IMDBdatabaseQuery#IMDBVotesVoteRole): Unit = {
+      library = null
+    }
+
+    private[IMDBdatabaseQuery] def setLibraryIntern(v: IMDBdatabaseQuery#IMDBVotesVoteRole): Unit = {
+      library = v
+    }
+
+    def getLibrary(): IMDBdatabaseQuery#IMDBRole = {
+      return library.getSource()
+    }
+
+    def setLibrary(v: IMDBdatabaseQuery#IMDBRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (library != null) {
+        if (library.getSource() == v) return false
+        library.deleteElement()
+      }
+      new IMDBVotesVoteRole(v, this)
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeFilmIntern(v: IMDBdatabaseQuery#VoteFilmFilmRole): Unit = {
+      film = null
+    }
+
+    private[IMDBdatabaseQuery] def setFilmIntern(v: IMDBdatabaseQuery#VoteFilmFilmRole): Unit = {
+      film = v
+    }
+
+    def getFilm(): IMDBdatabaseQuery#FilmRole = {
+      return film.getTarget()
+    }
+
+    def setFilm(v: IMDBdatabaseQuery#FilmRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (film != null) {
+        if (film.getTarget() == v) return false
+        film.deleteElement()
+      }
+      new VoteFilmFilmRole(this, v)
+      return true
+    }
+
+    override def toString(): String = {
+      "VoteRole:"
+    }
+
+  }
+
+  class ActorRole extends PersonRole() {
+
+    private var plays: Set[IMDBdatabaseQuery#FigurePlayedByActorRole] = Set.empty
+    private var library: IMDBdatabaseQuery#IMDBActorsActorRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Actor(0, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      plays.foreach(_.deleteElement())
+      if (library != null) library.deleteElement()
+    }
+
+    private[IMDBdatabaseQuery] def removePlaysIntern(v: IMDBdatabaseQuery#FigurePlayedByActorRole): Unit = {
+      plays -= v
+    }
+
+    private[IMDBdatabaseQuery] def setPlaysIntern(v: IMDBdatabaseQuery#FigurePlayedByActorRole): Unit = {
+      plays += v
+    }
+
+    def getPlays(): Set[IMDBdatabaseQuery#FigureRole] = {
+      var vs: Set[IMDBdatabaseQuery#FigureRole] = Set.empty
+      plays.foreach { v => vs += v.getSource() }
+      return vs
+    }
+
+    def hasPlays(v: IMDBdatabaseQuery#FigureRole): Boolean = {
+      return getPlays.contains(v)
+    }
+
+    def addPlays(v: IMDBdatabaseQuery#FigureRole): Boolean = {
+      if (hasPlays(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new FigurePlayedByActorRole(v, this)
+      return true
+    }
+
+    def removePlays(v: IMDBdatabaseQuery#FigureRole): Boolean = {
+      if (!hasPlays(v)) return false
+      plays.foreach { h =>
+        if (h.getSource() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeLibraryIntern(v: IMDBdatabaseQuery#IMDBActorsActorRole): Unit = {
+      library = null
+    }
+
+    private[IMDBdatabaseQuery] def setLibraryIntern(v: IMDBdatabaseQuery#IMDBActorsActorRole): Unit = {
+      library = v
+    }
+
+    def getLibrary(): IMDBdatabaseQuery#IMDBRole = {
+      return library.getSource()
+    }
+
+    def setLibrary(v: IMDBdatabaseQuery#IMDBRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (library != null) {
+        if (library.getSource() == v) return false
+        library.deleteElement()
+      }
+      new IMDBActorsActorRole(v, this)
+      return true
+    }
+
+    override def toString(): String = {
+      "ActorRole:"
+    }
+
+  }
+
+  class PersonRole extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Person(0, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getDobView(): Double = {
+      +this getDob ()
+    }
+
+    def setDobView(dob: Double, check: CheckingOption.Value): Unit = {
+      +this setDob (dob)
+      connected.addAttributeFilter("dob", dob.toString(), check)
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String, check: CheckingOption.Value): Unit = {
+      +this setName (name)
+      connected.addAttributeFilter("name", name.toString(), check)
+    }
+
+    override def toString(): String = {
+      "PersonRole:"
+    }
+
+  }
+
+  class FigureRole extends AQueryViewRole {
+
+    private var playedBy: Set[IMDBdatabaseQuery#FigurePlayedByActorRole] = Set.empty
+    private var film: IMDBdatabaseQuery#FilmFiguresFigureRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Figure(null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      playedBy.foreach(_.deleteElement())
+      if (film != null) film.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String, check: CheckingOption.Value): Unit = {
+      +this setName (name)
+      connected.addAttributeFilter("name", name.toString(), check)
+    }
+
+    private[IMDBdatabaseQuery] def removePlayedByIntern(v: IMDBdatabaseQuery#FigurePlayedByActorRole): Unit = {
+      playedBy -= v
+    }
+
+    private[IMDBdatabaseQuery] def setPlayedByIntern(v: IMDBdatabaseQuery#FigurePlayedByActorRole): Unit = {
+      playedBy += v
+    }
+
+    def getPlayedBy(): Set[IMDBdatabaseQuery#ActorRole] = {
+      var vs: Set[IMDBdatabaseQuery#ActorRole] = Set.empty
+      playedBy.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasPlayedBy(v: IMDBdatabaseQuery#ActorRole): Boolean = {
+      return getPlayedBy.contains(v)
+    }
+
+    def addPlayedBy(v: IMDBdatabaseQuery#ActorRole): Boolean = {
+      if (hasPlayedBy(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new FigurePlayedByActorRole(this, v)
+      return true
+    }
+
+    def removePlayedBy(v: IMDBdatabaseQuery#ActorRole): Boolean = {
+      if (!hasPlayedBy(v)) return false
+      playedBy.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseQuery] def removeFilmIntern(v: IMDBdatabaseQuery#FilmFiguresFigureRole): Unit = {
+      film = null
+    }
+
+    private[IMDBdatabaseQuery] def setFilmIntern(v: IMDBdatabaseQuery#FilmFiguresFigureRole): Unit = {
+      film = v
+    }
+
+    def getFilm(): IMDBdatabaseQuery#FilmRole = {
+      return film.getSource()
+    }
+
+    def setFilm(v: IMDBdatabaseQuery#FilmRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (film != null) {
+        if (film.getSource() == v) return false
+        film.deleteElement()
+      }
+      new FilmFiguresFigureRole(v, this)
+      return true
+    }
+
+    override def toString(): String = {
+      "FigureRole:"
+    }
+
+  }
+
+  class UserRole extends PersonRole() {
+
+    private var library: IMDBdatabaseQuery#IMDBUsersUserRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new User(null, null, 0, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      if (library != null) library.deleteElement()
+    }
+
+    def getEmailView(): String = {
+      +this getEmail ()
+    }
+
+    def setEmailView(email: String, check: CheckingOption.Value): Unit = {
+      +this setEmail (email)
+      connected.addAttributeFilter("email", email.toString(), check)
+    }
+
+    def getUserNameView(): String = {
+      +this getUserName ()
+    }
+
+    def setUserNameView(username: String, check: CheckingOption.Value): Unit = {
+      +this setUserName (username)
+      connected.addAttributeFilter("userName", username.toString(), check)
+    }
+
+    private[IMDBdatabaseQuery] def removeLibraryIntern(v: IMDBdatabaseQuery#IMDBUsersUserRole): Unit = {
+      library = null
+    }
+
+    private[IMDBdatabaseQuery] def setLibraryIntern(v: IMDBdatabaseQuery#IMDBUsersUserRole): Unit = {
+      library = v
+    }
+
+    def getLibrary(): IMDBdatabaseQuery#IMDBRole = {
+      return library.getSource()
+    }
+
+    def setLibrary(v: IMDBdatabaseQuery#IMDBRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (library != null) {
+        if (library.getSource() == v) return false
+        library.deleteElement()
+      }
+      new IMDBUsersUserRole(v, this)
+      return true
+    }
+
+    override def toString(): String = {
+      "UserRole:"
+    }
+
+  }
+
+  class FigurePlayedByActorRole(private val source: IMDBdatabaseQuery#FigureRole, private val target: IMDBdatabaseQuery#ActorRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setPlaysIntern(this)
+      source.setPlayedByIntern(this)
+      val sp: Figure = source.player.right.get.asInstanceOf[Figure]
+      val tp: Actor = target.player.right.get.asInstanceOf[Actor]
+      val v: FigurePlayedByActor = new FigurePlayedByActor(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removePlayedByIntern(this)
+      target.removePlaysIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): IMDBdatabaseQuery#FigureRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseQuery#ActorRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "FigurePlayedByActorRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class VoteUserUserRole(private val source: IMDBdatabaseQuery#VoteRole, private val target: IMDBdatabaseQuery#UserRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setUserIntern(this)
+      val sp: Vote = source.player.right.get.asInstanceOf[Vote]
+      val tp: User = target.player.right.get.asInstanceOf[User]
+      val v: VoteUserUser = new VoteUserUser(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeUserIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): IMDBdatabaseQuery#VoteRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseQuery#UserRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "VoteUserUserRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class IMDBUsersUserRole(private val source: IMDBdatabaseQuery#IMDBRole, private val target: IMDBdatabaseQuery#UserRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setLibraryIntern(this)
+      source.setUsersIntern(this)
+      val sp: IMDB = source.player.right.get.asInstanceOf[IMDB]
+      val tp: User = target.player.right.get.asInstanceOf[User]
+      val v: IMDBUsersUser = new IMDBUsersUser(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeUsersIntern(this)
+      target.removeLibraryIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): IMDBdatabaseQuery#IMDBRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseQuery#UserRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "IMDBUsersUserRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class IMDBVotesVoteRole(private val source: IMDBdatabaseQuery#IMDBRole, private val target: IMDBdatabaseQuery#VoteRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setLibraryIntern(this)
+      source.setVotesIntern(this)
+      val sp: IMDB = source.player.right.get.asInstanceOf[IMDB]
+      val tp: Vote = target.player.right.get.asInstanceOf[Vote]
+      val v: IMDBVotesVote = new IMDBVotesVote(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeVotesIntern(this)
+      target.removeLibraryIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): IMDBdatabaseQuery#IMDBRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseQuery#VoteRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "IMDBVotesVoteRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class IMDBActorsActorRole(private val source: IMDBdatabaseQuery#IMDBRole, private val target: IMDBdatabaseQuery#ActorRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setLibraryIntern(this)
+      source.setActorsIntern(this)
+      val sp: IMDB = source.player.right.get.asInstanceOf[IMDB]
+      val tp: Actor = target.player.right.get.asInstanceOf[Actor]
+      val v: IMDBActorsActor = new IMDBActorsActor(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeActorsIntern(this)
+      target.removeLibraryIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): IMDBdatabaseQuery#IMDBRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseQuery#ActorRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "IMDBActorsActorRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class IMDBFilmsFilmRole(private val source: IMDBdatabaseQuery#IMDBRole, private val target: IMDBdatabaseQuery#FilmRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setLibraryIntern(this)
+      source.setFilmsIntern(this)
+      val sp: IMDB = source.player.right.get.asInstanceOf[IMDB]
+      val tp: Film = target.player.right.get.asInstanceOf[Film]
+      val v: IMDBFilmsFilm = new IMDBFilmsFilm(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeFilmsIntern(this)
+      target.removeLibraryIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): IMDBdatabaseQuery#IMDBRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseQuery#FilmRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "IMDBFilmsFilmRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class VoteFilmFilmRole(private val source: IMDBdatabaseQuery#VoteRole, private val target: IMDBdatabaseQuery#FilmRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setVotesIntern(this)
+      source.setFilmIntern(this)
+      val sp: Vote = source.player.right.get.asInstanceOf[Vote]
+      val tp: Film = target.player.right.get.asInstanceOf[Film]
+      val v: VoteFilmFilm = new VoteFilmFilm(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeFilmIntern(this)
+      target.removeVotesIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): IMDBdatabaseQuery#VoteRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseQuery#FilmRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "VoteFilmFilmRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class FilmFiguresFigureRole(private val source: IMDBdatabaseQuery#FilmRole, private val target: IMDBdatabaseQuery#FigureRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setFilmIntern(this)
+      source.setFiguresIntern(this)
+      val sp: Film = source.player.right.get.asInstanceOf[Film]
+      val tp: Figure = target.player.right.get.asInstanceOf[Figure]
+      val v: FilmFiguresFigure = new FilmFiguresFigure(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeFiguresIntern(this)
+      target.removeFilmIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): IMDBdatabaseQuery#FilmRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseQuery#FigureRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "FilmFiguresFigureRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/query/LibraryQuery.scala b/src/main/scala/query/LibraryQuery.scala
new file mode 100644
index 0000000..809b0f1
--- /dev/null
+++ b/src/main/scala/query/LibraryQuery.scala
@@ -0,0 +1,253 @@
+package query
+
+import lib.EmployeeManagerEmployee
+import lib.Library
+import lib.HelperPerson
+import lib.Person
+import lib.LibraryEmployeesEmployee
+import org.rosi_project.model_management.sum.query.IQueryViewCompartment
+import lib.Employee
+import org.rosi_project.model_management.sum.query.CheckingOption
+
+class LibraryQuery extends IQueryViewCompartment {
+
+  init("LibraryQuery")
+
+  def createLibrary(): LibraryQuery#LibraryRole = {
+    return new LibraryRole()
+  }
+
+  def createEmployee(): LibraryQuery#EmployeeRole = {
+    return new EmployeeRole()
+  }
+
+  def createPerson(): LibraryQuery#PersonRole = {
+    return new PersonRole()
+  }
+
+  override def toString(): String = {
+    "LibraryQuery:"
+  }
+
+  class LibraryRole extends AQueryViewRole {
+
+    private var employees: Set[LibraryQuery#LibraryEmployeesEmployeeRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Library(null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      employees.foreach(_.deleteElement())
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String, check: CheckingOption.Value): Unit = {
+      +this setName (name)
+      connected.addAttributeFilter("name", name.toString(), check)
+    }
+
+    private[LibraryQuery] def removeEmployeesIntern(v: LibraryQuery#LibraryEmployeesEmployeeRole): Unit = {
+      employees -= v
+    }
+
+    private[LibraryQuery] def setEmployeesIntern(v: LibraryQuery#LibraryEmployeesEmployeeRole): Unit = {
+      employees += v
+    }
+
+    def getEmployees(): Set[LibraryQuery#EmployeeRole] = {
+      var vs: Set[LibraryQuery#EmployeeRole] = Set.empty
+      employees.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasEmployees(v: LibraryQuery#EmployeeRole): Boolean = {
+      return getEmployees.contains(v)
+    }
+
+    def addEmployees(v: LibraryQuery#EmployeeRole): Boolean = {
+      if (hasEmployees(v) || !containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      new LibraryEmployeesEmployeeRole(this, v)
+      return true
+    }
+
+    def removeEmployees(v: LibraryQuery#EmployeeRole): Boolean = {
+      if (!hasEmployees(v)) return false
+      employees.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override def toString(): String = {
+      "LibraryRole:"
+    }
+
+  }
+
+  class EmployeeRole extends PersonRole() {
+
+    private var manager: LibraryQuery#EmployeeManagerEmployeeRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Employee(0, null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+      if (manager != null) manager.deleteElement()
+    }
+
+    def getSalaryView(): Double = {
+      +this getSalary ()
+    }
+
+    def setSalaryView(salary: Double, check: CheckingOption.Value): Unit = {
+      +this setSalary (salary)
+      connected.addAttributeFilter("salary", salary.toString(), check)
+    }
+
+    private[LibraryQuery] def removeManagerIntern(v: LibraryQuery#EmployeeManagerEmployeeRole): Unit = {
+      manager = null
+    }
+
+    private[LibraryQuery] def setManagerIntern(v: LibraryQuery#EmployeeManagerEmployeeRole): Unit = {
+      manager = v
+    }
+
+    def getManager(): LibraryQuery#EmployeeRole = {
+      return manager.getTarget()
+    }
+
+    def setManager(v: LibraryQuery#EmployeeRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AQueryViewRole])) return false
+      if (manager != null) {
+        if (manager.getTarget() == v) return false
+        manager.deleteElement()
+      }
+      new EmployeeManagerEmployeeRole(this, v)
+      return true
+    }
+
+    override def toString(): String = {
+      "EmployeeRole:"
+    }
+
+  }
+
+  class PersonRole extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new HelperPerson(null)
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String, check: CheckingOption.Value): Unit = {
+      +this setName (name)
+      connected.addAttributeFilter("name", name.toString(), check)
+    }
+
+    override def toString(): String = {
+      "PersonRole:"
+    }
+
+  }
+
+  class LibraryEmployeesEmployeeRole(private val source: LibraryQuery#LibraryRole, private val target: LibraryQuery#EmployeeRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setEmployeesIntern(this)
+      val sp: Library = source.player.right.get.asInstanceOf[Library]
+      val tp: Employee = target.player.right.get.asInstanceOf[Employee]
+      val v: LibraryEmployeesEmployee = new LibraryEmployeesEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeEmployeesIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): LibraryQuery#LibraryRole = {
+      source
+    }
+
+    def getTarget(): LibraryQuery#EmployeeRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "LibraryEmployeesEmployeeRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+  class EmployeeManagerEmployeeRole(private val source: LibraryQuery#EmployeeRole, private val target: LibraryQuery#EmployeeRole) extends AQueryViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setManagerIntern(this)
+      val sp: Employee = source.player.right.get.asInstanceOf[Employee]
+      val tp: Employee = target.player.right.get.asInstanceOf[Employee]
+      val v: EmployeeManagerEmployee = new EmployeeManagerEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeManagerIntern(this)
+      super.deleteElement()
+    }
+
+    def getSource(): LibraryQuery#EmployeeRole = {
+      source
+    }
+
+    def getTarget(): LibraryQuery#EmployeeRole = {
+      target
+    }
+
+    override def toString(): String = {
+      "EmployeeManagerEmployeeRole:" + " source=" + source + " target=" + target
+    }
+
+  }
+
+}
+
+
+
+    
\ No newline at end of file
diff --git a/src/main/scala/view/AMLLanguageView.scala b/src/main/scala/view/AMLLanguageView.scala
new file mode 100644
index 0000000..0f923fb
--- /dev/null
+++ b/src/main/scala/view/AMLLanguageView.scala
@@ -0,0 +1,463 @@
+package view
+
+import org.rosi_project.model_management.sum.IViewCompartment
+import aml.SystemUnitClassInternalElementsInternalElement
+import aml.InternalElement
+import aml.SystemUnitClassAttributesAttribute
+import aml.CAEXObject
+import aml.Attribute
+import aml.InstanceHierarchyInternalElementsInternalElement
+import aml.InternalElementBaseSystemUnitSystemUnitClass
+import aml.InstanceHierarchy
+import aml.SystemUnitClass
+import org.rosi_project.model_management.sum.IViewTypeInfo
+import org.rosi_project.model_management.sum.join.IJoinInfo
+
+class AMLLanguageView private extends IViewCompartment {
+
+  protected def isViewable(className: Object): Boolean = {
+    if (className.isInstanceOf[SystemUnitClassInternalElementsInternalElement] || className.isInstanceOf[InternalElementBaseSystemUnitSystemUnitClass] || className.isInstanceOf[InstanceHierarchyInternalElementsInternalElement] || className.isInstanceOf[SystemUnitClass] || className.isInstanceOf[SystemUnitClassAttributesAttribute] || className.isInstanceOf[InstanceHierarchy] || className.isInstanceOf[Attribute] || className.isInstanceOf[InternalElement]) return true
+    return false
+  }
+
+  def getViewName(): String = {
+    AMLLanguageView.getViewName()
+  }
+
+  protected def getNaturalRole(className: Object): AViewRole = {
+    if (className.isInstanceOf[SystemUnitClass]) return new SystemUnitClassRole(null, null)
+    if (className.isInstanceOf[InternalElement]) return new InternalElementRole(null, null)
+    if (className.isInstanceOf[Attribute]) return new AttributeRole(null, null, null)
+    if (className.isInstanceOf[InstanceHierarchy]) return new InstanceHierarchyRole(null, null)
+    return null
+  }
+
+  protected def getRelationalRole(className: Object, sourceRole: AViewRole, targetRole: AViewRole): AViewRole = {
+    if (className.isInstanceOf[SystemUnitClassInternalElementsInternalElement]) return new SystemUnitClassInternalElementsInternalElementRole(sourceRole.asInstanceOf[SystemUnitClassRole], targetRole.asInstanceOf[InternalElementRole])
+    if (className.isInstanceOf[SystemUnitClassAttributesAttribute]) return new SystemUnitClassAttributesAttributeRole(sourceRole.asInstanceOf[SystemUnitClassRole], targetRole.asInstanceOf[AttributeRole])
+    if (className.isInstanceOf[InstanceHierarchyInternalElementsInternalElement]) return new InstanceHierarchyInternalElementsInternalElementRole(sourceRole.asInstanceOf[InstanceHierarchyRole], targetRole.asInstanceOf[InternalElementRole])
+    if (className.isInstanceOf[InternalElementBaseSystemUnitSystemUnitClass]) return new InternalElementBaseSystemUnitSystemUnitClassRole(sourceRole.asInstanceOf[InternalElementRole], targetRole.asInstanceOf[SystemUnitClassRole])
+    return null
+  }
+
+  override def toString(): String = {
+    "VC: AMLLanguageView"
+  }
+
+  def createSystemUnitClass(name: String, id: String): AMLLanguageView#SystemUnitClassRole = {
+    return new SystemUnitClassRole(name, id)
+  }
+
+  def createInternalElement(name: String, id: String): AMLLanguageView#InternalElementRole = {
+    return new InternalElementRole(name, id)
+  }
+
+  def createAttribute(value: String, name: String, id: String): AMLLanguageView#AttributeRole = {
+    return new AttributeRole(value, name, id)
+  }
+
+  def createInstanceHierarchy(name: String, id: String): AMLLanguageView#InstanceHierarchyRole = {
+    return new InstanceHierarchyRole(name, id)
+  }
+
+  class SystemUnitClassRole(c_Name: String, c_Id: String) extends CAEXObjectRole(c_Name, c_Id) {
+
+    private var internalElements: Set[AMLLanguageView#SystemUnitClassInternalElementsInternalElementRole] = Set.empty
+    private var attributes: Set[AMLLanguageView#SystemUnitClassAttributesAttributeRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new SystemUnitClass(name, id)
+    }
+
+    override def toString(): String = {
+      "VNR: SystemUnitClassRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    private[AMLLanguageView] def removeInternalElementsIntern(v: AMLLanguageView#SystemUnitClassInternalElementsInternalElementRole): Unit = {
+      internalElements -= v
+    }
+
+    private[AMLLanguageView] def setInternalElementsIntern(v: AMLLanguageView#SystemUnitClassInternalElementsInternalElementRole): Unit = {
+      internalElements += v
+    }
+
+    def getInternalElements(): Set[AMLLanguageView#InternalElementRole] = {
+      var vs: Set[AMLLanguageView#InternalElementRole] = Set.empty
+      internalElements.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasInternalElements(v: AMLLanguageView#InternalElementRole): Boolean = {
+      return getInternalElements.contains(v)
+    }
+
+    def addInternalElements(v: AMLLanguageView#InternalElementRole): Boolean = {
+      if (hasInternalElements(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new SystemUnitClassInternalElementsInternalElementRole(this, v)
+      return true
+    }
+
+    def removeInternalElements(v: AMLLanguageView#InternalElementRole): Boolean = {
+      if (!hasInternalElements(v)) return false
+      internalElements.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[AMLLanguageView] def removeAttributesIntern(v: AMLLanguageView#SystemUnitClassAttributesAttributeRole): Unit = {
+      attributes -= v
+    }
+
+    private[AMLLanguageView] def setAttributesIntern(v: AMLLanguageView#SystemUnitClassAttributesAttributeRole): Unit = {
+      attributes += v
+    }
+
+    def getAttributes(): Set[AMLLanguageView#AttributeRole] = {
+      var vs: Set[AMLLanguageView#AttributeRole] = Set.empty
+      attributes.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasAttributes(v: AMLLanguageView#AttributeRole): Boolean = {
+      return getAttributes.contains(v)
+    }
+
+    def addAttributes(v: AMLLanguageView#AttributeRole): Boolean = {
+      if (hasAttributes(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new SystemUnitClassAttributesAttributeRole(this, v)
+      return true
+    }
+
+    def removeAttributes(v: AMLLanguageView#AttributeRole): Boolean = {
+      if (!hasAttributes(v)) return false
+      attributes.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+  }
+
+  class AttributeRole(protected val value: String, c_Name: String, c_Id: String) extends CAEXObjectRole(c_Name, c_Id) {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Attribute(value, name, id)
+    }
+
+    override def toString(): String = {
+      "VNR: AttributeRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getValueView(): String = {
+      +this getValue ()
+    }
+
+    def setValueView(value: String): Unit = {
+      +this setValue (value)
+      +this changeSomething ()
+    }
+
+  }
+
+  class InstanceHierarchyRole(c_Name: String, c_Id: String) extends CAEXObjectRole(c_Name, c_Id) {
+
+    private var internalElements: Set[AMLLanguageView#InstanceHierarchyInternalElementsInternalElementRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new InstanceHierarchy(name, id)
+    }
+
+    override def toString(): String = {
+      "VNR: InstanceHierarchyRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    private[AMLLanguageView] def removeInternalElementsIntern(v: AMLLanguageView#InstanceHierarchyInternalElementsInternalElementRole): Unit = {
+      internalElements -= v
+    }
+
+    private[AMLLanguageView] def setInternalElementsIntern(v: AMLLanguageView#InstanceHierarchyInternalElementsInternalElementRole): Unit = {
+      internalElements += v
+    }
+
+    def getInternalElements(): Set[AMLLanguageView#InternalElementRole] = {
+      var vs: Set[AMLLanguageView#InternalElementRole] = Set.empty
+      internalElements.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasInternalElements(v: AMLLanguageView#InternalElementRole): Boolean = {
+      return getInternalElements.contains(v)
+    }
+
+    def addInternalElements(v: AMLLanguageView#InternalElementRole): Boolean = {
+      if (hasInternalElements(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new InstanceHierarchyInternalElementsInternalElementRole(this, v)
+      return true
+    }
+
+    def removeInternalElements(v: AMLLanguageView#InternalElementRole): Boolean = {
+      if (!hasInternalElements(v)) return false
+      internalElements.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+  }
+
+  abstract class CAEXObjectRole(protected val name: String, protected val id: String) extends AViewRole {
+
+    override def toString(): String = {
+      "VNR: CAEXObjectRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+    def getIdView(): String = {
+      +this getId ()
+    }
+
+    def setIdView(id: String): Unit = {
+      +this setId (id)
+      +this changeSomething ()
+    }
+
+  }
+
+  class InternalElementRole(s_Name: String, s_Id: String) extends SystemUnitClassRole(s_Name, s_Id) {
+
+    private var baseSystemUnit: AMLLanguageView#InternalElementBaseSystemUnitSystemUnitClassRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new InternalElement(name, id)
+    }
+
+    override def toString(): String = {
+      "VNR: InternalElementRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    private[AMLLanguageView] def removeBaseSystemUnitIntern(v: AMLLanguageView#InternalElementBaseSystemUnitSystemUnitClassRole): Unit = {
+      baseSystemUnit = null
+    }
+
+    private[AMLLanguageView] def setBaseSystemUnitIntern(v: AMLLanguageView#InternalElementBaseSystemUnitSystemUnitClassRole): Unit = {
+      baseSystemUnit = v
+    }
+
+    def getBaseSystemUnit(): AMLLanguageView#SystemUnitClassRole = {
+      return baseSystemUnit.getTarget()
+    }
+
+    def setBaseSystemUnit(v: AMLLanguageView#SystemUnitClassRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (baseSystemUnit != null) {
+        if (baseSystemUnit.getTarget() == v) return false
+        baseSystemUnit.deleteElement()
+      }
+      new InternalElementBaseSystemUnitSystemUnitClassRole(this, v)
+      return true
+    }
+
+  }
+
+  class SystemUnitClassInternalElementsInternalElementRole(private val source: AMLLanguageView#SystemUnitClassRole, private val target: AMLLanguageView#InternalElementRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setInternalElementsIntern(this)
+      val sp: SystemUnitClass = getPlayerOfType(source, "SystemUnitClass").asInstanceOf[SystemUnitClass]
+      val tp: InternalElement = getPlayerOfType(target, "InternalElement").asInstanceOf[InternalElement]
+      val v: SystemUnitClassInternalElementsInternalElement = new SystemUnitClassInternalElementsInternalElement(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeInternalElementsIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: SystemUnitClassInternalElementsInternalElementRole"
+    }
+
+    def getSource(): AMLLanguageView#SystemUnitClassRole = {
+      source
+    }
+
+    def getTarget(): AMLLanguageView#InternalElementRole = {
+      target
+    }
+
+  }
+
+  class SystemUnitClassAttributesAttributeRole(private val source: AMLLanguageView#SystemUnitClassRole, private val target: AMLLanguageView#AttributeRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setAttributesIntern(this)
+      val sp: SystemUnitClass = getPlayerOfType(source, "SystemUnitClass").asInstanceOf[SystemUnitClass]
+      val tp: Attribute = getPlayerOfType(target, "Attribute").asInstanceOf[Attribute]
+      val v: SystemUnitClassAttributesAttribute = new SystemUnitClassAttributesAttribute(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeAttributesIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: SystemUnitClassAttributesAttributeRole"
+    }
+
+    def getSource(): AMLLanguageView#SystemUnitClassRole = {
+      source
+    }
+
+    def getTarget(): AMLLanguageView#AttributeRole = {
+      target
+    }
+
+  }
+
+  class InstanceHierarchyInternalElementsInternalElementRole(private val source: AMLLanguageView#InstanceHierarchyRole, private val target: AMLLanguageView#InternalElementRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setInternalElementsIntern(this)
+      val sp: InstanceHierarchy = getPlayerOfType(source, "InstanceHierarchy").asInstanceOf[InstanceHierarchy]
+      val tp: InternalElement = getPlayerOfType(target, "InternalElement").asInstanceOf[InternalElement]
+      val v: InstanceHierarchyInternalElementsInternalElement = new InstanceHierarchyInternalElementsInternalElement(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeInternalElementsIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: InstanceHierarchyInternalElementsInternalElementRole"
+    }
+
+    def getSource(): AMLLanguageView#InstanceHierarchyRole = {
+      source
+    }
+
+    def getTarget(): AMLLanguageView#InternalElementRole = {
+      target
+    }
+
+  }
+
+  class InternalElementBaseSystemUnitSystemUnitClassRole(private val source: AMLLanguageView#InternalElementRole, private val target: AMLLanguageView#SystemUnitClassRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setBaseSystemUnitIntern(this)
+      val sp: InternalElement = getPlayerOfType(source, "InternalElement").asInstanceOf[InternalElement]
+      val tp: SystemUnitClass = getPlayerOfType(target, "SystemUnitClass").asInstanceOf[SystemUnitClass]
+      val v: InternalElementBaseSystemUnitSystemUnitClass = new InternalElementBaseSystemUnitSystemUnitClass(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeBaseSystemUnitIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: InternalElementBaseSystemUnitSystemUnitClassRole"
+    }
+
+    def getSource(): AMLLanguageView#InternalElementRole = {
+      source
+    }
+
+    def getTarget(): AMLLanguageView#SystemUnitClassRole = {
+      target
+    }
+
+  }
+
+}
+
+object AMLLanguageView extends IViewTypeInfo {
+
+  override def getViewName(): String = "AMLLanguageView"
+
+  def getJoinInfos(): Set[IJoinInfo] = Set.empty
+
+  protected def getNewInstance(): IViewCompartment = new AMLLanguageView()
+
+  def getNewView(): AMLLanguageView = getNewViewTypeInstance().asInstanceOf[AMLLanguageView]
+}
+     
+
+    
\ No newline at end of file
diff --git a/src/main/scala/view/EclipseLibraryView.scala b/src/main/scala/view/EclipseLibraryView.scala
new file mode 100644
index 0000000..4c6e617
--- /dev/null
+++ b/src/main/scala/view/EclipseLibraryView.scala
@@ -0,0 +1,1312 @@
+package view
+
+import elib.BookAuthorWriter
+import org.rosi_project.model_management.sum.IViewCompartment
+import elib.BookCategory
+import elib.BookOnTapeReaderPerson
+import elib.Employee
+import elib.LibraryBranchesLibrary
+import elib.VideoCassette
+import elib.BookOnTapeAuthorWriter
+import elib.LibraryBooksBook
+import elib.LibraryBorrowersBorrower
+import elib.Borrower
+import elib.LibraryParentBranchLibrary
+import elib.Periodical
+import elib.Writer
+import elib.AudioVisualItem
+import elib.EmployeeManagerEmployee
+import elib.Person
+import java.util.Date
+import elib.BookOnTape
+import elib.VideoCassetteCastPerson
+import elib.Library
+import elib.Book
+import elib.LibraryWritersWriter
+import elib.LibraryEmployeesEmployee
+import elib.CirculatingItem
+import elib.Item
+import elib.LibraryStockItem
+
+import org.rosi_project.model_management.sum.IViewTypeInfo
+import org.rosi_project.model_management.sum.join.IJoinInfo
+
+class EclipseLibraryView private extends IViewCompartment {
+
+  protected def isViewable(className: Object): Boolean = {
+    if (className.isInstanceOf[LibraryStockItem] || className.isInstanceOf[EmployeeManagerEmployee] || className.isInstanceOf[Writer] || className.isInstanceOf[LibraryWritersWriter] || className.isInstanceOf[BookAuthorWriter] || className.isInstanceOf[BookOnTapeAuthorWriter] || className.isInstanceOf[Person] || className.isInstanceOf[LibraryEmployeesEmployee] || className.isInstanceOf[Borrower] || className.isInstanceOf[BookOnTape] || className.isInstanceOf[CirculatingItem] || className.isInstanceOf[Library] || className.isInstanceOf[LibraryBranchesLibrary] || className.isInstanceOf[BookOnTapeReaderPerson] || className.isInstanceOf[Periodical] || className.isInstanceOf[LibraryBooksBook] || className.isInstanceOf[VideoCassette] || className.isInstanceOf[AudioVisualItem] || className.isInstanceOf[Book] || className.isInstanceOf[LibraryParentBranchLibrary] || className.isInstanceOf[Employee] || className.isInstanceOf[LibraryBorrowersBorrower] || className.isInstanceOf[VideoCassetteCastPerson] || className.isInstanceOf[Item]) return true
+    return false
+  }
+
+  def getViewName(): String = {
+    EclipseLibraryView.getViewName()
+  }
+
+  protected def getNaturalRole(className: Object): AViewRole = {
+    if (className.isInstanceOf[Library]) return new LibraryRole(null)
+    if (className.isInstanceOf[Periodical]) return new PeriodicalRole(0, null, null)
+    if (className.isInstanceOf[Person]) return new PersonRole(null, null)
+    if (className.isInstanceOf[Borrower]) return new BorrowerRole(null, null)
+    if (className.isInstanceOf[Item]) return new ItemRole(null)
+    if (className.isInstanceOf[AudioVisualItem]) return new AudioVisualItemRole(false, 0, null, null)
+    if (className.isInstanceOf[CirculatingItem]) return new CirculatingItemRole(null)
+    if (className.isInstanceOf[BookOnTape]) return new BookOnTapeRole(false, 0, null, null)
+    if (className.isInstanceOf[VideoCassette]) return new VideoCassetteRole(false, 0, null, null)
+    if (className.isInstanceOf[Book]) return new BookRole(null, 0, null, null)
+    if (className.isInstanceOf[Writer]) return new WriterRole(null, null, null)
+    if (className.isInstanceOf[Employee]) return new EmployeeRole(null, null)
+    return null
+  }
+
+  protected def getRelationalRole(className: Object, sourceRole: AViewRole, targetRole: AViewRole): AViewRole = {
+    if (className.isInstanceOf[EmployeeManagerEmployee]) return new EmployeeManagerEmployeeRole(sourceRole.asInstanceOf[EmployeeRole], targetRole.asInstanceOf[EmployeeRole])
+    if (className.isInstanceOf[LibraryStockItem]) return new LibraryStockItemRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[ItemRole])
+    if (className.isInstanceOf[LibraryWritersWriter]) return new LibraryWritersWriterRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[WriterRole])
+    if (className.isInstanceOf[LibraryBooksBook]) return new LibraryBooksBookRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[BookRole])
+    if (className.isInstanceOf[LibraryParentBranchLibrary]) return new LibraryParentBranchLibraryRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[LibraryRole])
+    if (className.isInstanceOf[LibraryBranchesLibrary]) return new LibraryBranchesLibraryRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[LibraryRole])
+    if (className.isInstanceOf[LibraryEmployeesEmployee]) return new LibraryEmployeesEmployeeRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[EmployeeRole])
+    if (className.isInstanceOf[BookAuthorWriter]) return new BookAuthorWriterRole(sourceRole.asInstanceOf[BookRole], targetRole.asInstanceOf[WriterRole])
+    if (className.isInstanceOf[VideoCassetteCastPerson]) return new VideoCassetteCastPersonRole(sourceRole.asInstanceOf[VideoCassetteRole], targetRole.asInstanceOf[PersonRole])
+    if (className.isInstanceOf[BookOnTapeAuthorWriter]) return new BookOnTapeAuthorWriterRole(sourceRole.asInstanceOf[BookOnTapeRole], targetRole.asInstanceOf[WriterRole])
+    if (className.isInstanceOf[BookOnTapeReaderPerson]) return new BookOnTapeReaderPersonRole(sourceRole.asInstanceOf[BookOnTapeRole], targetRole.asInstanceOf[PersonRole])
+    if (className.isInstanceOf[LibraryBorrowersBorrower]) return new LibraryBorrowersBorrowerRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[BorrowerRole])
+    return null
+  }
+
+  override def toString(): String = {
+    "VC: EclipseLibraryView"
+  }
+
+  def createLibrary(name: String): EclipseLibraryView#LibraryRole = {
+    return new LibraryRole(name)
+  }
+
+  def createPeriodical(issuesPerYear: Int, title: String, publicationDate: Date): EclipseLibraryView#PeriodicalRole = {
+    return new PeriodicalRole(issuesPerYear, title, publicationDate)
+  }
+
+  def createPerson(lastName: String, firstName: String): EclipseLibraryView#PersonRole = {
+    return new PersonRole(lastName, firstName)
+  }
+
+  def createBorrower(lastName: String, firstName: String): EclipseLibraryView#BorrowerRole = {
+    return new BorrowerRole(lastName, firstName)
+  }
+
+  def createItem(publicationDate: Date): EclipseLibraryView#ItemRole = {
+    return new ItemRole(publicationDate)
+  }
+
+  def createAudioVisualItem(damaged: Boolean, minutesLength: Int, title: String, publicationDate: Date): EclipseLibraryView#AudioVisualItemRole = {
+    return new AudioVisualItemRole(damaged, minutesLength, title, publicationDate)
+  }
+
+  def createCirculatingItem(publicationDate: Date): EclipseLibraryView#CirculatingItemRole = {
+    return new CirculatingItemRole(publicationDate)
+  }
+
+  def createBookOnTape(damaged: Boolean, minutesLength: Int, title: String, publicationDate: Date): EclipseLibraryView#BookOnTapeRole = {
+    return new BookOnTapeRole(damaged, minutesLength, title, publicationDate)
+  }
+
+  def createVideoCassette(damaged: Boolean, minutesLength: Int, title: String, publicationDate: Date): EclipseLibraryView#VideoCassetteRole = {
+    return new VideoCassetteRole(damaged, minutesLength, title, publicationDate)
+  }
+
+  def createBook(category: BookCategory.Value, pages: Int, title: String, publicationDate: Date): EclipseLibraryView#BookRole = {
+    return new BookRole(category, pages, title, publicationDate)
+  }
+
+  def createWriter(name: String, lastName: String, firstName: String): EclipseLibraryView#WriterRole = {
+    return new WriterRole(name, lastName, firstName)
+  }
+
+  def createEmployee(lastName: String, firstName: String): EclipseLibraryView#EmployeeRole = {
+    return new EmployeeRole(lastName, firstName)
+  }
+
+  class ItemRole(protected val publicationDate: Date) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Item(publicationDate)
+    }
+
+    override def toString(): String = {
+      "VNR: ItemRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getPublicationDateView(): Date = {
+      +this getPublicationDate ()
+    }
+
+    def setPublicationDateView(publicationdate: Date): Unit = {
+      +this setPublicationDate (publicationdate)
+      +this changeSomething ()
+    }
+
+  }
+
+  class EmployeeRole(p_LastName: String, p_FirstName: String) extends PersonRole(p_LastName, p_FirstName) {
+
+    private var manager: EclipseLibraryView#EmployeeManagerEmployeeRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Employee(lastName, firstName)
+    }
+
+    override def toString(): String = {
+      "VNR: EmployeeRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    private[EclipseLibraryView] def removeManagerIntern(v: EclipseLibraryView#EmployeeManagerEmployeeRole): Unit = {
+      manager = null
+    }
+
+    private[EclipseLibraryView] def setManagerIntern(v: EclipseLibraryView#EmployeeManagerEmployeeRole): Unit = {
+      manager = v
+    }
+
+    def getManager(): EclipseLibraryView#EmployeeRole = {
+      return manager.getTarget()
+    }
+
+    def setManager(v: EclipseLibraryView#EmployeeRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (manager != null) {
+        if (manager.getTarget() == v) return false
+        manager.deleteElement()
+      }
+      new EmployeeManagerEmployeeRole(this, v)
+      return true
+    }
+
+  }
+
+  class PeriodicalRole(protected val issuesPerYear: Int, protected val title: String, i_PublicationDate: Date) extends ItemRole(i_PublicationDate) {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Periodical(issuesPerYear, title, publicationDate)
+    }
+
+    override def toString(): String = {
+      "VNR: PeriodicalRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getIssuesPerYearView(): Int = {
+      +this getIssuesPerYear ()
+    }
+
+    def setIssuesPerYearView(issuesperyear: Int): Unit = {
+      +this setIssuesPerYear (issuesperyear)
+      +this changeSomething ()
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String): Unit = {
+      +this setTitle (title)
+      +this changeSomething ()
+    }
+
+  }
+
+  class VideoCassetteRole(a_Damaged: Boolean, a_MinutesLength: Int, a_Title: String, a_PublicationDate: Date) extends AudioVisualItemRole(a_Damaged, a_MinutesLength, a_Title, a_PublicationDate) {
+
+    private var cast: Set[EclipseLibraryView#VideoCassetteCastPersonRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new VideoCassette(damaged, minutesLength, title, null)
+    }
+
+    override def toString(): String = {
+      "VNR: VideoCassetteRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    private[EclipseLibraryView] def removeCastIntern(v: EclipseLibraryView#VideoCassetteCastPersonRole): Unit = {
+      cast -= v
+    }
+
+    private[EclipseLibraryView] def setCastIntern(v: EclipseLibraryView#VideoCassetteCastPersonRole): Unit = {
+      cast += v
+    }
+
+    def getCast(): Set[EclipseLibraryView#PersonRole] = {
+      var vs: Set[EclipseLibraryView#PersonRole] = Set.empty
+      cast.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasCast(v: EclipseLibraryView#PersonRole): Boolean = {
+      return getCast.contains(v)
+    }
+
+    def addCast(v: EclipseLibraryView#PersonRole): Boolean = {
+      if (hasCast(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new VideoCassetteCastPersonRole(this, v)
+      return true
+    }
+
+    def removeCast(v: EclipseLibraryView#PersonRole): Boolean = {
+      if (!hasCast(v)) return false
+      cast.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+  }
+
+  class AudioVisualItemRole(protected val damaged: Boolean, protected val minutesLength: Int, protected val title: String, c_PublicationDate: Date) extends CirculatingItemRole(c_PublicationDate) {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new AudioVisualItem(damaged, minutesLength, title, null)
+    }
+
+    override def toString(): String = {
+      "VNR: AudioVisualItemRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getDamagedView(): Boolean = {
+      +this getDamaged ()
+    }
+
+    def setDamagedView(damaged: Boolean): Unit = {
+      +this setDamaged (damaged)
+      +this changeSomething ()
+    }
+
+    def getMinutesLengthView(): Int = {
+      +this getMinutesLength ()
+    }
+
+    def setMinutesLengthView(minuteslength: Int): Unit = {
+      +this setMinutesLength (minuteslength)
+      +this changeSomething ()
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String): Unit = {
+      +this setTitle (title)
+      +this changeSomething ()
+    }
+
+  }
+
+  class WriterRole(protected val name: String, p_LastName: String, p_FirstName: String) extends PersonRole(p_LastName, p_FirstName) {
+
+    private var books: Set[EclipseLibraryView#BookAuthorWriterRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Writer(name, lastName, firstName)
+    }
+
+    override def toString(): String = {
+      "VNR: WriterRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+    private[EclipseLibraryView] def removeBooksIntern(v: EclipseLibraryView#BookAuthorWriterRole): Unit = {
+      books -= v
+    }
+
+    private[EclipseLibraryView] def setBooksIntern(v: EclipseLibraryView#BookAuthorWriterRole): Unit = {
+      books += v
+    }
+
+    def getBooks(): Set[EclipseLibraryView#BookRole] = {
+      var vs: Set[EclipseLibraryView#BookRole] = Set.empty
+      books.foreach { v => vs += v.getSource() }
+      return vs
+    }
+
+    def hasBooks(v: EclipseLibraryView#BookRole): Boolean = {
+      return getBooks.contains(v)
+    }
+
+    def addBooks(v: EclipseLibraryView#BookRole): Boolean = {
+      if (hasBooks(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new BookAuthorWriterRole(v, this)
+      return true
+    }
+
+    def removeBooks(v: EclipseLibraryView#BookRole): Boolean = {
+      if (!hasBooks(v)) return false
+      books.foreach { h =>
+        if (h.getSource() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+  }
+
+  class BookRole(protected val category: BookCategory.Value, protected val pages: Int, protected val title: String, c_PublicationDate: Date) extends CirculatingItemRole(c_PublicationDate) {
+
+    private var author: EclipseLibraryView#BookAuthorWriterRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Book(category, pages, title, null)
+    }
+
+    override def toString(): String = {
+      "VNR: BookRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getCategoryView(): BookCategory.Value = {
+      +this getCategory ()
+    }
+
+    def setCategoryView(category: BookCategory.Value): Unit = {
+      +this setCategory (category)
+      +this changeSomething ()
+    }
+
+    def getPagesView(): Int = {
+      +this getPages ()
+    }
+
+    def setPagesView(pages: Int): Unit = {
+      +this setPages (pages)
+      +this changeSomething ()
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String): Unit = {
+      +this setTitle (title)
+      +this changeSomething ()
+    }
+
+    private[EclipseLibraryView] def removeAuthorIntern(v: EclipseLibraryView#BookAuthorWriterRole): Unit = {
+      author = null
+    }
+
+    private[EclipseLibraryView] def setAuthorIntern(v: EclipseLibraryView#BookAuthorWriterRole): Unit = {
+      author = v
+    }
+
+    def getAuthor(): EclipseLibraryView#WriterRole = {
+      return author.getTarget()
+    }
+
+    def setAuthor(v: EclipseLibraryView#WriterRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (author != null) {
+        if (author.getTarget() == v) return false
+        author.deleteElement()
+      }
+      new BookAuthorWriterRole(this, v)
+      return true
+    }
+
+  }
+
+  class LibraryRole(protected val name: String) extends AViewRole {
+
+    private var employees: Set[EclipseLibraryView#LibraryEmployeesEmployeeRole] = Set.empty
+    private var parentBranch: EclipseLibraryView#LibraryParentBranchLibraryRole = null
+    private var writers: Set[EclipseLibraryView#LibraryWritersWriterRole] = Set.empty
+    private var borrowers: Set[EclipseLibraryView#LibraryBorrowersBorrowerRole] = Set.empty
+    private var stock: Set[EclipseLibraryView#LibraryStockItemRole] = Set.empty
+    private var branches: Set[EclipseLibraryView#LibraryBranchesLibraryRole] = Set.empty
+    private var books: Set[EclipseLibraryView#LibraryBooksBookRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Library(name)
+    }
+
+    override def toString(): String = {
+      "VNR: LibraryRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+    private[EclipseLibraryView] def removeEmployeesIntern(v: EclipseLibraryView#LibraryEmployeesEmployeeRole): Unit = {
+      employees -= v
+    }
+
+    private[EclipseLibraryView] def setEmployeesIntern(v: EclipseLibraryView#LibraryEmployeesEmployeeRole): Unit = {
+      employees += v
+    }
+
+    def getEmployees(): Set[EclipseLibraryView#EmployeeRole] = {
+      var vs: Set[EclipseLibraryView#EmployeeRole] = Set.empty
+      employees.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasEmployees(v: EclipseLibraryView#EmployeeRole): Boolean = {
+      return getEmployees.contains(v)
+    }
+
+    def addEmployees(v: EclipseLibraryView#EmployeeRole): Boolean = {
+      if (hasEmployees(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new LibraryEmployeesEmployeeRole(this, v)
+      return true
+    }
+
+    def removeEmployees(v: EclipseLibraryView#EmployeeRole): Boolean = {
+      if (!hasEmployees(v)) return false
+      employees.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryView] def removeParentBranchIntern(v: EclipseLibraryView#LibraryParentBranchLibraryRole): Unit = {
+      parentBranch = null
+    }
+
+    private[EclipseLibraryView] def setParentBranchIntern(v: EclipseLibraryView#LibraryParentBranchLibraryRole): Unit = {
+      parentBranch = v
+    }
+
+    def getParentBranch(): EclipseLibraryView#LibraryRole = {
+      return parentBranch.getTarget()
+    }
+
+    def setParentBranch(v: EclipseLibraryView#LibraryRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (parentBranch != null) {
+        if (parentBranch.getTarget() == v) return false
+        parentBranch.deleteElement()
+      }
+      new LibraryParentBranchLibraryRole(this, v)
+      return true
+    }
+
+    private[EclipseLibraryView] def removeWritersIntern(v: EclipseLibraryView#LibraryWritersWriterRole): Unit = {
+      writers -= v
+    }
+
+    private[EclipseLibraryView] def setWritersIntern(v: EclipseLibraryView#LibraryWritersWriterRole): Unit = {
+      writers += v
+    }
+
+    def getWriters(): Set[EclipseLibraryView#WriterRole] = {
+      var vs: Set[EclipseLibraryView#WriterRole] = Set.empty
+      writers.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasWriters(v: EclipseLibraryView#WriterRole): Boolean = {
+      return getWriters.contains(v)
+    }
+
+    def addWriters(v: EclipseLibraryView#WriterRole): Boolean = {
+      if (hasWriters(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new LibraryWritersWriterRole(this, v)
+      return true
+    }
+
+    def removeWriters(v: EclipseLibraryView#WriterRole): Boolean = {
+      if (!hasWriters(v)) return false
+      writers.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryView] def removeBorrowersIntern(v: EclipseLibraryView#LibraryBorrowersBorrowerRole): Unit = {
+      borrowers -= v
+    }
+
+    private[EclipseLibraryView] def setBorrowersIntern(v: EclipseLibraryView#LibraryBorrowersBorrowerRole): Unit = {
+      borrowers += v
+    }
+
+    def getBorrowers(): Set[EclipseLibraryView#BorrowerRole] = {
+      var vs: Set[EclipseLibraryView#BorrowerRole] = Set.empty
+      borrowers.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasBorrowers(v: EclipseLibraryView#BorrowerRole): Boolean = {
+      return getBorrowers.contains(v)
+    }
+
+    def addBorrowers(v: EclipseLibraryView#BorrowerRole): Boolean = {
+      if (hasBorrowers(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new LibraryBorrowersBorrowerRole(this, v)
+      return true
+    }
+
+    def removeBorrowers(v: EclipseLibraryView#BorrowerRole): Boolean = {
+      if (!hasBorrowers(v)) return false
+      borrowers.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryView] def removeStockIntern(v: EclipseLibraryView#LibraryStockItemRole): Unit = {
+      stock -= v
+    }
+
+    private[EclipseLibraryView] def setStockIntern(v: EclipseLibraryView#LibraryStockItemRole): Unit = {
+      stock += v
+    }
+
+    def getStock(): Set[EclipseLibraryView#ItemRole] = {
+      var vs: Set[EclipseLibraryView#ItemRole] = Set.empty
+      stock.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasStock(v: EclipseLibraryView#ItemRole): Boolean = {
+      return getStock.contains(v)
+    }
+
+    def addStock(v: EclipseLibraryView#ItemRole): Boolean = {
+      if (hasStock(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new LibraryStockItemRole(this, v)
+      return true
+    }
+
+    def removeStock(v: EclipseLibraryView#ItemRole): Boolean = {
+      if (!hasStock(v)) return false
+      stock.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryView] def removeBranchesIntern(v: EclipseLibraryView#LibraryBranchesLibraryRole): Unit = {
+      branches -= v
+    }
+
+    private[EclipseLibraryView] def setBranchesIntern(v: EclipseLibraryView#LibraryBranchesLibraryRole): Unit = {
+      branches += v
+    }
+
+    def getBranches(): Set[EclipseLibraryView#LibraryRole] = {
+      var vs: Set[EclipseLibraryView#LibraryRole] = Set.empty
+      branches.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasBranches(v: EclipseLibraryView#LibraryRole): Boolean = {
+      return getBranches.contains(v)
+    }
+
+    def addBranches(v: EclipseLibraryView#LibraryRole): Boolean = {
+      if (hasBranches(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new LibraryBranchesLibraryRole(this, v)
+      return true
+    }
+
+    def removeBranches(v: EclipseLibraryView#LibraryRole): Boolean = {
+      if (!hasBranches(v)) return false
+      branches.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[EclipseLibraryView] def removeBooksIntern(v: EclipseLibraryView#LibraryBooksBookRole): Unit = {
+      books -= v
+    }
+
+    private[EclipseLibraryView] def setBooksIntern(v: EclipseLibraryView#LibraryBooksBookRole): Unit = {
+      books += v
+    }
+
+    def getBooks(): Set[EclipseLibraryView#BookRole] = {
+      var vs: Set[EclipseLibraryView#BookRole] = Set.empty
+      books.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasBooks(v: EclipseLibraryView#BookRole): Boolean = {
+      return getBooks.contains(v)
+    }
+
+    def addBooks(v: EclipseLibraryView#BookRole): Boolean = {
+      if (hasBooks(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new LibraryBooksBookRole(this, v)
+      return true
+    }
+
+    def removeBooks(v: EclipseLibraryView#BookRole): Boolean = {
+      if (!hasBooks(v)) return false
+      books.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+  }
+
+  class BookOnTapeRole(a_Damaged: Boolean, a_MinutesLength: Int, a_Title: String, a_PublicationDate: Date) extends AudioVisualItemRole(a_Damaged, a_MinutesLength, a_Title, a_PublicationDate) {
+
+    private var author: EclipseLibraryView#BookOnTapeAuthorWriterRole = null
+    private var reader: EclipseLibraryView#BookOnTapeReaderPersonRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new BookOnTape(damaged, minutesLength, title, null)
+    }
+
+    override def toString(): String = {
+      "VNR: BookOnTapeRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    private[EclipseLibraryView] def removeAuthorIntern(v: EclipseLibraryView#BookOnTapeAuthorWriterRole): Unit = {
+      author = null
+    }
+
+    private[EclipseLibraryView] def setAuthorIntern(v: EclipseLibraryView#BookOnTapeAuthorWriterRole): Unit = {
+      author = v
+    }
+
+    def getAuthor(): EclipseLibraryView#WriterRole = {
+      return author.getTarget()
+    }
+
+    def setAuthor(v: EclipseLibraryView#WriterRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (author != null) {
+        if (author.getTarget() == v) return false
+        author.deleteElement()
+      }
+      new BookOnTapeAuthorWriterRole(this, v)
+      return true
+    }
+
+    private[EclipseLibraryView] def removeReaderIntern(v: EclipseLibraryView#BookOnTapeReaderPersonRole): Unit = {
+      reader = null
+    }
+
+    private[EclipseLibraryView] def setReaderIntern(v: EclipseLibraryView#BookOnTapeReaderPersonRole): Unit = {
+      reader = v
+    }
+
+    def getReader(): EclipseLibraryView#PersonRole = {
+      return reader.getTarget()
+    }
+
+    def setReader(v: EclipseLibraryView#PersonRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (reader != null) {
+        if (reader.getTarget() == v) return false
+        reader.deleteElement()
+      }
+      new BookOnTapeReaderPersonRole(this, v)
+      return true
+    }
+
+  }
+
+  class CirculatingItemRole(i_PublicationDate: Date) extends ItemRole(i_PublicationDate) {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new CirculatingItem(publicationDate)
+    }
+
+    override def toString(): String = {
+      "VNR: CirculatingItemRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+  }
+
+  class BorrowerRole(p_LastName: String, p_FirstName: String) extends PersonRole(p_LastName, p_FirstName) {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Borrower(lastName, firstName)
+    }
+
+    override def toString(): String = {
+      "VNR: BorrowerRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+  }
+
+  class PersonRole(protected val lastName: String, protected val firstName: String) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Person(lastName, firstName)
+    }
+
+    override def toString(): String = {
+      "VNR: PersonRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getLastNameView(): String = {
+      +this getLastName ()
+    }
+
+    def setLastNameView(lastname: String): Unit = {
+      +this setLastName (lastname)
+      +this changeSomething ()
+    }
+
+    def getFirstNameView(): String = {
+      +this getFirstName ()
+    }
+
+    def setFirstNameView(firstname: String): Unit = {
+      +this setFirstName (firstname)
+      +this changeSomething ()
+    }
+
+  }
+
+  class LibraryEmployeesEmployeeRole(private val source: EclipseLibraryView#LibraryRole, private val target: EclipseLibraryView#EmployeeRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setEmployeesIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Employee = getPlayerOfType(target, "Employee").asInstanceOf[Employee]
+      val v: LibraryEmployeesEmployee = new LibraryEmployeesEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeEmployeesIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryEmployeesEmployeeRole"
+    }
+
+    def getSource(): EclipseLibraryView#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#EmployeeRole = {
+      target
+    }
+
+  }
+
+  class LibraryParentBranchLibraryRole(private val source: EclipseLibraryView#LibraryRole, private val target: EclipseLibraryView#LibraryRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setParentBranchIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Library = getPlayerOfType(target, "Library").asInstanceOf[Library]
+      val v: LibraryParentBranchLibrary = new LibraryParentBranchLibrary(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeParentBranchIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryParentBranchLibraryRole"
+    }
+
+    def getSource(): EclipseLibraryView#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#LibraryRole = {
+      target
+    }
+
+  }
+
+  class LibraryWritersWriterRole(private val source: EclipseLibraryView#LibraryRole, private val target: EclipseLibraryView#WriterRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setWritersIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Writer = getPlayerOfType(target, "Writer").asInstanceOf[Writer]
+      val v: LibraryWritersWriter = new LibraryWritersWriter(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeWritersIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryWritersWriterRole"
+    }
+
+    def getSource(): EclipseLibraryView#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#WriterRole = {
+      target
+    }
+
+  }
+
+  class BookOnTapeAuthorWriterRole(private val source: EclipseLibraryView#BookOnTapeRole, private val target: EclipseLibraryView#WriterRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setAuthorIntern(this)
+      val sp: BookOnTape = getPlayerOfType(source, "BookOnTape").asInstanceOf[BookOnTape]
+      val tp: Writer = getPlayerOfType(target, "Writer").asInstanceOf[Writer]
+      val v: BookOnTapeAuthorWriter = new BookOnTapeAuthorWriter(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeAuthorIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: BookOnTapeAuthorWriterRole"
+    }
+
+    def getSource(): EclipseLibraryView#BookOnTapeRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#WriterRole = {
+      target
+    }
+
+  }
+
+  class BookOnTapeReaderPersonRole(private val source: EclipseLibraryView#BookOnTapeRole, private val target: EclipseLibraryView#PersonRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setReaderIntern(this)
+      val sp: BookOnTape = getPlayerOfType(source, "BookOnTape").asInstanceOf[BookOnTape]
+      val tp: Person = getPlayerOfType(target, "Person").asInstanceOf[Person]
+      val v: BookOnTapeReaderPerson = new BookOnTapeReaderPerson(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeReaderIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: BookOnTapeReaderPersonRole"
+    }
+
+    def getSource(): EclipseLibraryView#BookOnTapeRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#PersonRole = {
+      target
+    }
+
+  }
+
+  class LibraryBorrowersBorrowerRole(private val source: EclipseLibraryView#LibraryRole, private val target: EclipseLibraryView#BorrowerRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setBorrowersIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Borrower = getPlayerOfType(target, "Borrower").asInstanceOf[Borrower]
+      val v: LibraryBorrowersBorrower = new LibraryBorrowersBorrower(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeBorrowersIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryBorrowersBorrowerRole"
+    }
+
+    def getSource(): EclipseLibraryView#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#BorrowerRole = {
+      target
+    }
+
+  }
+
+  class LibraryStockItemRole(private val source: EclipseLibraryView#LibraryRole, private val target: EclipseLibraryView#ItemRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setStockIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Item = getPlayerOfType(target, "Item").asInstanceOf[Item]
+      val v: LibraryStockItem = new LibraryStockItem(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeStockIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryStockItemRole"
+    }
+
+    def getSource(): EclipseLibraryView#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#ItemRole = {
+      target
+    }
+
+  }
+
+  class BookAuthorWriterRole(private val source: EclipseLibraryView#BookRole, private val target: EclipseLibraryView#WriterRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setBooksIntern(this)
+      source.setAuthorIntern(this)
+      val sp: Book = getPlayerOfType(source, "Book").asInstanceOf[Book]
+      val tp: Writer = getPlayerOfType(target, "Writer").asInstanceOf[Writer]
+      val v: BookAuthorWriter = new BookAuthorWriter(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeAuthorIntern(this)
+      target.removeBooksIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: BookAuthorWriterRole"
+    }
+
+    def getSource(): EclipseLibraryView#BookRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#WriterRole = {
+      target
+    }
+
+  }
+
+  class LibraryBranchesLibraryRole(private val source: EclipseLibraryView#LibraryRole, private val target: EclipseLibraryView#LibraryRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setBranchesIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Library = getPlayerOfType(target, "Library").asInstanceOf[Library]
+      val v: LibraryBranchesLibrary = new LibraryBranchesLibrary(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeBranchesIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryBranchesLibraryRole"
+    }
+
+    def getSource(): EclipseLibraryView#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#LibraryRole = {
+      target
+    }
+
+  }
+
+  class VideoCassetteCastPersonRole(private val source: EclipseLibraryView#VideoCassetteRole, private val target: EclipseLibraryView#PersonRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setCastIntern(this)
+      val sp: VideoCassette = getPlayerOfType(source, "VideoCassette").asInstanceOf[VideoCassette]
+      val tp: Person = getPlayerOfType(target, "Person").asInstanceOf[Person]
+      val v: VideoCassetteCastPerson = new VideoCassetteCastPerson(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeCastIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: VideoCassetteCastPersonRole"
+    }
+
+    def getSource(): EclipseLibraryView#VideoCassetteRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#PersonRole = {
+      target
+    }
+
+  }
+
+  class EmployeeManagerEmployeeRole(private val source: EclipseLibraryView#EmployeeRole, private val target: EclipseLibraryView#EmployeeRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setManagerIntern(this)
+      val sp: Employee = getPlayerOfType(source, "Employee").asInstanceOf[Employee]
+      val tp: Employee = getPlayerOfType(target, "Employee").asInstanceOf[Employee]
+      val v: EmployeeManagerEmployee = new EmployeeManagerEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeManagerIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: EmployeeManagerEmployeeRole"
+    }
+
+    def getSource(): EclipseLibraryView#EmployeeRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#EmployeeRole = {
+      target
+    }
+
+  }
+
+  class LibraryBooksBookRole(private val source: EclipseLibraryView#LibraryRole, private val target: EclipseLibraryView#BookRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setBooksIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Book = getPlayerOfType(target, "Book").asInstanceOf[Book]
+      val v: LibraryBooksBook = new LibraryBooksBook(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeBooksIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryBooksBookRole"
+    }
+
+    def getSource(): EclipseLibraryView#LibraryRole = {
+      source
+    }
+
+    def getTarget(): EclipseLibraryView#BookRole = {
+      target
+    }
+
+  }
+
+}
+
+object EclipseLibraryView extends IViewTypeInfo {
+
+  override def getViewName(): String = "EclipseLibraryView"
+
+  def getJoinInfos(): Set[IJoinInfo] = Set.empty
+
+  protected def getNewInstance(): IViewCompartment = new EclipseLibraryView()
+
+  def getNewView(): EclipseLibraryView = getNewViewTypeInstance().asInstanceOf[EclipseLibraryView]
+}
+      
+
+    
\ No newline at end of file
diff --git a/src/main/scala/view/IMDBdatabaseView.scala b/src/main/scala/view/IMDBdatabaseView.scala
new file mode 100644
index 0000000..816ccc5
--- /dev/null
+++ b/src/main/scala/view/IMDBdatabaseView.scala
@@ -0,0 +1,1055 @@
+package view
+
+import org.rosi_project.model_management.sum.IViewCompartment
+import imdbdatabase.User
+import imdbdatabase.IMDBFilmsFilm
+import imdbdatabase.FilmFiguresFigure
+import imdbdatabase.VoteFilmFilm
+import imdbdatabase.Film
+import imdbdatabase.IMDBVotesVote
+import imdbdatabase.VoteUserUser
+import imdbdatabase.FigurePlayedByActor
+import imdbdatabase.Person
+import imdbdatabase.IMDB
+import imdbdatabase.Figure
+import imdbdatabase.Actor
+import imdbdatabase.Vote
+import imdbdatabase.IMDBUsersUser
+import imdbdatabase.IMDBActorsActor
+
+import org.rosi_project.model_management.sum.IViewTypeInfo
+import org.rosi_project.model_management.sum.join.IJoinInfo
+
+class IMDBdatabaseView private extends IViewCompartment {
+
+  protected def isViewable(className: Object): Boolean = {
+    if (className.isInstanceOf[IMDBFilmsFilm] || className.isInstanceOf[IMDBVotesVote] || className.isInstanceOf[IMDBActorsActor] || className.isInstanceOf[FilmFiguresFigure] || className.isInstanceOf[Person] || className.isInstanceOf[IMDB] || className.isInstanceOf[Vote] || className.isInstanceOf[VoteUserUser] || className.isInstanceOf[FigurePlayedByActor] || className.isInstanceOf[User] || className.isInstanceOf[VoteFilmFilm] || className.isInstanceOf[IMDBUsersUser] || className.isInstanceOf[Actor] || className.isInstanceOf[Film] || className.isInstanceOf[Figure]) return true
+    return false
+  }
+
+  def getViewName(): String = {
+    IMDBdatabaseView.getViewName()
+  }
+
+  protected def getNaturalRole(className: Object): AViewRole = {
+    if (className.isInstanceOf[Figure]) return new FigureRole(null)
+    if (className.isInstanceOf[Actor]) return new ActorRole(0, null)
+    if (className.isInstanceOf[Person]) return new PersonRole(0, null)
+    if (className.isInstanceOf[User]) return new UserRole(null, null, 0, null)
+    if (className.isInstanceOf[Vote]) return new VoteRole(0)
+    if (className.isInstanceOf[IMDB]) return new IMDBRole()
+    if (className.isInstanceOf[Film]) return new FilmRole(0, null)
+    return null
+  }
+
+  protected def getRelationalRole(className: Object, sourceRole: AViewRole, targetRole: AViewRole): AViewRole = {
+    if (className.isInstanceOf[FilmFiguresFigure]) return new FilmFiguresFigureRole(sourceRole.asInstanceOf[FilmRole], targetRole.asInstanceOf[FigureRole])
+    if (className.isInstanceOf[IMDBVotesVote]) return new IMDBVotesVoteRole(sourceRole.asInstanceOf[IMDBRole], targetRole.asInstanceOf[VoteRole])
+    if (className.isInstanceOf[IMDBActorsActor]) return new IMDBActorsActorRole(sourceRole.asInstanceOf[IMDBRole], targetRole.asInstanceOf[ActorRole])
+    if (className.isInstanceOf[IMDBUsersUser]) return new IMDBUsersUserRole(sourceRole.asInstanceOf[IMDBRole], targetRole.asInstanceOf[UserRole])
+    if (className.isInstanceOf[VoteUserUser]) return new VoteUserUserRole(sourceRole.asInstanceOf[VoteRole], targetRole.asInstanceOf[UserRole])
+    if (className.isInstanceOf[VoteFilmFilm]) return new VoteFilmFilmRole(sourceRole.asInstanceOf[VoteRole], targetRole.asInstanceOf[FilmRole])
+    if (className.isInstanceOf[FigurePlayedByActor]) return new FigurePlayedByActorRole(sourceRole.asInstanceOf[FigureRole], targetRole.asInstanceOf[ActorRole])
+    if (className.isInstanceOf[IMDBFilmsFilm]) return new IMDBFilmsFilmRole(sourceRole.asInstanceOf[IMDBRole], targetRole.asInstanceOf[FilmRole])
+    return null
+  }
+
+  override def toString(): String = {
+    "VC: IMDBdatabaseView"
+  }
+
+  def createFigure(name: String): IMDBdatabaseView#FigureRole = {
+    return new FigureRole(name)
+  }
+
+  def createActor(dob: Double, name: String): IMDBdatabaseView#ActorRole = {
+    return new ActorRole(dob, name)
+  }
+
+  def createPerson(dob: Double, name: String): IMDBdatabaseView#PersonRole = {
+    return new PersonRole(dob, name)
+  }
+
+  def createUser(email: String, userName: String, dob: Double, name: String): IMDBdatabaseView#UserRole = {
+    return new UserRole(email, userName, dob, name)
+  }
+
+  def createVote(score: Int): IMDBdatabaseView#VoteRole = {
+    return new VoteRole(score)
+  }
+
+  def createIMDB(): IMDBdatabaseView#IMDBRole = {
+    return new IMDBRole()
+  }
+
+  def createFilm(year: Int, title: String): IMDBdatabaseView#FilmRole = {
+    return new FilmRole(year, title)
+  }
+
+  class IMDBRole extends AViewRole {
+
+    private var users: Set[IMDBdatabaseView#IMDBUsersUserRole] = Set.empty
+    private var votes: Set[IMDBdatabaseView#IMDBVotesVoteRole] = Set.empty
+    private var actors: Set[IMDBdatabaseView#IMDBActorsActorRole] = Set.empty
+    private var films: Set[IMDBdatabaseView#IMDBFilmsFilmRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new IMDB()
+    }
+
+    override def toString(): String = {
+      "VNR: IMDBRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    private[IMDBdatabaseView] def removeUsersIntern(v: IMDBdatabaseView#IMDBUsersUserRole): Unit = {
+      users -= v
+    }
+
+    private[IMDBdatabaseView] def setUsersIntern(v: IMDBdatabaseView#IMDBUsersUserRole): Unit = {
+      users += v
+    }
+
+    def getUsers(): Set[IMDBdatabaseView#UserRole] = {
+      var vs: Set[IMDBdatabaseView#UserRole] = Set.empty
+      users.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasUsers(v: IMDBdatabaseView#UserRole): Boolean = {
+      return getUsers.contains(v)
+    }
+
+    def addUsers(v: IMDBdatabaseView#UserRole): Boolean = {
+      if (hasUsers(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new IMDBUsersUserRole(this, v)
+      return true
+    }
+
+    def removeUsers(v: IMDBdatabaseView#UserRole): Boolean = {
+      if (!hasUsers(v)) return false
+      users.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeVotesIntern(v: IMDBdatabaseView#IMDBVotesVoteRole): Unit = {
+      votes -= v
+    }
+
+    private[IMDBdatabaseView] def setVotesIntern(v: IMDBdatabaseView#IMDBVotesVoteRole): Unit = {
+      votes += v
+    }
+
+    def getVotes(): Set[IMDBdatabaseView#VoteRole] = {
+      var vs: Set[IMDBdatabaseView#VoteRole] = Set.empty
+      votes.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasVotes(v: IMDBdatabaseView#VoteRole): Boolean = {
+      return getVotes.contains(v)
+    }
+
+    def addVotes(v: IMDBdatabaseView#VoteRole): Boolean = {
+      if (hasVotes(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new IMDBVotesVoteRole(this, v)
+      return true
+    }
+
+    def removeVotes(v: IMDBdatabaseView#VoteRole): Boolean = {
+      if (!hasVotes(v)) return false
+      votes.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeActorsIntern(v: IMDBdatabaseView#IMDBActorsActorRole): Unit = {
+      actors -= v
+    }
+
+    private[IMDBdatabaseView] def setActorsIntern(v: IMDBdatabaseView#IMDBActorsActorRole): Unit = {
+      actors += v
+    }
+
+    def getActors(): Set[IMDBdatabaseView#ActorRole] = {
+      var vs: Set[IMDBdatabaseView#ActorRole] = Set.empty
+      actors.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasActors(v: IMDBdatabaseView#ActorRole): Boolean = {
+      return getActors.contains(v)
+    }
+
+    def addActors(v: IMDBdatabaseView#ActorRole): Boolean = {
+      if (hasActors(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new IMDBActorsActorRole(this, v)
+      return true
+    }
+
+    def removeActors(v: IMDBdatabaseView#ActorRole): Boolean = {
+      if (!hasActors(v)) return false
+      actors.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeFilmsIntern(v: IMDBdatabaseView#IMDBFilmsFilmRole): Unit = {
+      films -= v
+    }
+
+    private[IMDBdatabaseView] def setFilmsIntern(v: IMDBdatabaseView#IMDBFilmsFilmRole): Unit = {
+      films += v
+    }
+
+    def getFilms(): Set[IMDBdatabaseView#FilmRole] = {
+      var vs: Set[IMDBdatabaseView#FilmRole] = Set.empty
+      films.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasFilms(v: IMDBdatabaseView#FilmRole): Boolean = {
+      return getFilms.contains(v)
+    }
+
+    def addFilms(v: IMDBdatabaseView#FilmRole): Boolean = {
+      if (hasFilms(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new IMDBFilmsFilmRole(this, v)
+      return true
+    }
+
+    def removeFilms(v: IMDBdatabaseView#FilmRole): Boolean = {
+      if (!hasFilms(v)) return false
+      films.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+  }
+
+  class FilmRole(protected val year: Int, protected val title: String) extends AViewRole {
+
+    private var library: IMDBdatabaseView#IMDBFilmsFilmRole = null
+    private var votes: Set[IMDBdatabaseView#VoteFilmFilmRole] = Set.empty
+    private var figures: Set[IMDBdatabaseView#FilmFiguresFigureRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Film(year, title)
+    }
+
+    override def toString(): String = {
+      "VNR: FilmRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getYearView(): Int = {
+      +this getYear ()
+    }
+
+    def setYearView(year: Int): Unit = {
+      +this setYear (year)
+      +this changeSomething ()
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String): Unit = {
+      +this setTitle (title)
+      +this changeSomething ()
+    }
+
+    private[IMDBdatabaseView] def removeLibraryIntern(v: IMDBdatabaseView#IMDBFilmsFilmRole): Unit = {
+      library = null
+    }
+
+    private[IMDBdatabaseView] def setLibraryIntern(v: IMDBdatabaseView#IMDBFilmsFilmRole): Unit = {
+      library = v
+    }
+
+    def getLibrary(): IMDBdatabaseView#IMDBRole = {
+      return library.getSource()
+    }
+
+    def setLibrary(v: IMDBdatabaseView#IMDBRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (library != null) {
+        if (library.getSource() == v) return false
+        library.deleteElement()
+      }
+      new IMDBFilmsFilmRole(v, this)
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeVotesIntern(v: IMDBdatabaseView#VoteFilmFilmRole): Unit = {
+      votes -= v
+    }
+
+    private[IMDBdatabaseView] def setVotesIntern(v: IMDBdatabaseView#VoteFilmFilmRole): Unit = {
+      votes += v
+    }
+
+    def getVotes(): Set[IMDBdatabaseView#VoteRole] = {
+      var vs: Set[IMDBdatabaseView#VoteRole] = Set.empty
+      votes.foreach { v => vs += v.getSource() }
+      return vs
+    }
+
+    def hasVotes(v: IMDBdatabaseView#VoteRole): Boolean = {
+      return getVotes.contains(v)
+    }
+
+    def addVotes(v: IMDBdatabaseView#VoteRole): Boolean = {
+      if (hasVotes(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new VoteFilmFilmRole(v, this)
+      return true
+    }
+
+    def removeVotes(v: IMDBdatabaseView#VoteRole): Boolean = {
+      if (!hasVotes(v)) return false
+      votes.foreach { h =>
+        if (h.getSource() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeFiguresIntern(v: IMDBdatabaseView#FilmFiguresFigureRole): Unit = {
+      figures -= v
+    }
+
+    private[IMDBdatabaseView] def setFiguresIntern(v: IMDBdatabaseView#FilmFiguresFigureRole): Unit = {
+      figures += v
+    }
+
+    def getFigures(): Set[IMDBdatabaseView#FigureRole] = {
+      var vs: Set[IMDBdatabaseView#FigureRole] = Set.empty
+      figures.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasFigures(v: IMDBdatabaseView#FigureRole): Boolean = {
+      return getFigures.contains(v)
+    }
+
+    def addFigures(v: IMDBdatabaseView#FigureRole): Boolean = {
+      if (hasFigures(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new FilmFiguresFigureRole(this, v)
+      return true
+    }
+
+    def removeFigures(v: IMDBdatabaseView#FigureRole): Boolean = {
+      if (!hasFigures(v)) return false
+      figures.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+  }
+
+  class VoteRole(protected val score: Int) extends AViewRole {
+
+    private var user: IMDBdatabaseView#VoteUserUserRole = null
+    private var library: IMDBdatabaseView#IMDBVotesVoteRole = null
+    private var film: IMDBdatabaseView#VoteFilmFilmRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Vote(score)
+    }
+
+    override def toString(): String = {
+      "VNR: VoteRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getScoreView(): Int = {
+      +this getScore ()
+    }
+
+    def setScoreView(score: Int): Unit = {
+      +this setScore (score)
+      +this changeSomething ()
+    }
+
+    private[IMDBdatabaseView] def removeUserIntern(v: IMDBdatabaseView#VoteUserUserRole): Unit = {
+      user = null
+    }
+
+    private[IMDBdatabaseView] def setUserIntern(v: IMDBdatabaseView#VoteUserUserRole): Unit = {
+      user = v
+    }
+
+    def getUser(): IMDBdatabaseView#UserRole = {
+      return user.getTarget()
+    }
+
+    def setUser(v: IMDBdatabaseView#UserRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (user != null) {
+        if (user.getTarget() == v) return false
+        user.deleteElement()
+      }
+      new VoteUserUserRole(this, v)
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeLibraryIntern(v: IMDBdatabaseView#IMDBVotesVoteRole): Unit = {
+      library = null
+    }
+
+    private[IMDBdatabaseView] def setLibraryIntern(v: IMDBdatabaseView#IMDBVotesVoteRole): Unit = {
+      library = v
+    }
+
+    def getLibrary(): IMDBdatabaseView#IMDBRole = {
+      return library.getSource()
+    }
+
+    def setLibrary(v: IMDBdatabaseView#IMDBRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (library != null) {
+        if (library.getSource() == v) return false
+        library.deleteElement()
+      }
+      new IMDBVotesVoteRole(v, this)
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeFilmIntern(v: IMDBdatabaseView#VoteFilmFilmRole): Unit = {
+      film = null
+    }
+
+    private[IMDBdatabaseView] def setFilmIntern(v: IMDBdatabaseView#VoteFilmFilmRole): Unit = {
+      film = v
+    }
+
+    def getFilm(): IMDBdatabaseView#FilmRole = {
+      return film.getTarget()
+    }
+
+    def setFilm(v: IMDBdatabaseView#FilmRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (film != null) {
+        if (film.getTarget() == v) return false
+        film.deleteElement()
+      }
+      new VoteFilmFilmRole(this, v)
+      return true
+    }
+
+  }
+
+  class ActorRole(p_Dob: Double, p_Name: String) extends PersonRole(p_Dob, p_Name) {
+
+    private var plays: Set[IMDBdatabaseView#FigurePlayedByActorRole] = Set.empty
+    private var library: IMDBdatabaseView#IMDBActorsActorRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Actor(dob, name)
+    }
+
+    override def toString(): String = {
+      "VNR: ActorRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    private[IMDBdatabaseView] def removePlaysIntern(v: IMDBdatabaseView#FigurePlayedByActorRole): Unit = {
+      plays -= v
+    }
+
+    private[IMDBdatabaseView] def setPlaysIntern(v: IMDBdatabaseView#FigurePlayedByActorRole): Unit = {
+      plays += v
+    }
+
+    def getPlays(): Set[IMDBdatabaseView#FigureRole] = {
+      var vs: Set[IMDBdatabaseView#FigureRole] = Set.empty
+      plays.foreach { v => vs += v.getSource() }
+      return vs
+    }
+
+    def hasPlays(v: IMDBdatabaseView#FigureRole): Boolean = {
+      return getPlays.contains(v)
+    }
+
+    def addPlays(v: IMDBdatabaseView#FigureRole): Boolean = {
+      if (hasPlays(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new FigurePlayedByActorRole(v, this)
+      return true
+    }
+
+    def removePlays(v: IMDBdatabaseView#FigureRole): Boolean = {
+      if (!hasPlays(v)) return false
+      plays.foreach { h =>
+        if (h.getSource() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeLibraryIntern(v: IMDBdatabaseView#IMDBActorsActorRole): Unit = {
+      library = null
+    }
+
+    private[IMDBdatabaseView] def setLibraryIntern(v: IMDBdatabaseView#IMDBActorsActorRole): Unit = {
+      library = v
+    }
+
+    def getLibrary(): IMDBdatabaseView#IMDBRole = {
+      return library.getSource()
+    }
+
+    def setLibrary(v: IMDBdatabaseView#IMDBRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (library != null) {
+        if (library.getSource() == v) return false
+        library.deleteElement()
+      }
+      new IMDBActorsActorRole(v, this)
+      return true
+    }
+
+  }
+
+  class PersonRole(protected val dob: Double, protected val name: String) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Person(dob, name)
+    }
+
+    override def toString(): String = {
+      "VNR: PersonRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getDobView(): Double = {
+      +this getDob ()
+    }
+
+    def setDobView(dob: Double): Unit = {
+      +this setDob (dob)
+      +this changeSomething ()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+  }
+
+  class FigureRole(protected val name: String) extends AViewRole {
+
+    private var playedBy: Set[IMDBdatabaseView#FigurePlayedByActorRole] = Set.empty
+    private var film: IMDBdatabaseView#FilmFiguresFigureRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Figure(name)
+    }
+
+    override def toString(): String = {
+      "VNR: FigureRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+    private[IMDBdatabaseView] def removePlayedByIntern(v: IMDBdatabaseView#FigurePlayedByActorRole): Unit = {
+      playedBy -= v
+    }
+
+    private[IMDBdatabaseView] def setPlayedByIntern(v: IMDBdatabaseView#FigurePlayedByActorRole): Unit = {
+      playedBy += v
+    }
+
+    def getPlayedBy(): Set[IMDBdatabaseView#ActorRole] = {
+      var vs: Set[IMDBdatabaseView#ActorRole] = Set.empty
+      playedBy.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasPlayedBy(v: IMDBdatabaseView#ActorRole): Boolean = {
+      return getPlayedBy.contains(v)
+    }
+
+    def addPlayedBy(v: IMDBdatabaseView#ActorRole): Boolean = {
+      if (hasPlayedBy(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new FigurePlayedByActorRole(this, v)
+      return true
+    }
+
+    def removePlayedBy(v: IMDBdatabaseView#ActorRole): Boolean = {
+      if (!hasPlayedBy(v)) return false
+      playedBy.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[IMDBdatabaseView] def removeFilmIntern(v: IMDBdatabaseView#FilmFiguresFigureRole): Unit = {
+      film = null
+    }
+
+    private[IMDBdatabaseView] def setFilmIntern(v: IMDBdatabaseView#FilmFiguresFigureRole): Unit = {
+      film = v
+    }
+
+    def getFilm(): IMDBdatabaseView#FilmRole = {
+      return film.getSource()
+    }
+
+    def setFilm(v: IMDBdatabaseView#FilmRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (film != null) {
+        if (film.getSource() == v) return false
+        film.deleteElement()
+      }
+      new FilmFiguresFigureRole(v, this)
+      return true
+    }
+
+  }
+
+  class UserRole(protected val email: String, protected val userName: String, p_Dob: Double, p_Name: String) extends PersonRole(p_Dob, p_Name) {
+
+    private var library: IMDBdatabaseView#IMDBUsersUserRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new User(email, userName, dob, name)
+    }
+
+    override def toString(): String = {
+      "VNR: UserRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getEmailView(): String = {
+      +this getEmail ()
+    }
+
+    def setEmailView(email: String): Unit = {
+      +this setEmail (email)
+      +this changeSomething ()
+    }
+
+    def getUserNameView(): String = {
+      +this getUserName ()
+    }
+
+    def setUserNameView(username: String): Unit = {
+      +this setUserName (username)
+      +this changeSomething ()
+    }
+
+    private[IMDBdatabaseView] def removeLibraryIntern(v: IMDBdatabaseView#IMDBUsersUserRole): Unit = {
+      library = null
+    }
+
+    private[IMDBdatabaseView] def setLibraryIntern(v: IMDBdatabaseView#IMDBUsersUserRole): Unit = {
+      library = v
+    }
+
+    def getLibrary(): IMDBdatabaseView#IMDBRole = {
+      return library.getSource()
+    }
+
+    def setLibrary(v: IMDBdatabaseView#IMDBRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (library != null) {
+        if (library.getSource() == v) return false
+        library.deleteElement()
+      }
+      new IMDBUsersUserRole(v, this)
+      return true
+    }
+
+  }
+
+  class FigurePlayedByActorRole(private val source: IMDBdatabaseView#FigureRole, private val target: IMDBdatabaseView#ActorRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setPlaysIntern(this)
+      source.setPlayedByIntern(this)
+      val sp: Figure = getPlayerOfType(source, "Figure").asInstanceOf[Figure]
+      val tp: Actor = getPlayerOfType(target, "Actor").asInstanceOf[Actor]
+      val v: FigurePlayedByActor = new FigurePlayedByActor(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removePlayedByIntern(this)
+      target.removePlaysIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: FigurePlayedByActorRole"
+    }
+
+    def getSource(): IMDBdatabaseView#FigureRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseView#ActorRole = {
+      target
+    }
+
+  }
+
+  class VoteUserUserRole(private val source: IMDBdatabaseView#VoteRole, private val target: IMDBdatabaseView#UserRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setUserIntern(this)
+      val sp: Vote = getPlayerOfType(source, "Vote").asInstanceOf[Vote]
+      val tp: User = getPlayerOfType(target, "User").asInstanceOf[User]
+      val v: VoteUserUser = new VoteUserUser(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeUserIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: VoteUserUserRole"
+    }
+
+    def getSource(): IMDBdatabaseView#VoteRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseView#UserRole = {
+      target
+    }
+
+  }
+
+  class IMDBUsersUserRole(private val source: IMDBdatabaseView#IMDBRole, private val target: IMDBdatabaseView#UserRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setLibraryIntern(this)
+      source.setUsersIntern(this)
+      val sp: IMDB = getPlayerOfType(source, "IMDB").asInstanceOf[IMDB]
+      val tp: User = getPlayerOfType(target, "User").asInstanceOf[User]
+      val v: IMDBUsersUser = new IMDBUsersUser(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeUsersIntern(this)
+      target.removeLibraryIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: IMDBUsersUserRole"
+    }
+
+    def getSource(): IMDBdatabaseView#IMDBRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseView#UserRole = {
+      target
+    }
+
+  }
+
+  class IMDBVotesVoteRole(private val source: IMDBdatabaseView#IMDBRole, private val target: IMDBdatabaseView#VoteRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setLibraryIntern(this)
+      source.setVotesIntern(this)
+      val sp: IMDB = getPlayerOfType(source, "IMDB").asInstanceOf[IMDB]
+      val tp: Vote = getPlayerOfType(target, "Vote").asInstanceOf[Vote]
+      val v: IMDBVotesVote = new IMDBVotesVote(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeVotesIntern(this)
+      target.removeLibraryIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: IMDBVotesVoteRole"
+    }
+
+    def getSource(): IMDBdatabaseView#IMDBRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseView#VoteRole = {
+      target
+    }
+
+  }
+
+  class IMDBActorsActorRole(private val source: IMDBdatabaseView#IMDBRole, private val target: IMDBdatabaseView#ActorRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setLibraryIntern(this)
+      source.setActorsIntern(this)
+      val sp: IMDB = getPlayerOfType(source, "IMDB").asInstanceOf[IMDB]
+      val tp: Actor = getPlayerOfType(target, "Actor").asInstanceOf[Actor]
+      val v: IMDBActorsActor = new IMDBActorsActor(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeActorsIntern(this)
+      target.removeLibraryIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: IMDBActorsActorRole"
+    }
+
+    def getSource(): IMDBdatabaseView#IMDBRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseView#ActorRole = {
+      target
+    }
+
+  }
+
+  class IMDBFilmsFilmRole(private val source: IMDBdatabaseView#IMDBRole, private val target: IMDBdatabaseView#FilmRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setLibraryIntern(this)
+      source.setFilmsIntern(this)
+      val sp: IMDB = getPlayerOfType(source, "IMDB").asInstanceOf[IMDB]
+      val tp: Film = getPlayerOfType(target, "Film").asInstanceOf[Film]
+      val v: IMDBFilmsFilm = new IMDBFilmsFilm(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeFilmsIntern(this)
+      target.removeLibraryIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: IMDBFilmsFilmRole"
+    }
+
+    def getSource(): IMDBdatabaseView#IMDBRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseView#FilmRole = {
+      target
+    }
+
+  }
+
+  class VoteFilmFilmRole(private val source: IMDBdatabaseView#VoteRole, private val target: IMDBdatabaseView#FilmRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setVotesIntern(this)
+      source.setFilmIntern(this)
+      val sp: Vote = getPlayerOfType(source, "Vote").asInstanceOf[Vote]
+      val tp: Film = getPlayerOfType(target, "Film").asInstanceOf[Film]
+      val v: VoteFilmFilm = new VoteFilmFilm(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeFilmIntern(this)
+      target.removeVotesIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: VoteFilmFilmRole"
+    }
+
+    def getSource(): IMDBdatabaseView#VoteRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseView#FilmRole = {
+      target
+    }
+
+  }
+
+  class FilmFiguresFigureRole(private val source: IMDBdatabaseView#FilmRole, private val target: IMDBdatabaseView#FigureRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setFilmIntern(this)
+      source.setFiguresIntern(this)
+      val sp: Film = getPlayerOfType(source, "Film").asInstanceOf[Film]
+      val tp: Figure = getPlayerOfType(target, "Figure").asInstanceOf[Figure]
+      val v: FilmFiguresFigure = new FilmFiguresFigure(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeFiguresIntern(this)
+      target.removeFilmIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: FilmFiguresFigureRole"
+    }
+
+    def getSource(): IMDBdatabaseView#FilmRole = {
+      source
+    }
+
+    def getTarget(): IMDBdatabaseView#FigureRole = {
+      target
+    }
+
+  }
+
+}
+
+object IMDBdatabaseView extends IViewTypeInfo {
+
+  override def getViewName(): String = "IMDBdatabaseView"
+
+  def getJoinInfos(): Set[IJoinInfo] = Set.empty
+
+  protected def getNewInstance(): IViewCompartment = new IMDBdatabaseView()
+
+  def getNewView(): IMDBdatabaseView = getNewViewTypeInstance().asInstanceOf[IMDBdatabaseView]
+}
+      
+
+    
\ No newline at end of file
diff --git a/src/main/scala/view/LibrarySimple0.scala b/src/main/scala/view/LibrarySimple0.scala
new file mode 100644
index 0000000..424aeda
--- /dev/null
+++ b/src/main/scala/view/LibrarySimple0.scala
@@ -0,0 +1,209 @@
+package view
+
+import org.rosi_project.model_management.sum.IViewCompartment
+import lib.Library
+import lib.Person
+import lib.LibraryEmployeesEmployee
+import lib.Employee
+
+import org.rosi_project.model_management.sum.IViewTypeInfo
+import org.rosi_project.model_management.sum.join.IJoinInfo
+
+class LibrarySimple0 private extends IViewCompartment {
+
+  protected def isViewable(className: Object): Boolean = {
+    if (className.isInstanceOf[Library] || className.isInstanceOf[Employee] || className.isInstanceOf[LibraryEmployeesEmployee]) return true
+    return false
+  }
+
+  def getViewName(): String = {
+    LibrarySimple0.getViewName()
+  }
+
+  protected def getNaturalRole(className: Object): AViewRole = {
+    if (className.isInstanceOf[Library]) return new LibraryRole(null)
+    if (className.isInstanceOf[Employee]) return new EmployeeRole(0, null)
+    return null
+  }
+
+  protected def getRelationalRole(className: Object, sourceRole: AViewRole, targetRole: AViewRole): AViewRole = {
+    if (className.isInstanceOf[LibraryEmployeesEmployee]) return new LibraryEmployeesEmployeeRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[EmployeeRole])
+    return null
+  }
+
+  override def toString(): String = {
+    "VC: LibrarySimple0"
+  }
+
+  def createLibrary(name: String): LibrarySimple0#LibraryRole = {
+    return new LibraryRole(name)
+  }
+
+  def createEmployee(salary: Double, name: String): LibrarySimple0#EmployeeRole = {
+    return new EmployeeRole(salary, name)
+  }
+
+  class LibraryRole(protected val name: String) extends AViewRole {
+
+    private var employees: Set[LibrarySimple0#LibraryEmployeesEmployeeRole] = Set.empty
+
+    private[LibrarySimple0] def removeEmployeesIntern(v: LibrarySimple0#LibraryEmployeesEmployeeRole): Unit = {
+      employees -= v
+    }
+
+    private[LibrarySimple0] def setEmployeesIntern(v: LibrarySimple0#LibraryEmployeesEmployeeRole): Unit = {
+      employees += v
+    }
+
+    def getEmployees(): Set[LibrarySimple0#EmployeeRole] = {
+      var vs: Set[LibrarySimple0#EmployeeRole] = Set.empty
+      employees.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasEmployees(v: LibrarySimple0#EmployeeRole): Boolean = {
+      return getEmployees.contains(v)
+    }
+
+    def addEmployees(v: LibrarySimple0#EmployeeRole): Boolean = {
+      if (hasEmployees(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new LibraryEmployeesEmployeeRole(this, v)
+      return true
+    }
+
+    def removeEmployees(v: LibrarySimple0#EmployeeRole): Boolean = {
+      if (!hasEmployees(v)) return false
+      employees.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Library(name)
+    }
+
+    override def toString(): String = {
+      "VNR: LibraryRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+  }
+
+  class EmployeeRole(protected val salary: Double, p_Name: String) extends PersonRole(p_Name) {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Employee(salary, name)
+    }
+
+    override def toString(): String = {
+      "VNR: EmployeeRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getSalaryView(): Double = {
+      +this getSalary ()
+    }
+
+    def setSalaryView(salary: Double): Unit = {
+      +this setSalary (salary)
+      +this changeSomething ()
+    }
+
+  }
+
+  abstract class PersonRole(protected val name: String) extends AViewRole {
+
+    override def toString(): String = {
+      "VNR: PersonRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+  }
+
+  class LibraryEmployeesEmployeeRole(private val source: LibrarySimple0#LibraryRole, private val target: LibrarySimple0#EmployeeRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setEmployeesIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Employee = getPlayerOfType(target, "Employee").asInstanceOf[Employee]
+      val v: LibraryEmployeesEmployee = new LibraryEmployeesEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeEmployeesIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryEmployeesEmployeeRole"
+    }
+
+    def getSource(): LibrarySimple0#LibraryRole = {
+      source
+    }
+
+    def getTarget(): LibrarySimple0#EmployeeRole = {
+      target
+    }
+
+  }
+
+}
+
+object LibrarySimple0 extends IViewTypeInfo {
+
+  override def getViewName(): String = "LibrarySimple0"
+
+  def getJoinInfos(): Set[IJoinInfo] = Set.empty
+
+  protected def getNewInstance(): IViewCompartment = new LibrarySimple0()
+
+  def getNewView(): LibrarySimple0 = getNewViewTypeInstance().asInstanceOf[LibrarySimple0]
+}
+      
+
+    
\ No newline at end of file
diff --git a/src/main/scala/view/LibraryView.scala b/src/main/scala/view/LibraryView.scala
new file mode 100644
index 0000000..eb968be
--- /dev/null
+++ b/src/main/scala/view/LibraryView.scala
@@ -0,0 +1,269 @@
+package view
+
+import org.rosi_project.model_management.sum.IViewCompartment
+import lib.EmployeeManagerEmployee
+import lib.Library
+import lib.Person
+import lib.LibraryEmployeesEmployee
+import lib.Employee
+
+import org.rosi_project.model_management.sum.IViewTypeInfo
+import org.rosi_project.model_management.sum.join.IJoinInfo
+
+class LibraryView private extends IViewCompartment {
+
+  protected def isViewable(className: Object): Boolean = {
+    if (className.isInstanceOf[EmployeeManagerEmployee] || className.isInstanceOf[LibraryEmployeesEmployee] || className.isInstanceOf[Library] || className.isInstanceOf[Employee]) return true
+    return false
+  }
+
+  def getViewName(): String = {
+    LibraryView.getViewName()
+  }
+
+  protected def getNaturalRole(className: Object): AViewRole = {
+    if (className.isInstanceOf[Library]) return new LibraryRole(null)
+    if (className.isInstanceOf[Employee]) return new EmployeeRole(0, null)
+    return null
+  }
+
+  protected def getRelationalRole(className: Object, sourceRole: AViewRole, targetRole: AViewRole): AViewRole = {
+    if (className.isInstanceOf[LibraryEmployeesEmployee]) return new LibraryEmployeesEmployeeRole(sourceRole.asInstanceOf[LibraryRole], targetRole.asInstanceOf[EmployeeRole])
+    if (className.isInstanceOf[EmployeeManagerEmployee]) return new EmployeeManagerEmployeeRole(sourceRole.asInstanceOf[EmployeeRole], targetRole.asInstanceOf[EmployeeRole])
+    return null
+  }
+
+  override def toString(): String = {
+    "VC: LibraryView"
+  }
+
+  def createLibrary(name: String): LibraryView#LibraryRole = {
+    return new LibraryRole(name)
+  }
+
+  def createEmployee(salary: Double, name: String): LibraryView#EmployeeRole = {
+    return new EmployeeRole(salary, name)
+  }
+
+  class LibraryRole(protected val name: String) extends AViewRole {
+
+    private var employees: Set[LibraryView#LibraryEmployeesEmployeeRole] = Set.empty
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Library(name)
+    }
+
+    override def toString(): String = {
+      "VNR: LibraryRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+    private[LibraryView] def removeEmployeesIntern(v: LibraryView#LibraryEmployeesEmployeeRole): Unit = {
+      employees -= v
+    }
+
+    private[LibraryView] def setEmployeesIntern(v: LibraryView#LibraryEmployeesEmployeeRole): Unit = {
+      employees += v
+    }
+
+    def getEmployees(): Set[LibraryView#EmployeeRole] = {
+      var vs: Set[LibraryView#EmployeeRole] = Set.empty
+      employees.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasEmployees(v: LibraryView#EmployeeRole): Boolean = {
+      return getEmployees.contains(v)
+    }
+
+    def addEmployees(v: LibraryView#EmployeeRole): Boolean = {
+      if (hasEmployees(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new LibraryEmployeesEmployeeRole(this, v)
+      return true
+    }
+
+    def removeEmployees(v: LibraryView#EmployeeRole): Boolean = {
+      if (!hasEmployees(v)) return false
+      employees.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+  }
+
+  class EmployeeRole(protected val salary: Double, p_Name: String) extends PersonRole(p_Name) {
+
+    private var manager: LibraryView#EmployeeManagerEmployeeRole = null
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Employee(salary, name)
+    }
+
+    override def toString(): String = {
+      "VNR: EmployeeRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getSalaryView(): Double = {
+      +this getSalary ()
+    }
+
+    def setSalaryView(salary: Double): Unit = {
+      +this setSalary (salary)
+      +this changeSomething ()
+    }
+
+    private[LibraryView] def removeManagerIntern(v: LibraryView#EmployeeManagerEmployeeRole): Unit = {
+      manager = null
+    }
+
+    private[LibraryView] def setManagerIntern(v: LibraryView#EmployeeManagerEmployeeRole): Unit = {
+      manager = v
+    }
+
+    def getManager(): LibraryView#EmployeeRole = {
+      return manager.getTarget()
+    }
+
+    def setManager(v: LibraryView#EmployeeRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (manager != null) {
+        if (manager.getTarget() == v) return false
+        manager.deleteElement()
+      }
+      new EmployeeManagerEmployeeRole(this, v)
+      return true
+    }
+
+  }
+
+  abstract class PersonRole(protected val name: String) extends AViewRole {
+
+    override def toString(): String = {
+      "VNR: PersonRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+  }
+
+  class LibraryEmployeesEmployeeRole(private val source: LibraryView#LibraryRole, private val target: LibraryView#EmployeeRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setEmployeesIntern(this)
+      val sp: Library = getPlayerOfType(source, "Library").asInstanceOf[Library]
+      val tp: Employee = getPlayerOfType(target, "Employee").asInstanceOf[Employee]
+      val v: LibraryEmployeesEmployee = new LibraryEmployeesEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeEmployeesIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: LibraryEmployeesEmployeeRole"
+    }
+
+    def getSource(): LibraryView#LibraryRole = {
+      source
+    }
+
+    def getTarget(): LibraryView#EmployeeRole = {
+      target
+    }
+
+  }
+
+  class EmployeeManagerEmployeeRole(private val source: LibraryView#EmployeeRole, private val target: LibraryView#EmployeeRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setManagerIntern(this)
+      val sp: Employee = getPlayerOfType(source, "Employee").asInstanceOf[Employee]
+      val tp: Employee = getPlayerOfType(target, "Employee").asInstanceOf[Employee]
+      val v: EmployeeManagerEmployee = new EmployeeManagerEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeManagerIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: EmployeeManagerEmployeeRole"
+    }
+
+    def getSource(): LibraryView#EmployeeRole = {
+      source
+    }
+
+    def getTarget(): LibraryView#EmployeeRole = {
+      target
+    }
+
+  }
+
+}
+
+object LibraryView extends IViewTypeInfo {
+
+  override def getViewName(): String = "LibraryView"
+
+  def getJoinInfos(): Set[IJoinInfo] = Set.empty
+
+  protected def getNewInstance(): IViewCompartment = new LibraryView()
+
+  def getNewView(): LibraryView = getNewViewTypeInstance().asInstanceOf[LibraryView]
+}
+      
+
+    
\ No newline at end of file
diff --git a/src/main/scala/view/Manager0.scala b/src/main/scala/view/Manager0.scala
new file mode 100644
index 0000000..8aa7d13
--- /dev/null
+++ b/src/main/scala/view/Manager0.scala
@@ -0,0 +1,162 @@
+package view
+
+import org.rosi_project.model_management.sum.IViewCompartment
+import lib.Employee
+import lib.EmployeeManagerEmployee
+import lib.Person
+
+import org.rosi_project.model_management.sum.IViewTypeInfo
+import org.rosi_project.model_management.sum.join.IJoinInfo
+
+class Manager0 private extends IViewCompartment {
+
+  protected def isViewable(className: Object): Boolean = {
+    if (className.isInstanceOf[Employee] || className.isInstanceOf[EmployeeManagerEmployee]) return true
+    return false
+  }
+
+  def getViewName(): String = {
+    Manager0.getViewName()
+  }
+
+  protected def getNaturalRole(className: Object): AViewRole = {
+    if (className.isInstanceOf[Employee]) return new EmployeeRole(0, null)
+    return null
+  }
+
+  protected def getRelationalRole(className: Object, sourceRole: AViewRole, targetRole: AViewRole): AViewRole = {
+    if (className.isInstanceOf[EmployeeManagerEmployee]) return new EmployeeManagerEmployeeRole(sourceRole.asInstanceOf[EmployeeRole], targetRole.asInstanceOf[EmployeeRole])
+    return null
+  }
+
+  override def toString(): String = {
+    "VC: Manager0"
+  }
+
+  def createEmployee(salary: Double, name: String): Manager0#EmployeeRole = {
+    return new EmployeeRole(salary, name)
+  }
+
+  class EmployeeRole(protected val salary: Double, p_Name: String) extends PersonRole(p_Name) {
+
+    private var manager: Manager0#EmployeeManagerEmployeeRole = null
+
+    private[Manager0] def removeManagerIntern(v: Manager0#EmployeeManagerEmployeeRole): Unit = {
+      manager = null
+    }
+
+    private[Manager0] def setManagerIntern(v: Manager0#EmployeeManagerEmployeeRole): Unit = {
+      manager = v
+    }
+
+    def getManager(): Manager0#EmployeeRole = {
+      return manager.getTarget()
+    }
+
+    def setManager(v: Manager0#EmployeeRole): Boolean = {
+      if (v == null) return false
+      if (!containsRole(v.asInstanceOf[AViewRole])) return false
+      if (manager != null) {
+        if (manager.getTarget() == v) return false
+        manager.deleteElement()
+      }
+      new EmployeeManagerEmployeeRole(this, v)
+      return true
+    }
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Employee(salary, name)
+    }
+
+    override def toString(): String = {
+      "VNR: EmployeeRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getSalaryView(): Double = {
+      +this getSalary ()
+    }
+
+    def setSalaryView(salary: Double): Unit = {
+      +this setSalary (salary)
+      +this changeSomething ()
+    }
+
+  }
+
+  abstract class PersonRole(protected val name: String) extends AViewRole {
+
+    override def toString(): String = {
+      "VNR: PersonRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getNameView(): String = {
+      +this getName ()
+    }
+
+    def setNameView(name: String): Unit = {
+      +this setName (name)
+      +this changeSomething ()
+    }
+
+  }
+
+  class EmployeeManagerEmployeeRole(private val source: Manager0#EmployeeRole, private val target: Manager0#EmployeeRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setManagerIntern(this)
+      val sp: Employee = getPlayerOfType(source, "Employee").asInstanceOf[Employee]
+      val tp: Employee = getPlayerOfType(target, "Employee").asInstanceOf[Employee]
+      val v: EmployeeManagerEmployee = new EmployeeManagerEmployee(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeManagerIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: EmployeeManagerEmployeeRole"
+    }
+
+    def getSource(): Manager0#EmployeeRole = {
+      source
+    }
+
+    def getTarget(): Manager0#EmployeeRole = {
+      target
+    }
+
+  }
+
+}
+
+object Manager0 extends IViewTypeInfo {
+
+  override def getViewName(): String = "Manager0"
+
+  def getJoinInfos(): Set[IJoinInfo] = Set.empty
+
+  protected def getNewInstance(): IViewCompartment = new Manager0()
+
+  def getNewView(): Manager0 = getNewViewTypeInstance().asInstanceOf[Manager0]
+}
+      
+
+    
\ No newline at end of file
diff --git a/src/main/scala/view/Simple0.scala b/src/main/scala/view/Simple0.scala
new file mode 100644
index 0000000..abce951
--- /dev/null
+++ b/src/main/scala/view/Simple0.scala
@@ -0,0 +1,314 @@
+package view
+
+import org.rosi_project.model_management.sum.IViewCompartment
+import imdbdatabase.VoteFilmFilm
+import imdbdatabase.Film
+import elib.VideoCassette
+import joins.JoinMovie
+import elib.Person
+import elib.VideoCassetteCastPerson
+import imdbdatabase.Vote
+
+import org.rosi_project.model_management.sum.IViewTypeInfo
+import org.rosi_project.model_management.sum.join.IJoinInfo
+import joins.JoinMovieObject
+
+class Simple0 private extends IViewCompartment {
+
+  protected def isViewable(className: Object): Boolean = {
+    if (className.isInstanceOf[Person] || className.isInstanceOf[Vote] || className.isInstanceOf[JoinMovie] || className.isInstanceOf[VoteFilmFilm] || className.isInstanceOf[VideoCassetteCastPerson]) return true
+    return false
+  }
+
+  def getViewName(): String = {
+    Simple0.getViewName()
+  }
+
+  protected def getNaturalRole(className: Object): AViewRole = {
+    if (className.isInstanceOf[JoinMovie]) return new JoinMovieRole(null, 0, 0)
+    if (className.isInstanceOf[Vote]) return new VoteRole(0)
+    if (className.isInstanceOf[Person]) return new PersonRole(null)
+    return null
+  }
+
+  protected def getRelationalRole(className: Object, sourceRole: AViewRole, targetRole: AViewRole): AViewRole = {
+    if (className.isInstanceOf[VoteFilmFilm]) return new VoteFilmFilmRole(sourceRole.asInstanceOf[VoteRole], targetRole.asInstanceOf[JoinMovieRole])
+    if (className.isInstanceOf[VideoCassetteCastPerson]) return new VideoCassetteCastPersonRole(sourceRole.asInstanceOf[JoinMovieRole], targetRole.asInstanceOf[PersonRole])
+    return null
+  }
+
+  override def toString(): String = {
+    "VC: Simple0"
+  }
+
+  def createJoinMovie(title: String, year: Int, minutesLength: Int): Simple0#JoinMovieRole = {
+    return new JoinMovieRole(title, year, minutesLength)
+  }
+
+  def createVote(score: Int): Simple0#VoteRole = {
+    return new VoteRole(score)
+  }
+
+  def createPerson(lastName: String): Simple0#PersonRole = {
+    return new PersonRole(lastName)
+  }
+
+  class JoinMovieRole(protected val title: String, protected val year: Int, protected val minutesLength: Int) extends AViewRole {
+
+    private var votes: Set[Simple0#VoteFilmFilmRole] = Set.empty
+    private var cast: Set[Simple0#VideoCassetteCastPersonRole] = Set.empty
+
+    private[Simple0] def removeVotesIntern(v: Simple0#VoteFilmFilmRole): Unit = {
+      votes -= v
+    }
+
+    private[Simple0] def setVotesIntern(v: Simple0#VoteFilmFilmRole): Unit = {
+      votes += v
+    }
+
+    def getVotes(): Set[Simple0#VoteRole] = {
+      var vs: Set[Simple0#VoteRole] = Set.empty
+      votes.foreach { v => vs += v.getSource() }
+      return vs
+    }
+
+    def hasVotes(v: Simple0#VoteRole): Boolean = {
+      return getVotes.contains(v)
+    }
+
+    def addVotes(v: Simple0#VoteRole): Boolean = {
+      if (hasVotes(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new VoteFilmFilmRole(v, this)
+      return true
+    }
+
+    def removeVotes(v: Simple0#VoteRole): Boolean = {
+      if (!hasVotes(v)) return false
+      votes.foreach { h =>
+        if (h.getSource() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    private[Simple0] def removeCastIntern(v: Simple0#VideoCassetteCastPersonRole): Unit = {
+      cast -= v
+    }
+
+    private[Simple0] def setCastIntern(v: Simple0#VideoCassetteCastPersonRole): Unit = {
+      cast += v
+    }
+
+    def getCast(): Set[Simple0#PersonRole] = {
+      var vs: Set[Simple0#PersonRole] = Set.empty
+      cast.foreach { v => vs += v.getTarget() }
+      return vs
+    }
+
+    def hasCast(v: Simple0#PersonRole): Boolean = {
+      return getCast.contains(v)
+    }
+
+    def addCast(v: Simple0#PersonRole): Boolean = {
+      if (hasCast(v) || !containsRole(v.asInstanceOf[AViewRole])) return false
+      new VideoCassetteCastPersonRole(this, v)
+      return true
+    }
+
+    def removeCast(v: Simple0#PersonRole): Boolean = {
+      if (!hasCast(v)) return false
+      cast.foreach { h =>
+        if (h.getTarget() == v) {
+          h.deleteElement()
+          return true
+        }
+      }
+      return true
+    }
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new JoinMovie(new Film(year, title), new VideoCassette(false, minutesLength, title, null))
+    }
+
+    override def toString(): String = {
+      "VNR: JoinMovieRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getTitleView(): String = {
+      +this getTitle ()
+    }
+
+    def setTitleView(title: String): Unit = {
+      +this setTitle (title)
+      +this changeSomething ()
+    }
+
+    def getYearView(): Int = {
+      +this getYear ()
+    }
+
+    def setYearView(year: Int): Unit = {
+      +this setYear (year)
+      +this changeSomething ()
+    }
+
+    def getMinutesLengthView(): Int = {
+      +this getMinutesLength ()
+    }
+
+    def setMinutesLengthView(minuteslength: Int): Unit = {
+      +this setMinutesLength (minuteslength)
+      +this changeSomething ()
+    }
+
+  }
+
+  class VoteRole(protected val score: Int) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Vote(score)
+    }
+
+    override def toString(): String = {
+      "VNR: VoteRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getScoreView(): Int = {
+      +this getScore ()
+    }
+
+    def setScoreView(score: Int): Unit = {
+      +this setScore (score)
+      +this changeSomething ()
+    }
+
+  }
+
+  class VoteFilmFilmRole(private val source: Simple0#VoteRole, private val target: Simple0#JoinMovieRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      target.setVotesIntern(this)
+      val sp: Vote = getPlayerOfType(source, "Vote").asInstanceOf[Vote]
+      val tp: Film = getPlayerOfType(target, "Film").asInstanceOf[Film]
+      val v: VoteFilmFilm = new VoteFilmFilm(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      target.removeVotesIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: VoteFilmFilmRole"
+    }
+
+    def getSource(): Simple0#VoteRole = {
+      source
+    }
+
+    def getTarget(): Simple0#JoinMovieRole = {
+      target
+    }
+
+  }
+
+  class PersonRole(protected val lastName: String) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return false
+    }
+
+    override protected def getCreationObject(): Object = {
+      return new Person(lastName, null)
+    }
+
+    override def toString(): String = {
+      "VNR: PersonRole"
+    }
+
+    override def deleteElement(): Unit = {
+      super.deleteElement()
+    }
+
+    def getLastNameView(): String = {
+      +this getLastName ()
+    }
+
+    def setLastNameView(lastname: String): Unit = {
+      +this setLastName (lastname)
+      +this changeSomething ()
+    }
+
+  }
+
+  class VideoCassetteCastPersonRole(private val source: Simple0#JoinMovieRole, private val target: Simple0#PersonRole) extends AViewRole {
+
+    override protected def isRelational(): Boolean = {
+      return true
+    }
+
+    override protected def getCreationObject(): Object = {
+      source.setCastIntern(this)
+      val sp: VideoCassette = getPlayerOfType(source, "VideoCassette").asInstanceOf[VideoCassette]
+      val tp: Person = getPlayerOfType(target, "Person").asInstanceOf[Person]
+      val v: VideoCassetteCastPerson = new VideoCassetteCastPerson(sp, tp)
+      return v
+    }
+
+    override def deleteElement(): Unit = {
+      source.removeCastIntern(this)
+      super.deleteElement()
+    }
+
+    override def toString(): String = {
+      "VRR: VideoCassetteCastPersonRole"
+    }
+
+    def getSource(): Simple0#JoinMovieRole = {
+      source
+    }
+
+    def getTarget(): Simple0#PersonRole = {
+      target
+    }
+
+  }
+
+}
+
+object Simple0 extends IViewTypeInfo {
+
+  override def getViewName(): String = "Simple0"
+
+  def getJoinInfos(): Set[IJoinInfo] = Set(JoinMovieObject)
+
+  protected def getNewInstance(): IViewCompartment = new Simple0()
+
+  def getNewView(): Simple0 = getNewViewTypeInstance().asInstanceOf[Simple0]
+}
+      
+
+    
\ No newline at end of file
diff --git a/support/scalastyle_config.xml b/support/scalastyle_config.xml
new file mode 100644
index 0000000..a34869a
--- /dev/null
+++ b/support/scalastyle_config.xml
@@ -0,0 +1,188 @@
+<scalastyle commentFilter="enabled">
+ <name>Scalastyle standard configuration</name>
+ <check class="org.scalastyle.file.FileTabChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.file.FileLengthChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="maxFileLength"><![CDATA[800]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.file.HeaderMatchesChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="header"><![CDATA[// Copyright (C) 2011-2012 the original author or authors.
+// See the LICENCE.txt file distributed with this work for additional
+// information regarding copyright ownership.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.SpacesAfterPlusChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.file.WhitespaceEndOfLineChecker" level="warning" enabled="true">
+   <parameters>
+    <parameter name="ignoreWhitespaceLines"><![CDATA[false]]></parameter>
+   </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.SpacesBeforePlusChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.file.FileLineLengthChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="maxLineLength"><![CDATA[160]]></parameter>
+   <parameter name="tabSize"><![CDATA[4]]></parameter>
+   <parameter name="ignoreImports"><![CDATA[false]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.ClassNamesChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="regex"><![CDATA[^[A-Z][A-Za-z]*$]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.ObjectNamesChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="regex"><![CDATA[^[A-Z][A-Za-z]*$]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.PackageObjectNamesChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.EqualsHashCodeChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.IllegalImportsChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="illegalImports"><![CDATA[sun._,java.awt._]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.ParameterNumberChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="maxParameters"><![CDATA[8]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.MagicNumberChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="ignore"><![CDATA[-1,0,1,2,3]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.NoWhitespaceBeforeLeftBracketChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.NoWhitespaceAfterLeftBracketChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.ReturnChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.NullChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.NoCloneChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.NoFinalizeChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.CovariantEqualsChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.StructuralTypeChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.file.RegexChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="regex"><![CDATA[println]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.NumberOfTypesChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="maxTypes"><![CDATA[30]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.CyclomaticComplexityChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="maximum"><![CDATA[10]]></parameter>
+   <parameter name="countCases"><![CDATA[true]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.UppercaseLChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.SimplifyBooleanExpressionChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.IfBraceChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="singleLineAllowed"><![CDATA[true]]></parameter>
+   <parameter name="doubleLineAllowed"><![CDATA[false]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.MethodLengthChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="maxLength"><![CDATA[50]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.MethodNamesChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="regex"><![CDATA[^[a-z][A-Za-z0-9]*(_=)?$]]></parameter>
+   <parameter name="ignoreRegex"><![CDATA[^$]]></parameter>
+   <parameter name="ignoreOverride"><![CDATA[false]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="maxMethods"><![CDATA[30]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="ignoreOverride"><![CDATA[false]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.file.NewLineAtEofChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.file.NoNewLineAtEofChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.WhileChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.VarFieldChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.VarLocalChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.RedundantIfChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.TokenChecker" level="warning" enabled="false">
+  <parameters>
+   <parameter name="regex"><![CDATA[println]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.DeprecatedJavaChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.OverrideJavaChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.EmptyClassChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.ClassTypeParameterChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="regex"><![CDATA[^[A-Z_]$]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.UnderscoreImportChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.LowercasePatternMatchChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.EmptyInterpolatedStringChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.MultipleStringLiteralsChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="allowed"><![CDATA[2]]></parameter>
+   <parameter name="ignoreRegex"><![CDATA[^""$]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.ImportGroupingChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.NotImplementedErrorUsage" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.BlockImportChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.ProcedureDeclarationChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.ForBraceChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.ForLoopChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" level="warning" enabled="true"></check>
+ <check class="org.scalastyle.scalariform.ScalaDocChecker" level="warning" enabled="false">
+  <parameters>
+   <parameter name="ignoreRegex"><![CDATA[^$]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.DisallowSpaceAfterTokenChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.DisallowSpaceBeforeTokenChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.EnsureSingleSpaceAfterTokenChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.EnsureSingleSpaceBeforeTokenChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.scalariform.NonASCIICharacterChecker" level="warning" enabled="false"></check>
+ <check class="org.scalastyle.file.IndentationChecker" level="warning" enabled="false">
+  <parameters>
+   <parameter name="tabSize"><![CDATA[2]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.FieldNamesChecker" level="warning" enabled="false">
+  <parameters>
+   <parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter>
+   <parameter name="objectFieldRegex"><![CDATA[^[A-Z][A-Za-z]*$]]></parameter>
+  </parameters>
+ </check>
+ <check class="org.scalastyle.scalariform.TodoCommentChecker" level="warning" enabled="true">
+  <parameters>
+   <parameter name="words"><![CDATA[TODO|FIXME]]></parameter>
+  </parameters>
+ </check>
+</scalastyle>
-- 
GitLab