diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..8dd013afc8bf89a67e96e58f9373aa44caa05430
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000000000000000000000000000000000000..9c2e6c7f29d54f08557e57cdea0fb78d98db50b0
--- /dev/null
+++ b/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>modelling</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.sirius.nature.modelingproject</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..697ca964527a545764d3a69847c122b371257973
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
diff --git a/model/modelling.aird b/model/modelling.aird
new file mode 100644
index 0000000000000000000000000000000000000000..a7868f45b630533080443e1f4477524341e6ac93
--- /dev/null
+++ b/model/modelling.aird
@@ -0,0 +1,1350 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
+  <viewpoint:DAnalysis xmi:id="_I3BYkMQWEeiLYNnOWGjSFA" selectedViews="_I8STEMQWEeiLYNnOWGjSFA" version="13.0.0.201804031646">
+    <semanticResources>modelling.ecore</semanticResources>
+    <semanticResources>modelling.genmodel</semanticResources>
+    <ownedViews xmi:type="viewpoint:DView" xmi:id="_I8STEMQWEeiLYNnOWGjSFA">
+      <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" xmi:id="_JGn60MQWEeiLYNnOWGjSFA" name="modelling" repPath="#_JBMBMMQWEeiLYNnOWGjSFA">
+        <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+        <target xmi:type="ecore:EPackage" href="modelling.ecore#/"/>
+      </ownedRepresentationDescriptors>
+    </ownedViews>
+  </viewpoint:DAnalysis>
+  <diagram:DSemanticDiagram xmi:id="_JGibQMQWEeiLYNnOWGjSFA" name="modelling" uid="_JBMBMMQWEeiLYNnOWGjSFA">
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_JGibQcQWEeiLYNnOWGjSFA" source="DANNOTATION_CUSTOMIZATION_KEY">
+      <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_JGibQsQWEeiLYNnOWGjSFA">
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_OJMj8cSyEeiLYNnOWGjSFA" showIcon="false" labelExpression="service:render">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </centerLabelStyleDescription>
+          <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_OJMj8sSyEeiLYNnOWGjSFA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_JHSCIMQWEeiLYNnOWGjSFA" source="GMF_DIAGRAMS">
+      <data xmi:type="notation:Diagram" xmi:id="_JHSCIcQWEeiLYNnOWGjSFA" type="Sirius" element="_JGibQMQWEeiLYNnOWGjSFA" measurementUnit="Pixel">
+        <children xmi:type="notation:Node" xmi:id="_Np4DkMQWEeiLYNnOWGjSFA" type="2003" element="_NpTb0MQWEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_Np-KMMQWEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_Np_YUMQWEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_S_FNsMQWEeiLYNnOWGjSFA" type="3010" element="_S-zg4MQWEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_S_FNscQWEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_S_FNssQWEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Yx8kMMQWEeiLYNnOWGjSFA" type="3010" element="_YxuhwMQWEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Yx8kMcQWEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Yx8kMsQWEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_dJ1xgMQWEeiLYNnOWGjSFA" type="3010" element="_dJnvEMQWEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_dJ1xgcQWEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_dJ1xgsQWEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_Np_YUcQWEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_Np_YUsQWEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_Np4DkcQWEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Np4DksQWEeiLYNnOWGjSFA" x="885" y="15" width="120" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_Eg_-EMQXEeiLYNnOWGjSFA" type="2003" element="_Egx7oMQXEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_EhAlIMQXEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_EhAlIcQXEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7vgAEMTCEeiLYNnOWGjSFA" type="3010" element="_7vTy0MTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7vgAEcTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7vgAEsTCEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_85OoQMTCEeiLYNnOWGjSFA" type="3010" element="_85Al0MTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_85OoQcTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_85OoQsTCEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_EhAlIsQXEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_EhAlI8QXEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_Eg_-EcQXEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eg_-EsQXEeiLYNnOWGjSFA" x="1020" y="210" width="120" height="79"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_GT8zEMS_EeiLYNnOWGjSFA" type="2003" element="_GTs7cMS_EeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_GT9aIMS_EeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_GT-BMMS_EeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_w8lXcMS_EeiLYNnOWGjSFA" type="3010" element="_w8ZKMMS_EeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_w8lXccS_EeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_w8lXcsS_EeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_dD6HYMTAEeiLYNnOWGjSFA" type="3010" element="_dDw9cMTAEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_dD6HYcTAEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_dD6HYsTAEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_sjurYMTAEeiLYNnOWGjSFA" type="3010" element="_sjmvkMTAEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_sjurYcTAEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_sjurYsTAEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_vH-w0MTAEeiLYNnOWGjSFA" type="3010" element="_vH0YwMTAEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_vH-w0cTAEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_vH-w0sTAEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_GT-BMcS_EeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_GT-BMsS_EeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_GT8zEcS_EeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GT8zEsS_EeiLYNnOWGjSFA" x="655" y="130" width="138" height="118"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_8uj7QMTAEeiLYNnOWGjSFA" type="2003" element="_8uZjMMTAEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_8uj7Q8TAEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_8ukiUMTAEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="__HJjQMTAEeiLYNnOWGjSFA" type="3010" element="__G9WAMTAEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="__HJjQcTAEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="__HJjQsTAEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_E5p38MTCEeiLYNnOWGjSFA" type="3010" element="_E5dDoMTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_E5p38cTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_E5p38sTCEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_IYU-QMTCEeiLYNnOWGjSFA" type="3010" element="_IYKmMMTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_IYU-QcTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_IYU-QsTCEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_K4DwEMTCEeiLYNnOWGjSFA" type="3010" element="_K327wMTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_K4DwEcTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_K4DwEsTCEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_akX38MTCEeiLYNnOWGjSFA" type="3010" element="_akLDoMTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_akX38cTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_akX38sTCEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_8ukiUcTAEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_8ukiUsTAEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_8uj7QcTAEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8uj7QsTAEeiLYNnOWGjSFA" x="170" y="306" width="273" height="123"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_BWER4MTBEeiLYNnOWGjSFA" type="2003" element="_BVzzMMTBEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_BWE48MTBEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_BWE48cTBEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_GwG4sMTBEeiLYNnOWGjSFA" type="3010" element="_Gv9HsMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_GwG4scTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_GwG4ssTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_KCX6sMTBEeiLYNnOWGjSFA" type="3010" element="_KCOJsMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_KCX6scTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_KCX6ssTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_LgcbMMTBEeiLYNnOWGjSFA" type="3010" element="_LgRcEMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_LgcbMcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_LgcbMsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_NLoKoMTBEeiLYNnOWGjSFA" type="3010" element="_NLfAsMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_NLoKocTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_NLoKosTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_PT-XMMTBEeiLYNnOWGjSFA" type="3010" element="_PT10UMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_PT-XMcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_PT-XMsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_QW2wgMTBEeiLYNnOWGjSFA" type="3010" element="_QWtmkMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_QW2wgcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_QW2wgsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_RZsGgMTBEeiLYNnOWGjSFA" type="3010" element="_RZhucMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_RZsGgcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_RZsGgsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_BWE48sTBEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_BWE488TBEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_BWER4cTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BWER4sTBEeiLYNnOWGjSFA" x="270" y="15" width="198" height="138"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_Tn31UMTBEeiLYNnOWGjSFA" type="2003" element="_TnuEUMTBEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_Tn4cYMTBEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_Tn4cYcTBEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_W0VxUMTBEeiLYNnOWGjSFA" type="3010" element="_W0LZQMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_W0VxUcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_W0VxUsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_YW8zkMTBEeiLYNnOWGjSFA" type="3010" element="_YWzpoMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_YW8zkcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_YW8zksTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_aJ1tgMTBEeiLYNnOWGjSFA" type="3010" element="_aJr8gMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_aJ1tgcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_aJ1tgsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_k9KtMMTBEeiLYNnOWGjSFA" type="3010" element="_k8944MTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_k9KtMcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_k9KtMsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_Tn4cYsTBEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_Tn4cY8TBEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_Tn31UcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tn31UsTBEeiLYNnOWGjSFA"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_o_kLoMTBEeiLYNnOWGjSFA" type="2003" element="_o_dd8MTBEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_o_kysMTBEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_o_kyscTBEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_rY1JEMTBEeiLYNnOWGjSFA" type="3010" element="_rYqJ8MTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_rY1JEcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_rY1JEsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_zo9zQMTBEeiLYNnOWGjSFA" type="3010" element="_zo0pUMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_zo9zQcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_zo9zQsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_1bdroMTBEeiLYNnOWGjSFA" type="3010" element="_1bSFcMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_1bdrocTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_1bdrosTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_27IuoMTBEeiLYNnOWGjSFA" type="3010" element="_26-9oMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_27IuocTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_27IuosTBEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_o_kyssTBEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_o_kys8TBEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_o_kLocTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o_kLosTBEeiLYNnOWGjSFA" x="20" y="140" width="188" height="108"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_5mNNwMTBEeiLYNnOWGjSFA" type="2003" element="_5mC1sMTBEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_5mN00MTBEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_5mN00cTBEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7vIpIMTBEeiLYNnOWGjSFA" type="3010" element="_7u9qAMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7vIpIcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7vIpIsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_8vQCUMTBEeiLYNnOWGjSFA" type="3010" element="_8vGRUMTBEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_8vQCUcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_8vQCUsTBEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_5mN00sTBEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_5mN008TBEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_5mNNwcTBEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5mNNwsTBEeiLYNnOWGjSFA" x="240" y="185" width="120" height="78"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_hX72cMTCEeiLYNnOWGjSFA" type="2003" element="_hX0hsMTCEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_hX72c8TCEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_hX72dMTCEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_ldcTQMTCEeiLYNnOWGjSFA" type="3010" element="_ldRUIMTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_ldcTQcTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_ldcTQsTCEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_npy2EMTCEeiLYNnOWGjSFA" type="3010" element="_npnP4MTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_npy2EcTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_npy2EsTCEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_piA78MTCEeiLYNnOWGjSFA" type="3010" element="_ph3K8MTCEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_piA78cTCEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_piA78sTCEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_hX72dcTCEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_hX72dsTCEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_hX72ccTCEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hX72csTCEeiLYNnOWGjSFA" x="450" y="309" width="188" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_BIO_UMTDEeiLYNnOWGjSFA" type="2003" element="_BIDZIMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_BIPmYMTDEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_BIPmYcTDEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_FBESEMTDEeiLYNnOWGjSFA" type="3010" element="_FA56AMTDEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_FBESEcTDEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_FBESEsTDEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_BIPmYsTDEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_BIPmY8TDEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_BIO_UcTDEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BIO_UsTDEeiLYNnOWGjSFA" x="775" y="330" width="120" height="58"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_blikkMTDEeiLYNnOWGjSFA" type="2003" element="_blW-YMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_bljLoMTDEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_bljLocTDEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_eqTWEMTDEeiLYNnOWGjSFA" type="3010" element="_eqHv4MTDEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_eqTWEcTDEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_eqTWEsTDEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_bljLosTDEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_bljLo8TDEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_blikkcTDEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blikksTDEeiLYNnOWGjSFA" x="645" y="326" width="120" height="65"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_iRrFYMTDEeiLYNnOWGjSFA" type="2003" element="_iRjwoMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_iRrscMTDEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_iRrsccTDEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_jlCKsMTDEeiLYNnOWGjSFA" type="3010" element="_jk5n0MTDEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_jlCKscTDEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_jlCKssTDEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_iRrscsTDEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_iRrsc8TDEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_iRrFYcTDEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iRrFYsTDEeiLYNnOWGjSFA" x="910" y="320" width="120" height="60"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_pT9cYMTDEeiLYNnOWGjSFA" type="2003" element="_pTx2MMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_pT9cY8TDEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_pT9cZMTDEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_qYGZ8MTDEeiLYNnOWGjSFA" type="3010" element="_qX4XgMTDEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_qYGZ8cTDEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_qYGZ8sTDEeiLYNnOWGjSFA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_racAsMTDEeiLYNnOWGjSFA" type="3010" element="_raRooMTDEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_racAscTDEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_racAssTDEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_pT9cZcTDEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_pT9cZsTDEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_pT9cYcTDEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pT9cYsTDEeiLYNnOWGjSFA" x="1290" y="270" width="131" height="70"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_xJMTQMTDEeiLYNnOWGjSFA" type="2003" element="_xJCiQMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_xJMTQ8TDEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_xJM6UMTDEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_y25LMMTDEeiLYNnOWGjSFA" type="3010" element="_y2uMEMTDEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_y25LMcTDEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_y25LMsTDEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_xJM6UcTDEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_xJM6UsTDEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_xJMTQcTDEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xJMTQsTDEeiLYNnOWGjSFA" x="1195" y="150" width="120" height="55"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_2usjMMTDEeiLYNnOWGjSFA" type="2003" element="_2ulOcMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_2usjM8TDEeiLYNnOWGjSFA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_2usjNMTDEeiLYNnOWGjSFA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_4_oEAMTDEeiLYNnOWGjSFA" type="3010" element="_4_dE4MTDEeiLYNnOWGjSFA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_4_oEAcTDEeiLYNnOWGjSFA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_4_oEAsTDEeiLYNnOWGjSFA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_2usjNcTDEeiLYNnOWGjSFA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_2usjNsTDEeiLYNnOWGjSFA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_2usjMcTDEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2usjMsTDEeiLYNnOWGjSFA" x="1110" y="342" width="120" height="51"/>
+        </children>
+        <styles xmi:type="notation:DiagramStyle" xmi:id="_JHSCIsQWEeiLYNnOWGjSFA"/>
+        <edges xmi:type="notation:Edge" xmi:id="_zCvXcMQWEeiLYNnOWGjSFA" type="4001" element="_zCb1cMQWEeiLYNnOWGjSFA" source="_Np4DkMQWEeiLYNnOWGjSFA" target="_Np4DkMQWEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_zCv-gMQWEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zCv-gcQWEeiLYNnOWGjSFA" x="-25" y="5"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_zCv-gsQWEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zCv-g8QWEeiLYNnOWGjSFA" x="14" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_zCv-hMQWEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zCv-hcQWEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_zCvXccQWEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_zCvXcsQWEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zCvXc8QWEeiLYNnOWGjSFA" points="[18, -25, 0, -12]$[110, -25, 92, -12]$[110, -48, 92, -35]$[18, -48, 0, -35]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zCwlkMQWEeiLYNnOWGjSFA" id="(0.847457627118644,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zCwlkcQWEeiLYNnOWGjSFA" id="(1.0,0.8673469387755102)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_5D3MYMQWEeiLYNnOWGjSFA" type="4001" element="_5Dk4gMQWEeiLYNnOWGjSFA" source="_Np4DkMQWEeiLYNnOWGjSFA" target="_Np4DkMQWEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_5D3zcMQWEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5D3zccQWEeiLYNnOWGjSFA" x="34" y="61"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_5D3zcsQWEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5D3zc8QWEeiLYNnOWGjSFA" x="-9" y="103"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_5D3zdMQWEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5D3zdcQWEeiLYNnOWGjSFA" x="4" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_5D3MYcQWEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_5D3MYsQWEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5D3MY8QWEeiLYNnOWGjSFA" points="[-40, 0, -58, -25]$[-40, -40, -58, -65]$[75, -40, 57, -65]$[75, 10, 57, -15]$[18, 10, 0, -15]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5D4agMQWEeiLYNnOWGjSFA" id="(0.847457627118644,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5D4agcQWEeiLYNnOWGjSFA" id="(1.0,0.25510204081632654)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_OJb0gMSyEeiLYNnOWGjSFA" type="4001" element="_OJJgoMSyEeiLYNnOWGjSFA" source="_Eg_-EMQXEeiLYNnOWGjSFA" target="_Np4DkMQWEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_OJcbkMSyEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OJcbkcSyEeiLYNnOWGjSFA" x="-21" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_OJcbksSyEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OJcbk8SyEeiLYNnOWGjSFA" x="3" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_OJcblMSyEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OJcblcSyEeiLYNnOWGjSFA" x="-70"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_OJb0gcSyEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_OJb0gsSyEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OJb0g8SyEeiLYNnOWGjSFA" points="[0, 0, 135, 97]$[0, -53, 135, 44]$[-135, -53, 0, 44]$[-135, -97, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJdCoMSyEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJdCocSyEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_1WsV0MTAEeiLYNnOWGjSFA" type="4001" element="_1WfhgMTAEeiLYNnOWGjSFA" source="_GT8zEMS_EeiLYNnOWGjSFA" target="_Np4DkMQWEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_1WsV1MTAEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1WsV1cTAEeiLYNnOWGjSFA" x="7" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_1WsV1sTAEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1WsV18TAEeiLYNnOWGjSFA" x="-33" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_1Ws84MTAEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1Ws84cTAEeiLYNnOWGjSFA" x="-1" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_1WsV0cTAEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_1WsV0sTAEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1WsV08TAEeiLYNnOWGjSFA" points="[-68, 44, -289, 61]$[-186, 44, -407, 61]$[-186, 121, -407, 138]$[207, 121, -14, 138]$[207, -17, -14, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1Ws84sTAEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1Ws848TAEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_P2MMEMTEEeiLYNnOWGjSFA" type="4001" element="_P1zxkMTEEeiLYNnOWGjSFA" source="_2usjMMTDEeiLYNnOWGjSFA" target="_iRrFYMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_P2MzIMTEEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P2MzIcTEEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_P2MzIsTEEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P2MzI8TEEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_P2MzJMTEEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P2MzJcTEEeiLYNnOWGjSFA" x="-24" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_P2MMEcTEEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_P2MMEsTEEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_P2MME8TEEeiLYNnOWGjSFA" points="[0, 0, -360, 60]$[360, -60, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P2MzJsTEEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P2MzJ8TEEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_aC4pkMTEEeiLYNnOWGjSFA" type="4001" element="_aCfA8MTEEeiLYNnOWGjSFA" source="_pT9cYMTDEeiLYNnOWGjSFA" target="_xJMTQMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_aC4plMTEEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aC4plcTEEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_aC5QoMTEEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aC5QocTEEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_aC5QosTEEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aC5Qo8TEEeiLYNnOWGjSFA" x="-26" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_aC4pkcTEEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_aC4pksTEEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aC4pk8TEEeiLYNnOWGjSFA" points="[0, 0, -6, 60]$[6, -60, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aC5QpMTEEeiLYNnOWGjSFA" id="(0.4961832061068702,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aC5QpcTEEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_mnQwIMTEEeiLYNnOWGjSFA" type="4001" element="_mm6x4MTEEeiLYNnOWGjSFA" source="_pT9cYMTDEeiLYNnOWGjSFA" target="_2usjMMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_mnRXMMTEEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mnRXMcTEEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_mnRXMsTEEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mnRXM8TEEeiLYNnOWGjSFA" x="20" y="-80"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_mnRXNMTEEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mnRXNcTEEeiLYNnOWGjSFA" x="-28"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_mnQwIcTEEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_mnQwIsTEEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mnQwI8TEEeiLYNnOWGjSFA" points="[0, 0, 174, 60]$[-174, -60, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mnRXNsTEEeiLYNnOWGjSFA" id="(0.4961832061068702,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mnRXN8TEEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_a7CHoMTGEeiLYNnOWGjSFA" type="4001" element="_a5B8gMTGEeiLYNnOWGjSFA" source="_GT8zEMS_EeiLYNnOWGjSFA" target="_iRrFYMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_a7CHpMTGEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a7CHpcTGEeiLYNnOWGjSFA" x="83" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_a7CHpsTGEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a7CHp8TGEeiLYNnOWGjSFA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_a7CHqMTGEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a7CHqcTGEeiLYNnOWGjSFA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_a7CHocTGEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_a7CHosTGEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a7CHo8TGEeiLYNnOWGjSFA" points="[0, 0, -527, 542]$[526, -61, -1, 481]$[527, -542, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a7CusMTGEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a7CuscTGEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_il8S8MTIEeiLYNnOWGjSFA" type="4001" element="_iliDQMTIEeiLYNnOWGjSFA" source="_GT8zEMS_EeiLYNnOWGjSFA" target="_blikkMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_il8S9MTIEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_il8S9cTIEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_il8S9sTIEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_il8S98TIEeiLYNnOWGjSFA" x="-5" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_il8S-MTIEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_il8S-cTIEeiLYNnOWGjSFA" x="-6" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_il8S8cTIEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_il8S8sTIEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_il8S88TIEeiLYNnOWGjSFA" points="[0, 0, -167, 60]$[167, -60, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_il86AMTIEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_il86AcTIEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_kXTi4MTIEeiLYNnOWGjSFA" type="4001" element="_kXJK0MTIEeiLYNnOWGjSFA" source="_GT8zEMS_EeiLYNnOWGjSFA" target="_hX72cMTCEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_kXTi5MTIEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kXTi5cTIEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_kXUJ8MTIEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kXUJ8cTIEeiLYNnOWGjSFA" x="26" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_kXUJ8sTIEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kXUJ88TIEeiLYNnOWGjSFA" x="-42" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_kXTi4cTIEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_kXTi4sTIEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kXTi48TIEeiLYNnOWGjSFA" points="[0, 0, 47, 60]$[-47, -60, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kXUxAMTIEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kXUxAcTIEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_sJtIMMTIEeiLYNnOWGjSFA" type="4001" element="_sJdQkMTIEeiLYNnOWGjSFA" source="_GT8zEMS_EeiLYNnOWGjSFA" target="_8uj7QMTAEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_sJtINMTIEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sJtINcTIEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_sJtvQMTIEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sJtvQcTIEeiLYNnOWGjSFA" x="14" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_sJtvQsTIEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sJtvQ8TIEeiLYNnOWGjSFA" x="-14" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_sJtIMcTIEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_sJtIMsTIEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sJtIM8TIEeiLYNnOWGjSFA" points="[0, 0, 338, 60]$[-338, -60, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sJtvRMTIEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sJtvRcTIEeiLYNnOWGjSFA" id="(0.4981684981684982,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_50doAMTIEeiLYNnOWGjSFA" type="4001" element="_50KtEMTIEeiLYNnOWGjSFA" source="_GT8zEMS_EeiLYNnOWGjSFA" target="_BIO_UMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_50ePEMTIEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_50ePEcTIEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_50e2IMTIEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_50e2IcTIEeiLYNnOWGjSFA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_50e2IsTIEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_50e2I8TIEeiLYNnOWGjSFA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_50doAcTIEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_50doAsTIEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_50doA8TIEeiLYNnOWGjSFA" points="[0, 0, -347, 60]$[347, -60, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_50fdMMTIEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_50fdMcTIEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_CViRMMTJEeiLYNnOWGjSFA" type="4001" element="_CVNhEMTJEeiLYNnOWGjSFA" source="_BIO_UMTDEeiLYNnOWGjSFA" target="_Eg_-EMQXEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_CViRNMTJEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CViRNcTJEeiLYNnOWGjSFA" x="29" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_CViRNsTJEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CViRN8TJEeiLYNnOWGjSFA" x="11" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_CVi4QMTJEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CVi4QcTJEeiLYNnOWGjSFA" x="1" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_CViRMcTJEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_CViRMsTJEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CViRM8TJEeiLYNnOWGjSFA" points="[0, 0, -245, 43]$[0, -26, -245, 17]$[245, -26, 0, 17]$[245, -43, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CVi4QsTJEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CVi4Q8TJEeiLYNnOWGjSFA" id="(0.5,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_2ZUhYMTJEeiLYNnOWGjSFA" type="4001" element="_2ZHGAMTJEeiLYNnOWGjSFA" source="_BIO_UMTDEeiLYNnOWGjSFA" target="_pT9cYMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_2ZUhZMTJEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ZUhZcTJEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_2ZUhZsTJEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ZUhZ8TJEeiLYNnOWGjSFA" x="82" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_2ZUhaMTJEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ZUhacTJEeiLYNnOWGjSFA" x="3" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_2ZUhYcTJEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_2ZUhYsTJEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2ZUhY8TJEeiLYNnOWGjSFA" points="[0, -61, 6, 100]$[-6, -121, 0, 40]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2ZUhasTJEeiLYNnOWGjSFA" id="(0.5,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2ZUha8TJEeiLYNnOWGjSFA" id="(0.4961832061068702,1.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_u--vkMTxEeiLYNnOWGjSFA" type="4001" element="_u-au4MTxEeiLYNnOWGjSFA" source="_GT8zEMS_EeiLYNnOWGjSFA" target="_xJMTQMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_u-_WoMTxEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u-_WocTxEeiLYNnOWGjSFA" x="15" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_u-_9sMTxEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u-_9scTxEeiLYNnOWGjSFA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_u-_9ssTxEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u-_9s8TxEeiLYNnOWGjSFA" x="-4" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_u--vkcTxEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_u--vksTxEeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_u--vk8TxEeiLYNnOWGjSFA" points="[68, -21, -463, -9]$[472, -21, -59, -9]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vAnHQMTxEeiLYNnOWGjSFA" id="(0.5,0.5)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vAnHQcTxEeiLYNnOWGjSFA" id="(0.5,0.5)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_m8BB4MT1EeiLYNnOWGjSFA" type="4001" element="_m7xKQMT1EeiLYNnOWGjSFA" source="_GT8zEMS_EeiLYNnOWGjSFA" target="_xJMTQMTDEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_m8Bo8MT1EeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_m8Bo8cT1EeiLYNnOWGjSFA" x="-20" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_m8Bo8sT1EeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_m8Bo88T1EeiLYNnOWGjSFA" x="-6" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_m8Bo9MT1EeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_m8Bo9cT1EeiLYNnOWGjSFA" x="-32" y="16"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_m8BB4cT1EeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_m8BB4sT1EeiLYNnOWGjSFA" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m8BB48T1EeiLYNnOWGjSFA" points="[68, -48, -463, -36]$[532, -48, 1, -36]$[532, -38, 1, -26]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m8Bo9sT1EeiLYNnOWGjSFA" id="(0.5,0.5)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m8Bo98T1EeiLYNnOWGjSFA" id="(0.5,0.5)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_MxTzEMT2EeiLYNnOWGjSFA" type="4001" element="_Mw_qAMT2EeiLYNnOWGjSFA" source="_xJMTQMTDEeiLYNnOWGjSFA" target="_Eg_-EMQXEeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_MxUaIMT2EeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MxUaIcT2EeiLYNnOWGjSFA" x="-22" y="-13"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_MxUaIsT2EeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MxUaI8T2EeiLYNnOWGjSFA" x="-9" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_MxUaJMT2EeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MxUaJcT2EeiLYNnOWGjSFA" x="-41" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_MxTzEcT2EeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_MxTzEsT2EeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MxTzE8T2EeiLYNnOWGjSFA" points="[0, 0, 89, -50]$[0, 50, 89, 0]$[-89, 50, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MxVBMMT2EeiLYNnOWGjSFA" id="(0.2711864406779661,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MxVBMcT2EeiLYNnOWGjSFA" id="(1.0,0.5584415584415584)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_PmHxIMUDEeiLYNnOWGjSFA" type="4001" element="_Plna0MUDEeiLYNnOWGjSFA" source="_blikkMTDEeiLYNnOWGjSFA" target="_GT8zEMS_EeiLYNnOWGjSFA">
+          <children xmi:type="notation:Node" xmi:id="_PmIYMMUDEeiLYNnOWGjSFA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PmIYMcUDEeiLYNnOWGjSFA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_PmIYMsUDEeiLYNnOWGjSFA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PmIYM8UDEeiLYNnOWGjSFA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_PmI_QMUDEeiLYNnOWGjSFA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PmI_QcUDEeiLYNnOWGjSFA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_PmHxIcUDEeiLYNnOWGjSFA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_PmHxIsUDEeiLYNnOWGjSFA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PmHxI8UDEeiLYNnOWGjSFA" points="[0, 0, -15, 80]$[0, -40, -15, 40]$[15, -40, 0, 40]$[15, -80, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PmI_QsUDEeiLYNnOWGjSFA" id="(0.2966101694915254,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PmI_Q8UDEeiLYNnOWGjSFA" id="(0.29411764705882354,1.0)"/>
+        </edges>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_NpTb0MQWEeiLYNnOWGjSFA" name="Course" tooltipText="" outgoingEdges="_zCb1cMQWEeiLYNnOWGjSFA _5Dk4gMQWEeiLYNnOWGjSFA" incomingEdges="_zCb1cMQWEeiLYNnOWGjSFA _5Dk4gMQWEeiLYNnOWGjSFA _OJJgoMSyEeiLYNnOWGjSFA _1WfhgMTAEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//Course"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//Course"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_x-BLEMQWEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_S-zg4MQWEeiLYNnOWGjSFA" name="code : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Course/code"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Course/code"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_YFRrcMQWEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_YxuhwMQWEeiLYNnOWGjSFA" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Course/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Course/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_cEpEAMQWEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_dJnvEMQWEeiLYNnOWGjSFA" name="content : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Course/content"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Course/content"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_e25wQMQWEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_zCb1cMQWEeiLYNnOWGjSFA" name="[0..*] recommendedCourses" sourceNode="_NpTb0MQWEeiLYNnOWGjSFA" targetNode="_NpTb0MQWEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//Course/recommendedCourses"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Course/recommendedCourses"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_zCdDkMQWEeiLYNnOWGjSFA" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_zCdDkcQWEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_zCdDksQWEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_5Dk4gMQWEeiLYNnOWGjSFA" name="[0..*] requiredCourses" sourceNode="_NpTb0MQWEeiLYNnOWGjSFA" targetNode="_NpTb0MQWEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//Course/requiredCourses"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Course/requiredCourses"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_5DmtsMQWEeiLYNnOWGjSFA" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_5DmtscQWEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_5DmtssQWEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_Egx7oMQXEeiLYNnOWGjSFA" name="StudyProgram" tooltipText="" outgoingEdges="_OJJgoMSyEeiLYNnOWGjSFA" incomingEdges="_CVNhEMTJEeiLYNnOWGjSFA _Mw_qAMT2EeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//StudyProgram"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//StudyProgram"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_9UwGoMTCEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7vTy0MTCEeiLYNnOWGjSFA" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//StudyProgram/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//StudyProgram/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_8bh_oMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_85Al0MTCEeiLYNnOWGjSFA" name="code : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//StudyProgram/code"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//StudyProgram/code"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_9UwtsMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_OJJgoMSyEeiLYNnOWGjSFA" name="[0..*] course" sourceNode="_Egx7oMQXEeiLYNnOWGjSFA" targetNode="_NpTb0MQWEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//StudyProgram/course"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//StudyProgram/course"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_OJNLAMSyEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_OJNLAcSyEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_OJNLAsSyEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_GTs7cMS_EeiLYNnOWGjSFA" name="CourseInstance" tooltipText="" outgoingEdges="_1WfhgMTAEeiLYNnOWGjSFA _a5B8gMTGEeiLYNnOWGjSFA _iliDQMTIEeiLYNnOWGjSFA _kXJK0MTIEeiLYNnOWGjSFA _sJdQkMTIEeiLYNnOWGjSFA _50KtEMTIEeiLYNnOWGjSFA _u-au4MTxEeiLYNnOWGjSFA _m7xKQMT1EeiLYNnOWGjSFA" incomingEdges="_Plna0MUDEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//CourseInstance"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//CourseInstance"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_wBt1MMTAEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_w8ZKMMS_EeiLYNnOWGjSFA" name="semesterYear : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//CourseInstance/semesterYear"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//CourseInstance/semesterYear"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_3pab0MS_EeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_dDw9cMTAEeiLYNnOWGjSFA" name="credits : EFloat = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//CourseInstance/credits"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//CourseInstance/credits"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_hnHz4MTAEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_sjmvkMTAEeiLYNnOWGjSFA" name="labHours : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//CourseInstance/labHours"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//CourseInstance/labHours"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_tt3jQMTAEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_vH0YwMTAEeiLYNnOWGjSFA" name="lectureHours : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//CourseInstance/lectureHours"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//CourseInstance/lectureHours"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_wBvDUMTAEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_1WfhgMTAEeiLYNnOWGjSFA" name="[0..*] course" sourceNode="_GTs7cMS_EeiLYNnOWGjSFA" targetNode="_NpTb0MQWEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/course"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/course"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_1WgvoMTAEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_1WgvocTAEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_1WgvosTAEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_8uZjMMTAEeiLYNnOWGjSFA" name="TimeTableRow" tooltipText="" incomingEdges="_sJdQkMTIEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//TimeTableRow"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//TimeTableRow"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_bWMWcMTCEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="__G9WAMTAEeiLYNnOWGjSFA" name="weekday : DayKind = Monday Monday" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/weekday"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/weekday"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_CpdW8MTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_E5dDoMTCEeiLYNnOWGjSFA" name="startTime : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/startTime"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/startTime"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_GgQpYMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_IYKmMMTCEeiLYNnOWGjSFA" name="endTime : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/endTime"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/endTime"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_JBhFMMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_K327wMTCEeiLYNnOWGjSFA" name="type : TeachingFormKind = Lecture Lecture" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/type"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/type"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_N6BFMMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_akLDoMTCEeiLYNnOWGjSFA" name="room : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/room"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//TimeTableRow/room"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_bWOLoMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BVzzMMTBEeiLYNnOWGjSFA" name="DayKind" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="modelling.ecore#//DayKind"/>
+      <semanticElements xmi:type="ecore:EEnum" href="modelling.ecore#//DayKind"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BV0aQMTBEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_Gv9HsMTBEeiLYNnOWGjSFA" name="Monday Monday" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Monday%20Monday"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Monday%20Monday"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_Gv9HscTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_KCOJsMTBEeiLYNnOWGjSFA" name="Tuesday Tuesday" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Tuesday%20Tuesday"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Tuesday%20Tuesday"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_KCOJscTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_LgRcEMTBEeiLYNnOWGjSFA" name="Wednesday Wednesday" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Wednesday%20Wednesday"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Wednesday%20Wednesday"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_LgSDIMTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_NLfAsMTBEeiLYNnOWGjSFA" name="Thursday Thursdag" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Thursday%20Thursdag"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Thursday%20Thursdag"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_NLfAscTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_PT10UMTBEeiLYNnOWGjSFA" name="Friday Friday" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Friday%20Friday"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Friday%20Friday"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_PT10UcTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_QWtmkMTBEeiLYNnOWGjSFA" name="Saturday Saturday" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Saturday%20Saturday"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Saturday%20Saturday"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_QWtmkcTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_RZhucMTBEeiLYNnOWGjSFA" name="Sunday Sunday" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Sunday%20Sunday"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//DayKind/Sunday%20Sunday"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_RZhuccTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_TnuEUMTBEeiLYNnOWGjSFA" name="RoleKind" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="modelling.ecore#//RoleKind"/>
+      <semanticElements xmi:type="ecore:EEnum" href="modelling.ecore#//RoleKind"/>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_TnuEUcTBEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_W0LZQMTBEeiLYNnOWGjSFA" name="Lecturer Lecturer" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//RoleKind/Lecturer%20Lecturer"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//RoleKind/Lecturer%20Lecturer"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_W0LZQcTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_YWzpoMTBEeiLYNnOWGjSFA" name="Coordinator Coordinator" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//RoleKind/Coordinator%20Coordinator"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//RoleKind/Coordinator%20Coordinator"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_YWzpocTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_aJr8gMTBEeiLYNnOWGjSFA" name="StudentAssistant StudentAssistant" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//RoleKind/StudentAssistant%20StudentAssistant"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//RoleKind/StudentAssistant%20StudentAssistant"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_aJr8gcTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_k8944MTBEeiLYNnOWGjSFA" name="TeacherAssistant TeacherAssistant" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//RoleKind/TeacherAssistant%20TeacherAssistant"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//RoleKind/TeacherAssistant%20TeacherAssistant"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_k8944cTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_o_dd8MTBEeiLYNnOWGjSFA" name="EvaluationFormKind" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="modelling.ecore#//EvaluationFormKind"/>
+      <semanticElements xmi:type="ecore:EEnum" href="modelling.ecore#//EvaluationFormKind"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_o_dd8cTBEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_rYqJ8MTBEeiLYNnOWGjSFA" name="WrittenExam WrittenExam" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//EvaluationFormKind/WrittenExam%20WrittenExam"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//EvaluationFormKind/WrittenExam%20WrittenExam"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_rYqxAMTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_zo0pUMTBEeiLYNnOWGjSFA" name="OralExam OralExam" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//EvaluationFormKind/OralExam%20OralExam"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//EvaluationFormKind/OralExam%20OralExam"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_zo0pUcTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_1bSFcMTBEeiLYNnOWGjSFA" name="Exercises Exercises" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//EvaluationFormKind/Exercises%20Exercises"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//EvaluationFormKind/Exercises%20Exercises"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_1bSsgMTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_26-9oMTBEeiLYNnOWGjSFA" name="Project Project" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//EvaluationFormKind/Project%20Project"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//EvaluationFormKind/Project%20Project"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_26-9ocTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_5mC1sMTBEeiLYNnOWGjSFA" name="TeachingFormKind" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="modelling.ecore#//TeachingFormKind"/>
+      <semanticElements xmi:type="ecore:EEnum" href="modelling.ecore#//TeachingFormKind"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_5mDcwMTBEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7u9qAMTBEeiLYNnOWGjSFA" name="Lecture Lecture" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//TeachingFormKind/Lecture%20Lecture"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//TeachingFormKind/Lecture%20Lecture"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7u-REMTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_8vGRUMTBEeiLYNnOWGjSFA" name="Lab Lab" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//TeachingFormKind/Lab%20Lab"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="modelling.ecore#//TeachingFormKind/Lab%20Lab"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_8vGRUcTBEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_hX0hsMTCEeiLYNnOWGjSFA" name="EvaluationForm" tooltipText="" incomingEdges="_kXJK0MTIEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//EvaluationForm"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//EvaluationForm"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_sMPtkMTCEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_ldRUIMTCEeiLYNnOWGjSFA" name="percentage : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//EvaluationForm/percentage"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//EvaluationForm/percentage"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_m1JtEMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_npnP4MTCEeiLYNnOWGjSFA" name="content : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//EvaluationForm/content"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//EvaluationForm/content"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_od_TIMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_ph3K8MTCEeiLYNnOWGjSFA" name="type : EvaluationFormKind = WrittenExam WrittenExam" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//EvaluationForm/type"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//EvaluationForm/type"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_sMRiwMTCEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BIDZIMTDEeiLYNnOWGjSFA" name="Department" tooltipText="" outgoingEdges="_CVNhEMTJEeiLYNnOWGjSFA _2ZHGAMTJEeiLYNnOWGjSFA" incomingEdges="_50KtEMTIEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//Department"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//Department"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_F1ib8MTDEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_FA56AMTDEeiLYNnOWGjSFA" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Department/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Department/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_F1kRIMTDEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_blW-YMTDEeiLYNnOWGjSFA" name="PointReduction" tooltipText="" outgoingEdges="_Plna0MUDEeiLYNnOWGjSFA" incomingEdges="_iliDQMTIEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//PointReduction"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//PointReduction"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_fRkKYMTDEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_eqHv4MTDEeiLYNnOWGjSFA" name="reduction : EFloat = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//PointReduction/reduction"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//PointReduction/reduction"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_fRl_kMTDEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iRjwoMTDEeiLYNnOWGjSFA" name="Role" tooltipText="" incomingEdges="_P1zxkMTEEeiLYNnOWGjSFA _a5B8gMTGEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//Role"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//Role"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_l_aicMTDEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_jk5n0MTDEeiLYNnOWGjSFA" name="role : RoleKind = Lecturer Lecturer" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Role/role"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Role/role"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_l_c-sMTDEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_pTx2MMTDEeiLYNnOWGjSFA" name="Person" tooltipText="" outgoingEdges="_aCfA8MTEEeiLYNnOWGjSFA _mm6x4MTEEeiLYNnOWGjSFA" incomingEdges="_2ZHGAMTJEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//Person"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//Person"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_sVM_0MTDEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_qX4XgMTDEeiLYNnOWGjSFA" name="firstName : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Person/firstName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Person/firstName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_q-x_cMTDEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_raRooMTDEeiLYNnOWGjSFA" name="lastName : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Person/lastName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Person/lastName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_sVO1AMTDEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_xJCiQMTDEeiLYNnOWGjSFA" name="Student" tooltipText="" outgoingEdges="_Mw_qAMT2EeiLYNnOWGjSFA" incomingEdges="_aCfA8MTEEeiLYNnOWGjSFA _u-au4MTxEeiLYNnOWGjSFA _m7xKQMT1EeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//Student"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//Student"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_1YBEIMTDEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_y2uMEMTDEeiLYNnOWGjSFA" name="studentID : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Student/studentID"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Student/studentID"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_1YDgYMTDEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_2ulOcMTDEeiLYNnOWGjSFA" name="Employee" tooltipText="" outgoingEdges="_P1zxkMTEEeiLYNnOWGjSFA" incomingEdges="_mm6x4MTEEeiLYNnOWGjSFA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="modelling.ecore#//Employee"/>
+      <semanticElements xmi:type="ecore:EClass" href="modelling.ecore#//Employee"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_6BtMEMTDEeiLYNnOWGjSFA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_4_dE4MTDEeiLYNnOWGjSFA" name="employeeID : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="modelling.ecore#//Employee/employeeID"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="modelling.ecore#//Employee/employeeID"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6BuaMMTDEeiLYNnOWGjSFA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_P1zxkMTEEeiLYNnOWGjSFA" name="[0..*] role" sourceNode="_2ulOcMTDEeiLYNnOWGjSFA" targetNode="_iRjwoMTDEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//Employee/role"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Employee/role"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_P10_sMTEEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_P11mwMTEEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_P11mwcTEEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_aCfA8MTEEeiLYNnOWGjSFA" name="[0..1] student" sourceNode="_pTx2MMTDEeiLYNnOWGjSFA" targetNode="_xJCiQMTDEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//Person/student"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Person/student"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_aCgPEMTEEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_aCgPEcTEEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_aCgPEsTEEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_mm6x4MTEEeiLYNnOWGjSFA" name="[0..1] employee" sourceNode="_pTx2MMTDEeiLYNnOWGjSFA" targetNode="_2ulOcMTDEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//Person/employee"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Person/employee"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_mm8AAMTEEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_mm8AAcTEEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_mm8AAsTEEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_a5B8gMTGEeiLYNnOWGjSFA" sourceNode="_GTs7cMS_EeiLYNnOWGjSFA" targetNode="_iRjwoMTDEeiLYNnOWGjSFA" beginLabel="[0..1] courseinstance" endLabel="[0..*] staff">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/staff"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Role/courseinstance"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/staff"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_a6n38MTGEeiLYNnOWGjSFA" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_a6n38cTGEeiLYNnOWGjSFA" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_a6n38sTGEeiLYNnOWGjSFA" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iliDQMTIEeiLYNnOWGjSFA" name="[0..*] pointreduction" sourceNode="_GTs7cMS_EeiLYNnOWGjSFA" targetNode="_blW-YMTDEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/pointreduction"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/pointreduction"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iliqUMTIEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iljRYMTIEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_iljRYcTIEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_kXJK0MTIEeiLYNnOWGjSFA" name="[0..*] evaluationform" sourceNode="_GTs7cMS_EeiLYNnOWGjSFA" targetNode="_hX0hsMTCEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/evaluationform"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/evaluationform"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_kXJx4MTIEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_kXJx4cTIEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_kXJx4sTIEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_sJdQkMTIEeiLYNnOWGjSFA" name="[0..*] timetablerow" sourceNode="_GTs7cMS_EeiLYNnOWGjSFA" targetNode="_8uZjMMTAEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/timetablerow"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/timetablerow"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_sJd3oMTIEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_sJd3ocTIEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_sJd3osTIEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_50KtEMTIEeiLYNnOWGjSFA" name="[0..1] department" sourceNode="_GTs7cMS_EeiLYNnOWGjSFA" targetNode="_BIDZIMTDEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/department"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/department"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_50LUIMTIEeiLYNnOWGjSFA" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_50LUIcTIEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_50LUIsTIEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_CVNhEMTJEeiLYNnOWGjSFA" name="[0..*] studyprogram" sourceNode="_BIDZIMTDEeiLYNnOWGjSFA" targetNode="_Egx7oMQXEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//Department/studyprogram"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Department/studyprogram"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_CVOIIMTJEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_CVOIIcTJEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_CVOIIsTJEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_2ZHGAMTJEeiLYNnOWGjSFA" name="[0..*] person" sourceNode="_BIDZIMTDEeiLYNnOWGjSFA" targetNode="_pTx2MMTDEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//Department/person"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Department/person"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_2ZHtEMTJEeiLYNnOWGjSFA" description="_OJMj8MSyEeiLYNnOWGjSFA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_2ZHtEcTJEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_2ZHtEsTJEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_u-au4MTxEeiLYNnOWGjSFA" sourceNode="_GTs7cMS_EeiLYNnOWGjSFA" targetNode="_xJCiQMTDEeiLYNnOWGjSFA" beginLabel="[0..*] registeredFor" endLabel="[0..1] registeredStudent">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/registeredStudent"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Student/registeredFor"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/registeredStudent"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_u-ckEMTxEeiLYNnOWGjSFA" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_u-ckEcTxEeiLYNnOWGjSFA" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_u-ckEsTxEeiLYNnOWGjSFA" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_m7xKQMT1EeiLYNnOWGjSFA" sourceNode="_GTs7cMS_EeiLYNnOWGjSFA" targetNode="_xJCiQMTDEeiLYNnOWGjSFA" beginLabel="[0..*] examPassed" endLabel="[0..1] passedStudent">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/passedStudent"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Student/examPassed"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//CourseInstance/passedStudent"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_m7xKQcT1EeiLYNnOWGjSFA" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_m7xKQsT1EeiLYNnOWGjSFA" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_m7xKQ8T1EeiLYNnOWGjSFA" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Mw_qAMT2EeiLYNnOWGjSFA" name="[0..1] studyprogram" sourceNode="_xJCiQMTDEeiLYNnOWGjSFA" targetNode="_Egx7oMQXEeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//Student/studyprogram"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//Student/studyprogram"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_Mw_qAcT2EeiLYNnOWGjSFA" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_Mw_qAsT2EeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_Mw_qA8T2EeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Plna0MUDEeiLYNnOWGjSFA" name="[0..*] courseinstance" sourceNode="_blW-YMTDEeiLYNnOWGjSFA" targetNode="_GTs7cMS_EeiLYNnOWGjSFA">
+      <target xmi:type="ecore:EReference" href="modelling.ecore#//PointReduction/courseinstance"/>
+      <semanticElements xmi:type="ecore:EReference" href="modelling.ecore#//PointReduction/courseinstance"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_Ploo8MUDEeiLYNnOWGjSFA" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_Ploo8cUDEeiLYNnOWGjSFA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_Ploo8sUDEeiLYNnOWGjSFA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+    <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_JGibRMQWEeiLYNnOWGjSFA"/>
+    <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+    <target xmi:type="ecore:EPackage" href="modelling.ecore#/"/>
+  </diagram:DSemanticDiagram>
+</xmi:XMI>
diff --git a/model/modelling.ecore b/model/modelling.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..517d147f4e092e6cdd8ce6605036512a3ffb21fb
--- /dev/null
+++ b/model/modelling.ecore
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="modelling" nsURI="http://www.example.org/modelling" nsPrefix="modelling">
+  <eClassifiers xsi:type="ecore:EClass" name="Course">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="code" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="recommendedCourses" upperBound="-1"
+        eType="#//Course"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="requiredCourses" upperBound="-1"
+        eType="#//Course"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StudyProgram">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="course" upperBound="-1"
+        eType="#//Course" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="code" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CourseInstance">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="semesterYear" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="credits" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="labHours" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lectureHours" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="course" upperBound="-1"
+        eType="#//Course" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="staff" upperBound="-1"
+        eType="#//Role" eOpposite="#//Role/courseinstance"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="pointreduction" upperBound="-1"
+        eType="#//PointReduction" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="evaluationform" upperBound="-1"
+        eType="#//EvaluationForm" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="timetablerow" upperBound="-1"
+        eType="#//TimeTableRow" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="department" eType="#//Department"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="registeredStudent" eType="#//Student"
+        eOpposite="#//Student/registeredFor"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="passedStudent" eType="#//Student"
+        eOpposite="#//Student/examPassed"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TimeTableRow">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="weekday" eType="#//DayKind"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="startTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="endTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//TeachingFormKind"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="room" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="DayKind">
+    <eLiterals name="Monday" literal="Monday"/>
+    <eLiterals name="Tuesday" value="1" literal="Tuesday"/>
+    <eLiterals name="Wednesday" value="2" literal="Wednesday"/>
+    <eLiterals name="Thursday" value="3" literal="Thursday"/>
+    <eLiterals name="Friday" value="4" literal="Friday "/>
+    <eLiterals name="Saturday" value="5" literal="Saturday"/>
+    <eLiterals name="Sunday" value="6" literal="Sunday"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="RoleKind">
+    <eLiterals name="Lecturer" literal="Lecturer"/>
+    <eLiterals name="Coordinator" value="1" literal="Coordinator"/>
+    <eLiterals name="StudentAssistant" value="2" literal="StudentAssistant"/>
+    <eLiterals name="TeacherAssistant" value="3" literal="TeacherAssistant"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="EvaluationFormKind">
+    <eLiterals name="WrittenExam" literal="WrittenExam"/>
+    <eLiterals name="OralExam" value="1" literal="OralExam "/>
+    <eLiterals name="Exercises" value="2" literal="Exercises "/>
+    <eLiterals name="Project" value="3" literal="Project "/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TeachingFormKind">
+    <eLiterals name="Lecture" literal="Lecture "/>
+    <eLiterals name="Lab" value="1" literal="Lab "/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EvaluationForm">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="percentage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//EvaluationFormKind"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Department">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="studyprogram" upperBound="-1"
+        eType="#//StudyProgram" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="person" upperBound="-1"
+        eType="#//Person" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PointReduction">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="reduction" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="courseinstance" upperBound="-1"
+        eType="#//CourseInstance"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Role">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="role" eType="#//RoleKind"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="courseinstance" eType="#//CourseInstance"
+        eOpposite="#//CourseInstance/staff"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Person">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lastName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="student" eType="#//Student"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="employee" eType="#//Employee"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Student">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="studentID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="registeredFor" upperBound="-1"
+        eType="#//CourseInstance" eOpposite="#//CourseInstance/registeredStudent"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="examPassed" upperBound="-1"
+        eType="#//CourseInstance" eOpposite="#//CourseInstance/passedStudent"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="studyprogram" eType="#//StudyProgram"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Employee">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="employeeID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="role" upperBound="-1" eType="#//Role"
+        containment="true"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/model/modelling.genmodel b/model/modelling.genmodel
new file mode 100644
index 0000000000000000000000000000000000000000..d23ca5f6174c61a9b34424d6a7c9a8082d4db8b3
--- /dev/null
+++ b/model/modelling.genmodel
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
+    modelDirectory="/modelling/src-gen" creationIcons="false" editDirectory="/modelling.edit/src-gen"
+    editorDirectory="/modelling.editor/src-gen" modelPluginID="modelling" modelName="Modelling"
+    rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" codeFormatting="true"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+    operationReflection="true" importOrganizing="true">
+  <foreignModel>modelling.ecore</foreignModel>
+  <testsDirectory xsi:nil="true"/>
+  <genPackages prefix="Modelling" disposableProviderFactory="true" ecorePackage="modelling.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="modelling.ecore#//DayKind">
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//DayKind/Monday"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//DayKind/Tuesday"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//DayKind/Wednesday"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//DayKind/Thursday"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//DayKind/Friday"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//DayKind/Saturday"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//DayKind/Sunday"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="modelling.ecore#//RoleKind">
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//RoleKind/Lecturer"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//RoleKind/Coordinator"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//RoleKind/StudentAssistant"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//RoleKind/TeacherAssistant"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="modelling.ecore#//EvaluationFormKind">
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//EvaluationFormKind/WrittenExam"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//EvaluationFormKind/OralExam"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//EvaluationFormKind/Exercises"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//EvaluationFormKind/Project"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="modelling.ecore#//TeachingFormKind">
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//TeachingFormKind/Lecture"/>
+      <genEnumLiterals ecoreEnumLiteral="modelling.ecore#//TeachingFormKind/Lab"/>
+    </genEnums>
+    <genClasses ecoreClass="modelling.ecore#//Course">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Course/code"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Course/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Course/content"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//Course/recommendedCourses"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//Course/requiredCourses"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//StudyProgram">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//StudyProgram/course"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//StudyProgram/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//StudyProgram/code"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//CourseInstance">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//CourseInstance/semesterYear"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//CourseInstance/credits"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//CourseInstance/labHours"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//CourseInstance/lectureHours"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//CourseInstance/course"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//CourseInstance/staff"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//CourseInstance/pointreduction"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//CourseInstance/evaluationform"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//CourseInstance/timetablerow"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//CourseInstance/department"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//CourseInstance/registeredStudent"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//CourseInstance/passedStudent"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//TimeTableRow">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//TimeTableRow/weekday"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//TimeTableRow/startTime"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//TimeTableRow/endTime"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//TimeTableRow/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//TimeTableRow/room"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//EvaluationForm">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//EvaluationForm/percentage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//EvaluationForm/content"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//EvaluationForm/type"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//Department">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Department/name"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//Department/studyprogram"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//Department/person"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//PointReduction">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//PointReduction/reduction"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//PointReduction/courseinstance"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//Role">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Role/role"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//Role/courseinstance"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//Person">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Person/firstName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Person/lastName"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//Person/student"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//Person/employee"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//Student">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Student/studentID"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//Student/registeredFor"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//Student/examPassed"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference modelling.ecore#//Student/studyprogram"/>
+    </genClasses>
+    <genClasses ecoreClass="modelling.ecore#//Employee">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute modelling.ecore#//Employee/employeeID"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference modelling.ecore#//Employee/role"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/model/modelling.jpg b/model/modelling.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..05b5a2b42783a09e36b9d8397bef6a495dd8be68
Binary files /dev/null and b/model/modelling.jpg differ
diff --git a/plugin.properties b/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..39db26350cab32ddce6594054f79a2201d04b3f1
--- /dev/null
+++ b/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = modelling
+providerName = www.example.org
diff --git a/plugin.xml b/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..73b66c3322b53913a18880d25992e75906e3c8de
--- /dev/null
+++ b/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated modelling -->
+      <package
+            uri="http://www.example.org/modelling"
+            class="modelling.ModellingPackage"
+            genModel="model/modelling.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/src-gen/modelling/Course.java b/src-gen/modelling/Course.java
new file mode 100644
index 0000000000000000000000000000000000000000..04d0ed7aa5a0836cdbf03e5ca8a6564857791e71
--- /dev/null
+++ b/src-gen/modelling/Course.java
@@ -0,0 +1,140 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Course</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.Course#getCode <em>Code</em>}</li>
+ *   <li>{@link modelling.Course#getName <em>Name</em>}</li>
+ *   <li>{@link modelling.Course#getContent <em>Content</em>}</li>
+ *   <li>{@link modelling.Course#getRecommendedCourses <em>Recommended Courses</em>}</li>
+ *   <li>{@link modelling.Course#getRequiredCourses <em>Required Courses</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getCourse()
+ * @model
+ * @generated
+ */
+public interface Course extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Code</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Code</em>' attribute.
+	 * @see #setCode(String)
+	 * @see modelling.ModellingPackage#getCourse_Code()
+	 * @model
+	 * @generated
+	 */
+	String getCode();
+
+	/**
+	 * Sets the value of the '{@link modelling.Course#getCode <em>Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Code</em>' attribute.
+	 * @see #getCode()
+	 * @generated
+	 */
+	void setCode(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see modelling.ModellingPackage#getCourse_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link modelling.Course#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Content</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Content</em>' attribute.
+	 * @see #setContent(String)
+	 * @see modelling.ModellingPackage#getCourse_Content()
+	 * @model
+	 * @generated
+	 */
+	String getContent();
+
+	/**
+	 * Sets the value of the '{@link modelling.Course#getContent <em>Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Content</em>' attribute.
+	 * @see #getContent()
+	 * @generated
+	 */
+	void setContent(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Recommended Courses</b></em>' reference list.
+	 * The list contents are of type {@link modelling.Course}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Recommended Courses</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Recommended Courses</em>' reference list.
+	 * @see modelling.ModellingPackage#getCourse_RecommendedCourses()
+	 * @model
+	 * @generated
+	 */
+	EList<Course> getRecommendedCourses();
+
+	/**
+	 * Returns the value of the '<em><b>Required Courses</b></em>' reference list.
+	 * The list contents are of type {@link modelling.Course}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Required Courses</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Required Courses</em>' reference list.
+	 * @see modelling.ModellingPackage#getCourse_RequiredCourses()
+	 * @model
+	 * @generated
+	 */
+	EList<Course> getRequiredCourses();
+
+} // Course
diff --git a/src-gen/modelling/CourseInstance.java b/src-gen/modelling/CourseInstance.java
new file mode 100644
index 0000000000000000000000000000000000000000..bdfcd3586dbc9f52f49ee2b9a8581f2a4899c3c8
--- /dev/null
+++ b/src-gen/modelling/CourseInstance.java
@@ -0,0 +1,305 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Course Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.CourseInstance#getSemesterYear <em>Semester Year</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getCredits <em>Credits</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getLabHours <em>Lab Hours</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getLectureHours <em>Lecture Hours</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getCourse <em>Course</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getStaff <em>Staff</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getPointreduction <em>Pointreduction</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getEvaluationform <em>Evaluationform</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getTimetablerow <em>Timetablerow</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getDepartment <em>Department</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getRegisteredStudent <em>Registered Student</em>}</li>
+ *   <li>{@link modelling.CourseInstance#getPassedStudent <em>Passed Student</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getCourseInstance()
+ * @model
+ * @generated
+ */
+public interface CourseInstance extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Semester Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Semester Year</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Semester Year</em>' attribute.
+	 * @see #setSemesterYear(String)
+	 * @see modelling.ModellingPackage#getCourseInstance_SemesterYear()
+	 * @model
+	 * @generated
+	 */
+	String getSemesterYear();
+
+	/**
+	 * Sets the value of the '{@link modelling.CourseInstance#getSemesterYear <em>Semester Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Semester Year</em>' attribute.
+	 * @see #getSemesterYear()
+	 * @generated
+	 */
+	void setSemesterYear(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Credits</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Credits</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Credits</em>' attribute.
+	 * @see #setCredits(float)
+	 * @see modelling.ModellingPackage#getCourseInstance_Credits()
+	 * @model
+	 * @generated
+	 */
+	float getCredits();
+
+	/**
+	 * Sets the value of the '{@link modelling.CourseInstance#getCredits <em>Credits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Credits</em>' attribute.
+	 * @see #getCredits()
+	 * @generated
+	 */
+	void setCredits(float value);
+
+	/**
+	 * Returns the value of the '<em><b>Lab Hours</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Lab Hours</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Lab Hours</em>' attribute.
+	 * @see #setLabHours(int)
+	 * @see modelling.ModellingPackage#getCourseInstance_LabHours()
+	 * @model
+	 * @generated
+	 */
+	int getLabHours();
+
+	/**
+	 * Sets the value of the '{@link modelling.CourseInstance#getLabHours <em>Lab Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Lab Hours</em>' attribute.
+	 * @see #getLabHours()
+	 * @generated
+	 */
+	void setLabHours(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Lecture Hours</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Lecture Hours</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Lecture Hours</em>' attribute.
+	 * @see #setLectureHours(int)
+	 * @see modelling.ModellingPackage#getCourseInstance_LectureHours()
+	 * @model
+	 * @generated
+	 */
+	int getLectureHours();
+
+	/**
+	 * Sets the value of the '{@link modelling.CourseInstance#getLectureHours <em>Lecture Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Lecture Hours</em>' attribute.
+	 * @see #getLectureHours()
+	 * @generated
+	 */
+	void setLectureHours(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Course</b></em>' containment reference list.
+	 * The list contents are of type {@link modelling.Course}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Course</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Course</em>' containment reference list.
+	 * @see modelling.ModellingPackage#getCourseInstance_Course()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Course> getCourse();
+
+	/**
+	 * Returns the value of the '<em><b>Staff</b></em>' reference list.
+	 * The list contents are of type {@link modelling.Role}.
+	 * It is bidirectional and its opposite is '{@link modelling.Role#getCourseinstance <em>Courseinstance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Staff</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Staff</em>' reference list.
+	 * @see modelling.ModellingPackage#getCourseInstance_Staff()
+	 * @see modelling.Role#getCourseinstance
+	 * @model opposite="courseinstance"
+	 * @generated
+	 */
+	EList<Role> getStaff();
+
+	/**
+	 * Returns the value of the '<em><b>Pointreduction</b></em>' containment reference list.
+	 * The list contents are of type {@link modelling.PointReduction}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pointreduction</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pointreduction</em>' containment reference list.
+	 * @see modelling.ModellingPackage#getCourseInstance_Pointreduction()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<PointReduction> getPointreduction();
+
+	/**
+	 * Returns the value of the '<em><b>Evaluationform</b></em>' containment reference list.
+	 * The list contents are of type {@link modelling.EvaluationForm}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Evaluationform</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Evaluationform</em>' containment reference list.
+	 * @see modelling.ModellingPackage#getCourseInstance_Evaluationform()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<EvaluationForm> getEvaluationform();
+
+	/**
+	 * Returns the value of the '<em><b>Timetablerow</b></em>' containment reference list.
+	 * The list contents are of type {@link modelling.TimeTableRow}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Timetablerow</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Timetablerow</em>' containment reference list.
+	 * @see modelling.ModellingPackage#getCourseInstance_Timetablerow()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<TimeTableRow> getTimetablerow();
+
+	/**
+	 * Returns the value of the '<em><b>Department</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Department</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Department</em>' reference.
+	 * @see #setDepartment(Department)
+	 * @see modelling.ModellingPackage#getCourseInstance_Department()
+	 * @model
+	 * @generated
+	 */
+	Department getDepartment();
+
+	/**
+	 * Sets the value of the '{@link modelling.CourseInstance#getDepartment <em>Department</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Department</em>' reference.
+	 * @see #getDepartment()
+	 * @generated
+	 */
+	void setDepartment(Department value);
+
+	/**
+	 * Returns the value of the '<em><b>Registered Student</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link modelling.Student#getRegisteredFor <em>Registered For</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Registered Student</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Registered Student</em>' reference.
+	 * @see #setRegisteredStudent(Student)
+	 * @see modelling.ModellingPackage#getCourseInstance_RegisteredStudent()
+	 * @see modelling.Student#getRegisteredFor
+	 * @model opposite="registeredFor"
+	 * @generated
+	 */
+	Student getRegisteredStudent();
+
+	/**
+	 * Sets the value of the '{@link modelling.CourseInstance#getRegisteredStudent <em>Registered Student</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Registered Student</em>' reference.
+	 * @see #getRegisteredStudent()
+	 * @generated
+	 */
+	void setRegisteredStudent(Student value);
+
+	/**
+	 * Returns the value of the '<em><b>Passed Student</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link modelling.Student#getExamPassed <em>Exam Passed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Passed Student</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Passed Student</em>' reference.
+	 * @see #setPassedStudent(Student)
+	 * @see modelling.ModellingPackage#getCourseInstance_PassedStudent()
+	 * @see modelling.Student#getExamPassed
+	 * @model opposite="examPassed"
+	 * @generated
+	 */
+	Student getPassedStudent();
+
+	/**
+	 * Sets the value of the '{@link modelling.CourseInstance#getPassedStudent <em>Passed Student</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Passed Student</em>' reference.
+	 * @see #getPassedStudent()
+	 * @generated
+	 */
+	void setPassedStudent(Student value);
+
+} // CourseInstance
diff --git a/src-gen/modelling/DayKind.java b/src-gen/modelling/DayKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..9d900bf3546eb7ec8fcf81eca03fdc76b959a301
--- /dev/null
+++ b/src-gen/modelling/DayKind.java
@@ -0,0 +1,348 @@
+/**
+ */
+package modelling;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Day Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see modelling.ModellingPackage#getDayKind()
+ * @model
+ * @generated
+ */
+public enum DayKind implements Enumerator {
+	/**
+	 * The '<em><b>Monday</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MONDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MONDAY(0, "Monday", "Monday"),
+
+	/**
+	 * The '<em><b>Tuesday</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TUESDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TUESDAY(1, "Tuesday", "Tuesday"),
+
+	/**
+	 * The '<em><b>Wednesday</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WEDNESDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WEDNESDAY(2, "Wednesday", "Wednesday"),
+
+	/**
+	 * The '<em><b>Thursday</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #THURSDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	THURSDAY(3, "Thursday", "Thursday"),
+
+	/**
+	 * The '<em><b>Friday</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FRIDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FRIDAY(4, "Friday", "Friday "),
+
+	/**
+	 * The '<em><b>Saturday</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SATURDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SATURDAY(5, "Saturday", "Saturday"),
+
+	/**
+	 * The '<em><b>Sunday</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SUNDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SUNDAY(6, "Sunday", "Sunday");
+
+	/**
+	 * The '<em><b>Monday</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Monday</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MONDAY
+	 * @model name="Monday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MONDAY_VALUE = 0;
+
+	/**
+	 * The '<em><b>Tuesday</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Tuesday</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TUESDAY
+	 * @model name="Tuesday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TUESDAY_VALUE = 1;
+
+	/**
+	 * The '<em><b>Wednesday</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Wednesday</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WEDNESDAY
+	 * @model name="Wednesday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WEDNESDAY_VALUE = 2;
+
+	/**
+	 * The '<em><b>Thursday</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Thursday</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #THURSDAY
+	 * @model name="Thursday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int THURSDAY_VALUE = 3;
+
+	/**
+	 * The '<em><b>Friday</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Friday</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #FRIDAY
+	 * @model name="Friday" literal="Friday "
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FRIDAY_VALUE = 4;
+
+	/**
+	 * The '<em><b>Saturday</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Saturday</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SATURDAY
+	 * @model name="Saturday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SATURDAY_VALUE = 5;
+
+	/**
+	 * The '<em><b>Sunday</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Sunday</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SUNDAY
+	 * @model name="Sunday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SUNDAY_VALUE = 6;
+
+	/**
+	 * An array of all the '<em><b>Day Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final DayKind[] VALUES_ARRAY = new DayKind[] { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
+			SATURDAY, SUNDAY, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Day Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<DayKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Day Kind</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DayKind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			DayKind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Day Kind</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DayKind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			DayKind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Day Kind</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DayKind get(int value) {
+		switch (value) {
+		case MONDAY_VALUE:
+			return MONDAY;
+		case TUESDAY_VALUE:
+			return TUESDAY;
+		case WEDNESDAY_VALUE:
+			return WEDNESDAY;
+		case THURSDAY_VALUE:
+			return THURSDAY;
+		case FRIDAY_VALUE:
+			return FRIDAY;
+		case SATURDAY_VALUE:
+			return SATURDAY;
+		case SUNDAY_VALUE:
+			return SUNDAY;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private DayKind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //DayKind
diff --git a/src-gen/modelling/Department.java b/src-gen/modelling/Department.java
new file mode 100644
index 0000000000000000000000000000000000000000..3825a80e78cf47edf30ddff65f9c3e11d4b370b9
--- /dev/null
+++ b/src-gen/modelling/Department.java
@@ -0,0 +1,86 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Department</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.Department#getName <em>Name</em>}</li>
+ *   <li>{@link modelling.Department#getStudyprogram <em>Studyprogram</em>}</li>
+ *   <li>{@link modelling.Department#getPerson <em>Person</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getDepartment()
+ * @model
+ * @generated
+ */
+public interface Department extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see modelling.ModellingPackage#getDepartment_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link modelling.Department#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Studyprogram</b></em>' containment reference list.
+	 * The list contents are of type {@link modelling.StudyProgram}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Studyprogram</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Studyprogram</em>' containment reference list.
+	 * @see modelling.ModellingPackage#getDepartment_Studyprogram()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<StudyProgram> getStudyprogram();
+
+	/**
+	 * Returns the value of the '<em><b>Person</b></em>' containment reference list.
+	 * The list contents are of type {@link modelling.Person}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Person</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Person</em>' containment reference list.
+	 * @see modelling.ModellingPackage#getDepartment_Person()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Person> getPerson();
+
+} // Department
diff --git a/src-gen/modelling/Employee.java b/src-gen/modelling/Employee.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d8ea6ecd99bc5bcf0cea013ddfa314b727888b9
--- /dev/null
+++ b/src-gen/modelling/Employee.java
@@ -0,0 +1,69 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Employee</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.Employee#getEmployeeID <em>Employee ID</em>}</li>
+ *   <li>{@link modelling.Employee#getRole <em>Role</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getEmployee()
+ * @model
+ * @generated
+ */
+public interface Employee extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Employee ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Employee ID</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Employee ID</em>' attribute.
+	 * @see #setEmployeeID(int)
+	 * @see modelling.ModellingPackage#getEmployee_EmployeeID()
+	 * @model
+	 * @generated
+	 */
+	int getEmployeeID();
+
+	/**
+	 * Sets the value of the '{@link modelling.Employee#getEmployeeID <em>Employee ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Employee ID</em>' attribute.
+	 * @see #getEmployeeID()
+	 * @generated
+	 */
+	void setEmployeeID(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Role</b></em>' containment reference list.
+	 * The list contents are of type {@link modelling.Role}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Role</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Role</em>' containment reference list.
+	 * @see modelling.ModellingPackage#getEmployee_Role()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Role> getRole();
+
+} // Employee
diff --git a/src-gen/modelling/EvaluationForm.java b/src-gen/modelling/EvaluationForm.java
new file mode 100644
index 0000000000000000000000000000000000000000..536f9eb794c264ff64f206d8035e1dbb886bae3d
--- /dev/null
+++ b/src-gen/modelling/EvaluationForm.java
@@ -0,0 +1,107 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Evaluation Form</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.EvaluationForm#getPercentage <em>Percentage</em>}</li>
+ *   <li>{@link modelling.EvaluationForm#getContent <em>Content</em>}</li>
+ *   <li>{@link modelling.EvaluationForm#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getEvaluationForm()
+ * @model
+ * @generated
+ */
+public interface EvaluationForm extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Percentage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Percentage</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Percentage</em>' attribute.
+	 * @see #setPercentage(int)
+	 * @see modelling.ModellingPackage#getEvaluationForm_Percentage()
+	 * @model
+	 * @generated
+	 */
+	int getPercentage();
+
+	/**
+	 * Sets the value of the '{@link modelling.EvaluationForm#getPercentage <em>Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Percentage</em>' attribute.
+	 * @see #getPercentage()
+	 * @generated
+	 */
+	void setPercentage(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Content</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Content</em>' attribute.
+	 * @see #setContent(String)
+	 * @see modelling.ModellingPackage#getEvaluationForm_Content()
+	 * @model
+	 * @generated
+	 */
+	String getContent();
+
+	/**
+	 * Sets the value of the '{@link modelling.EvaluationForm#getContent <em>Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Content</em>' attribute.
+	 * @see #getContent()
+	 * @generated
+	 */
+	void setContent(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link modelling.EvaluationFormKind}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see modelling.EvaluationFormKind
+	 * @see #setType(EvaluationFormKind)
+	 * @see modelling.ModellingPackage#getEvaluationForm_Type()
+	 * @model
+	 * @generated
+	 */
+	EvaluationFormKind getType();
+
+	/**
+	 * Sets the value of the '{@link modelling.EvaluationForm#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see modelling.EvaluationFormKind
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(EvaluationFormKind value);
+
+} // EvaluationForm
diff --git a/src-gen/modelling/EvaluationFormKind.java b/src-gen/modelling/EvaluationFormKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..7bb27432493476c14f9a9e681491be817795281a
--- /dev/null
+++ b/src-gen/modelling/EvaluationFormKind.java
@@ -0,0 +1,267 @@
+/**
+ */
+package modelling;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Evaluation Form Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see modelling.ModellingPackage#getEvaluationFormKind()
+ * @model
+ * @generated
+ */
+public enum EvaluationFormKind implements Enumerator {
+	/**
+	 * The '<em><b>Written Exam</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WRITTEN_EXAM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WRITTEN_EXAM(0, "WrittenExam", "WrittenExam"),
+
+	/**
+	 * The '<em><b>Oral Exam</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ORAL_EXAM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ORAL_EXAM(1, "OralExam", "OralExam "),
+
+	/**
+	 * The '<em><b>Exercises</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EXERCISES_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EXERCISES(2, "Exercises", "Exercises "),
+
+	/**
+	 * The '<em><b>Project</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PROJECT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PROJECT(3, "Project", "Project ");
+
+	/**
+	 * The '<em><b>Written Exam</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Written Exam</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WRITTEN_EXAM
+	 * @model name="WrittenExam"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WRITTEN_EXAM_VALUE = 0;
+
+	/**
+	 * The '<em><b>Oral Exam</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Oral Exam</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ORAL_EXAM
+	 * @model name="OralExam" literal="OralExam "
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ORAL_EXAM_VALUE = 1;
+
+	/**
+	 * The '<em><b>Exercises</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Exercises</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #EXERCISES
+	 * @model name="Exercises" literal="Exercises "
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EXERCISES_VALUE = 2;
+
+	/**
+	 * The '<em><b>Project</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Project</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PROJECT
+	 * @model name="Project" literal="Project "
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PROJECT_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Evaluation Form Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final EvaluationFormKind[] VALUES_ARRAY = new EvaluationFormKind[] { WRITTEN_EXAM, ORAL_EXAM,
+			EXERCISES, PROJECT, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Evaluation Form Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<EvaluationFormKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Evaluation Form Kind</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EvaluationFormKind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EvaluationFormKind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Evaluation Form Kind</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EvaluationFormKind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EvaluationFormKind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Evaluation Form Kind</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EvaluationFormKind get(int value) {
+		switch (value) {
+		case WRITTEN_EXAM_VALUE:
+			return WRITTEN_EXAM;
+		case ORAL_EXAM_VALUE:
+			return ORAL_EXAM;
+		case EXERCISES_VALUE:
+			return EXERCISES;
+		case PROJECT_VALUE:
+			return PROJECT;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EvaluationFormKind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //EvaluationFormKind
diff --git a/src-gen/modelling/ModellingFactory.java b/src-gen/modelling/ModellingFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..111355c78fe4037a9c129d185d6feefcc143d716
--- /dev/null
+++ b/src-gen/modelling/ModellingFactory.java
@@ -0,0 +1,132 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see modelling.ModellingPackage
+ * @generated
+ */
+public interface ModellingFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ModellingFactory eINSTANCE = modelling.impl.ModellingFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Course</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Course</em>'.
+	 * @generated
+	 */
+	Course createCourse();
+
+	/**
+	 * Returns a new object of class '<em>Study Program</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Study Program</em>'.
+	 * @generated
+	 */
+	StudyProgram createStudyProgram();
+
+	/**
+	 * Returns a new object of class '<em>Course Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Course Instance</em>'.
+	 * @generated
+	 */
+	CourseInstance createCourseInstance();
+
+	/**
+	 * Returns a new object of class '<em>Time Table Row</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Time Table Row</em>'.
+	 * @generated
+	 */
+	TimeTableRow createTimeTableRow();
+
+	/**
+	 * Returns a new object of class '<em>Evaluation Form</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Evaluation Form</em>'.
+	 * @generated
+	 */
+	EvaluationForm createEvaluationForm();
+
+	/**
+	 * Returns a new object of class '<em>Department</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Department</em>'.
+	 * @generated
+	 */
+	Department createDepartment();
+
+	/**
+	 * Returns a new object of class '<em>Point Reduction</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Point Reduction</em>'.
+	 * @generated
+	 */
+	PointReduction createPointReduction();
+
+	/**
+	 * Returns a new object of class '<em>Role</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Role</em>'.
+	 * @generated
+	 */
+	Role createRole();
+
+	/**
+	 * Returns a new object of class '<em>Person</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Person</em>'.
+	 * @generated
+	 */
+	Person createPerson();
+
+	/**
+	 * Returns a new object of class '<em>Student</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Student</em>'.
+	 * @generated
+	 */
+	Student createStudent();
+
+	/**
+	 * Returns a new object of class '<em>Employee</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Employee</em>'.
+	 * @generated
+	 */
+	Employee createEmployee();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ModellingPackage getModellingPackage();
+
+} //ModellingFactory
diff --git a/src-gen/modelling/ModellingPackage.java b/src-gen/modelling/ModellingPackage.java
new file mode 100644
index 0000000000000000000000000000000000000000..e5f7f77f1485b1fe16dc12d4733006eeba8d975f
--- /dev/null
+++ b/src-gen/modelling/ModellingPackage.java
@@ -0,0 +1,1993 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see modelling.ModellingFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ModellingPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "modelling";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.example.org/modelling";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "modelling";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ModellingPackage eINSTANCE = modelling.impl.ModellingPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.CourseImpl <em>Course</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.CourseImpl
+	 * @see modelling.impl.ModellingPackageImpl#getCourse()
+	 * @generated
+	 */
+	int COURSE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE__CODE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE__NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE__CONTENT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Recommended Courses</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE__RECOMMENDED_COURSES = 3;
+
+	/**
+	 * The feature id for the '<em><b>Required Courses</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE__REQUIRED_COURSES = 4;
+
+	/**
+	 * The number of structural features of the '<em>Course</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>Course</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.StudyProgramImpl <em>Study Program</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.StudyProgramImpl
+	 * @see modelling.impl.ModellingPackageImpl#getStudyProgram()
+	 * @generated
+	 */
+	int STUDY_PROGRAM = 1;
+
+	/**
+	 * The feature id for the '<em><b>Course</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDY_PROGRAM__COURSE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDY_PROGRAM__NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDY_PROGRAM__CODE = 2;
+
+	/**
+	 * The number of structural features of the '<em>Study Program</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDY_PROGRAM_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Study Program</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDY_PROGRAM_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.CourseInstanceImpl <em>Course Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.CourseInstanceImpl
+	 * @see modelling.impl.ModellingPackageImpl#getCourseInstance()
+	 * @generated
+	 */
+	int COURSE_INSTANCE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Semester Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__SEMESTER_YEAR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Credits</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__CREDITS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Lab Hours</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__LAB_HOURS = 2;
+
+	/**
+	 * The feature id for the '<em><b>Lecture Hours</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__LECTURE_HOURS = 3;
+
+	/**
+	 * The feature id for the '<em><b>Course</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__COURSE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Staff</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__STAFF = 5;
+
+	/**
+	 * The feature id for the '<em><b>Pointreduction</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__POINTREDUCTION = 6;
+
+	/**
+	 * The feature id for the '<em><b>Evaluationform</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__EVALUATIONFORM = 7;
+
+	/**
+	 * The feature id for the '<em><b>Timetablerow</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__TIMETABLEROW = 8;
+
+	/**
+	 * The feature id for the '<em><b>Department</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__DEPARTMENT = 9;
+
+	/**
+	 * The feature id for the '<em><b>Registered Student</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__REGISTERED_STUDENT = 10;
+
+	/**
+	 * The feature id for the '<em><b>Passed Student</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE__PASSED_STUDENT = 11;
+
+	/**
+	 * The number of structural features of the '<em>Course Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE_FEATURE_COUNT = 12;
+
+	/**
+	 * The number of operations of the '<em>Course Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE_INSTANCE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.TimeTableRowImpl <em>Time Table Row</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.TimeTableRowImpl
+	 * @see modelling.impl.ModellingPackageImpl#getTimeTableRow()
+	 * @generated
+	 */
+	int TIME_TABLE_ROW = 3;
+
+	/**
+	 * The feature id for the '<em><b>Weekday</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TIME_TABLE_ROW__WEEKDAY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Start Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TIME_TABLE_ROW__START_TIME = 1;
+
+	/**
+	 * The feature id for the '<em><b>End Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TIME_TABLE_ROW__END_TIME = 2;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TIME_TABLE_ROW__TYPE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Room</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TIME_TABLE_ROW__ROOM = 4;
+
+	/**
+	 * The number of structural features of the '<em>Time Table Row</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TIME_TABLE_ROW_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>Time Table Row</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TIME_TABLE_ROW_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.EvaluationFormImpl <em>Evaluation Form</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.EvaluationFormImpl
+	 * @see modelling.impl.ModellingPackageImpl#getEvaluationForm()
+	 * @generated
+	 */
+	int EVALUATION_FORM = 4;
+
+	/**
+	 * The feature id for the '<em><b>Percentage</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVALUATION_FORM__PERCENTAGE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Content</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVALUATION_FORM__CONTENT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVALUATION_FORM__TYPE = 2;
+
+	/**
+	 * The number of structural features of the '<em>Evaluation Form</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVALUATION_FORM_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Evaluation Form</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVALUATION_FORM_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.DepartmentImpl <em>Department</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.DepartmentImpl
+	 * @see modelling.impl.ModellingPackageImpl#getDepartment()
+	 * @generated
+	 */
+	int DEPARTMENT = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPARTMENT__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Studyprogram</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPARTMENT__STUDYPROGRAM = 1;
+
+	/**
+	 * The feature id for the '<em><b>Person</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPARTMENT__PERSON = 2;
+
+	/**
+	 * The number of structural features of the '<em>Department</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPARTMENT_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Department</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPARTMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.PointReductionImpl <em>Point Reduction</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.PointReductionImpl
+	 * @see modelling.impl.ModellingPackageImpl#getPointReduction()
+	 * @generated
+	 */
+	int POINT_REDUCTION = 6;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT_REDUCTION__REDUCTION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Courseinstance</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT_REDUCTION__COURSEINSTANCE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Point Reduction</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT_REDUCTION_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Point Reduction</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT_REDUCTION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.RoleImpl <em>Role</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.RoleImpl
+	 * @see modelling.impl.ModellingPackageImpl#getRole()
+	 * @generated
+	 */
+	int ROLE = 7;
+
+	/**
+	 * The feature id for the '<em><b>Role</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ROLE__ROLE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Courseinstance</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ROLE__COURSEINSTANCE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Role</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ROLE_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Role</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ROLE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.PersonImpl <em>Person</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.PersonImpl
+	 * @see modelling.impl.ModellingPackageImpl#getPerson()
+	 * @generated
+	 */
+	int PERSON = 8;
+
+	/**
+	 * The feature id for the '<em><b>First Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSON__FIRST_NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Last Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSON__LAST_NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Student</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSON__STUDENT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Employee</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSON__EMPLOYEE = 3;
+
+	/**
+	 * The number of structural features of the '<em>Person</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSON_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Person</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSON_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.StudentImpl <em>Student</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.StudentImpl
+	 * @see modelling.impl.ModellingPackageImpl#getStudent()
+	 * @generated
+	 */
+	int STUDENT = 9;
+
+	/**
+	 * The feature id for the '<em><b>Student ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDENT__STUDENT_ID = 0;
+
+	/**
+	 * The feature id for the '<em><b>Registered For</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDENT__REGISTERED_FOR = 1;
+
+	/**
+	 * The feature id for the '<em><b>Exam Passed</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDENT__EXAM_PASSED = 2;
+
+	/**
+	 * The feature id for the '<em><b>Studyprogram</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDENT__STUDYPROGRAM = 3;
+
+	/**
+	 * The number of structural features of the '<em>Student</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDENT_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Student</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STUDENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.impl.EmployeeImpl <em>Employee</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.impl.EmployeeImpl
+	 * @see modelling.impl.ModellingPackageImpl#getEmployee()
+	 * @generated
+	 */
+	int EMPLOYEE = 10;
+
+	/**
+	 * The feature id for the '<em><b>Employee ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMPLOYEE__EMPLOYEE_ID = 0;
+
+	/**
+	 * The feature id for the '<em><b>Role</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMPLOYEE__ROLE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Employee</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMPLOYEE_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Employee</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMPLOYEE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link modelling.DayKind <em>Day Kind</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.DayKind
+	 * @see modelling.impl.ModellingPackageImpl#getDayKind()
+	 * @generated
+	 */
+	int DAY_KIND = 11;
+
+	/**
+	 * The meta object id for the '{@link modelling.RoleKind <em>Role Kind</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.RoleKind
+	 * @see modelling.impl.ModellingPackageImpl#getRoleKind()
+	 * @generated
+	 */
+	int ROLE_KIND = 12;
+
+	/**
+	 * The meta object id for the '{@link modelling.EvaluationFormKind <em>Evaluation Form Kind</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.EvaluationFormKind
+	 * @see modelling.impl.ModellingPackageImpl#getEvaluationFormKind()
+	 * @generated
+	 */
+	int EVALUATION_FORM_KIND = 13;
+
+	/**
+	 * The meta object id for the '{@link modelling.TeachingFormKind <em>Teaching Form Kind</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see modelling.TeachingFormKind
+	 * @see modelling.impl.ModellingPackageImpl#getTeachingFormKind()
+	 * @generated
+	 */
+	int TEACHING_FORM_KIND = 14;
+
+	/**
+	 * Returns the meta object for class '{@link modelling.Course <em>Course</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Course</em>'.
+	 * @see modelling.Course
+	 * @generated
+	 */
+	EClass getCourse();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Course#getCode <em>Code</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Code</em>'.
+	 * @see modelling.Course#getCode()
+	 * @see #getCourse()
+	 * @generated
+	 */
+	EAttribute getCourse_Code();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Course#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see modelling.Course#getName()
+	 * @see #getCourse()
+	 * @generated
+	 */
+	EAttribute getCourse_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Course#getContent <em>Content</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Content</em>'.
+	 * @see modelling.Course#getContent()
+	 * @see #getCourse()
+	 * @generated
+	 */
+	EAttribute getCourse_Content();
+
+	/**
+	 * Returns the meta object for the reference list '{@link modelling.Course#getRecommendedCourses <em>Recommended Courses</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Recommended Courses</em>'.
+	 * @see modelling.Course#getRecommendedCourses()
+	 * @see #getCourse()
+	 * @generated
+	 */
+	EReference getCourse_RecommendedCourses();
+
+	/**
+	 * Returns the meta object for the reference list '{@link modelling.Course#getRequiredCourses <em>Required Courses</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Required Courses</em>'.
+	 * @see modelling.Course#getRequiredCourses()
+	 * @see #getCourse()
+	 * @generated
+	 */
+	EReference getCourse_RequiredCourses();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.StudyProgram <em>Study Program</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Study Program</em>'.
+	 * @see modelling.StudyProgram
+	 * @generated
+	 */
+	EClass getStudyProgram();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link modelling.StudyProgram#getCourse <em>Course</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Course</em>'.
+	 * @see modelling.StudyProgram#getCourse()
+	 * @see #getStudyProgram()
+	 * @generated
+	 */
+	EReference getStudyProgram_Course();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.StudyProgram#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see modelling.StudyProgram#getName()
+	 * @see #getStudyProgram()
+	 * @generated
+	 */
+	EAttribute getStudyProgram_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.StudyProgram#getCode <em>Code</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Code</em>'.
+	 * @see modelling.StudyProgram#getCode()
+	 * @see #getStudyProgram()
+	 * @generated
+	 */
+	EAttribute getStudyProgram_Code();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.CourseInstance <em>Course Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Course Instance</em>'.
+	 * @see modelling.CourseInstance
+	 * @generated
+	 */
+	EClass getCourseInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.CourseInstance#getSemesterYear <em>Semester Year</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Semester Year</em>'.
+	 * @see modelling.CourseInstance#getSemesterYear()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EAttribute getCourseInstance_SemesterYear();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.CourseInstance#getCredits <em>Credits</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Credits</em>'.
+	 * @see modelling.CourseInstance#getCredits()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EAttribute getCourseInstance_Credits();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.CourseInstance#getLabHours <em>Lab Hours</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Lab Hours</em>'.
+	 * @see modelling.CourseInstance#getLabHours()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EAttribute getCourseInstance_LabHours();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.CourseInstance#getLectureHours <em>Lecture Hours</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Lecture Hours</em>'.
+	 * @see modelling.CourseInstance#getLectureHours()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EAttribute getCourseInstance_LectureHours();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link modelling.CourseInstance#getCourse <em>Course</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Course</em>'.
+	 * @see modelling.CourseInstance#getCourse()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EReference getCourseInstance_Course();
+
+	/**
+	 * Returns the meta object for the reference list '{@link modelling.CourseInstance#getStaff <em>Staff</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Staff</em>'.
+	 * @see modelling.CourseInstance#getStaff()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EReference getCourseInstance_Staff();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link modelling.CourseInstance#getPointreduction <em>Pointreduction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Pointreduction</em>'.
+	 * @see modelling.CourseInstance#getPointreduction()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EReference getCourseInstance_Pointreduction();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link modelling.CourseInstance#getEvaluationform <em>Evaluationform</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Evaluationform</em>'.
+	 * @see modelling.CourseInstance#getEvaluationform()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EReference getCourseInstance_Evaluationform();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link modelling.CourseInstance#getTimetablerow <em>Timetablerow</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Timetablerow</em>'.
+	 * @see modelling.CourseInstance#getTimetablerow()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EReference getCourseInstance_Timetablerow();
+
+	/**
+	 * Returns the meta object for the reference '{@link modelling.CourseInstance#getDepartment <em>Department</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Department</em>'.
+	 * @see modelling.CourseInstance#getDepartment()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EReference getCourseInstance_Department();
+
+	/**
+	 * Returns the meta object for the reference '{@link modelling.CourseInstance#getRegisteredStudent <em>Registered Student</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Registered Student</em>'.
+	 * @see modelling.CourseInstance#getRegisteredStudent()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EReference getCourseInstance_RegisteredStudent();
+
+	/**
+	 * Returns the meta object for the reference '{@link modelling.CourseInstance#getPassedStudent <em>Passed Student</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Passed Student</em>'.
+	 * @see modelling.CourseInstance#getPassedStudent()
+	 * @see #getCourseInstance()
+	 * @generated
+	 */
+	EReference getCourseInstance_PassedStudent();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.TimeTableRow <em>Time Table Row</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Time Table Row</em>'.
+	 * @see modelling.TimeTableRow
+	 * @generated
+	 */
+	EClass getTimeTableRow();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.TimeTableRow#getWeekday <em>Weekday</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Weekday</em>'.
+	 * @see modelling.TimeTableRow#getWeekday()
+	 * @see #getTimeTableRow()
+	 * @generated
+	 */
+	EAttribute getTimeTableRow_Weekday();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.TimeTableRow#getStartTime <em>Start Time</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Start Time</em>'.
+	 * @see modelling.TimeTableRow#getStartTime()
+	 * @see #getTimeTableRow()
+	 * @generated
+	 */
+	EAttribute getTimeTableRow_StartTime();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.TimeTableRow#getEndTime <em>End Time</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>End Time</em>'.
+	 * @see modelling.TimeTableRow#getEndTime()
+	 * @see #getTimeTableRow()
+	 * @generated
+	 */
+	EAttribute getTimeTableRow_EndTime();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.TimeTableRow#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see modelling.TimeTableRow#getType()
+	 * @see #getTimeTableRow()
+	 * @generated
+	 */
+	EAttribute getTimeTableRow_Type();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.TimeTableRow#getRoom <em>Room</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Room</em>'.
+	 * @see modelling.TimeTableRow#getRoom()
+	 * @see #getTimeTableRow()
+	 * @generated
+	 */
+	EAttribute getTimeTableRow_Room();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.EvaluationForm <em>Evaluation Form</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Evaluation Form</em>'.
+	 * @see modelling.EvaluationForm
+	 * @generated
+	 */
+	EClass getEvaluationForm();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.EvaluationForm#getPercentage <em>Percentage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Percentage</em>'.
+	 * @see modelling.EvaluationForm#getPercentage()
+	 * @see #getEvaluationForm()
+	 * @generated
+	 */
+	EAttribute getEvaluationForm_Percentage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.EvaluationForm#getContent <em>Content</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Content</em>'.
+	 * @see modelling.EvaluationForm#getContent()
+	 * @see #getEvaluationForm()
+	 * @generated
+	 */
+	EAttribute getEvaluationForm_Content();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.EvaluationForm#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see modelling.EvaluationForm#getType()
+	 * @see #getEvaluationForm()
+	 * @generated
+	 */
+	EAttribute getEvaluationForm_Type();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.Department <em>Department</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Department</em>'.
+	 * @see modelling.Department
+	 * @generated
+	 */
+	EClass getDepartment();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Department#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see modelling.Department#getName()
+	 * @see #getDepartment()
+	 * @generated
+	 */
+	EAttribute getDepartment_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link modelling.Department#getStudyprogram <em>Studyprogram</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Studyprogram</em>'.
+	 * @see modelling.Department#getStudyprogram()
+	 * @see #getDepartment()
+	 * @generated
+	 */
+	EReference getDepartment_Studyprogram();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link modelling.Department#getPerson <em>Person</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Person</em>'.
+	 * @see modelling.Department#getPerson()
+	 * @see #getDepartment()
+	 * @generated
+	 */
+	EReference getDepartment_Person();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.PointReduction <em>Point Reduction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Point Reduction</em>'.
+	 * @see modelling.PointReduction
+	 * @generated
+	 */
+	EClass getPointReduction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.PointReduction#getReduction <em>Reduction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Reduction</em>'.
+	 * @see modelling.PointReduction#getReduction()
+	 * @see #getPointReduction()
+	 * @generated
+	 */
+	EAttribute getPointReduction_Reduction();
+
+	/**
+	 * Returns the meta object for the reference list '{@link modelling.PointReduction#getCourseinstance <em>Courseinstance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Courseinstance</em>'.
+	 * @see modelling.PointReduction#getCourseinstance()
+	 * @see #getPointReduction()
+	 * @generated
+	 */
+	EReference getPointReduction_Courseinstance();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.Role <em>Role</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Role</em>'.
+	 * @see modelling.Role
+	 * @generated
+	 */
+	EClass getRole();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Role#getRole <em>Role</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Role</em>'.
+	 * @see modelling.Role#getRole()
+	 * @see #getRole()
+	 * @generated
+	 */
+	EAttribute getRole_Role();
+
+	/**
+	 * Returns the meta object for the reference '{@link modelling.Role#getCourseinstance <em>Courseinstance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Courseinstance</em>'.
+	 * @see modelling.Role#getCourseinstance()
+	 * @see #getRole()
+	 * @generated
+	 */
+	EReference getRole_Courseinstance();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.Person <em>Person</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Person</em>'.
+	 * @see modelling.Person
+	 * @generated
+	 */
+	EClass getPerson();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Person#getFirstName <em>First Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>First Name</em>'.
+	 * @see modelling.Person#getFirstName()
+	 * @see #getPerson()
+	 * @generated
+	 */
+	EAttribute getPerson_FirstName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Person#getLastName <em>Last Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Last Name</em>'.
+	 * @see modelling.Person#getLastName()
+	 * @see #getPerson()
+	 * @generated
+	 */
+	EAttribute getPerson_LastName();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link modelling.Person#getStudent <em>Student</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Student</em>'.
+	 * @see modelling.Person#getStudent()
+	 * @see #getPerson()
+	 * @generated
+	 */
+	EReference getPerson_Student();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link modelling.Person#getEmployee <em>Employee</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Employee</em>'.
+	 * @see modelling.Person#getEmployee()
+	 * @see #getPerson()
+	 * @generated
+	 */
+	EReference getPerson_Employee();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.Student <em>Student</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Student</em>'.
+	 * @see modelling.Student
+	 * @generated
+	 */
+	EClass getStudent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Student#getStudentID <em>Student ID</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Student ID</em>'.
+	 * @see modelling.Student#getStudentID()
+	 * @see #getStudent()
+	 * @generated
+	 */
+	EAttribute getStudent_StudentID();
+
+	/**
+	 * Returns the meta object for the reference list '{@link modelling.Student#getRegisteredFor <em>Registered For</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Registered For</em>'.
+	 * @see modelling.Student#getRegisteredFor()
+	 * @see #getStudent()
+	 * @generated
+	 */
+	EReference getStudent_RegisteredFor();
+
+	/**
+	 * Returns the meta object for the reference list '{@link modelling.Student#getExamPassed <em>Exam Passed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Exam Passed</em>'.
+	 * @see modelling.Student#getExamPassed()
+	 * @see #getStudent()
+	 * @generated
+	 */
+	EReference getStudent_ExamPassed();
+
+	/**
+	 * Returns the meta object for the reference '{@link modelling.Student#getStudyprogram <em>Studyprogram</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Studyprogram</em>'.
+	 * @see modelling.Student#getStudyprogram()
+	 * @see #getStudent()
+	 * @generated
+	 */
+	EReference getStudent_Studyprogram();
+
+	/**
+	 * Returns the meta object for class '{@link modelling.Employee <em>Employee</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Employee</em>'.
+	 * @see modelling.Employee
+	 * @generated
+	 */
+	EClass getEmployee();
+
+	/**
+	 * Returns the meta object for the attribute '{@link modelling.Employee#getEmployeeID <em>Employee ID</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Employee ID</em>'.
+	 * @see modelling.Employee#getEmployeeID()
+	 * @see #getEmployee()
+	 * @generated
+	 */
+	EAttribute getEmployee_EmployeeID();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link modelling.Employee#getRole <em>Role</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Role</em>'.
+	 * @see modelling.Employee#getRole()
+	 * @see #getEmployee()
+	 * @generated
+	 */
+	EReference getEmployee_Role();
+
+	/**
+	 * Returns the meta object for enum '{@link modelling.DayKind <em>Day Kind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Day Kind</em>'.
+	 * @see modelling.DayKind
+	 * @generated
+	 */
+	EEnum getDayKind();
+
+	/**
+	 * Returns the meta object for enum '{@link modelling.RoleKind <em>Role Kind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Role Kind</em>'.
+	 * @see modelling.RoleKind
+	 * @generated
+	 */
+	EEnum getRoleKind();
+
+	/**
+	 * Returns the meta object for enum '{@link modelling.EvaluationFormKind <em>Evaluation Form Kind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Evaluation Form Kind</em>'.
+	 * @see modelling.EvaluationFormKind
+	 * @generated
+	 */
+	EEnum getEvaluationFormKind();
+
+	/**
+	 * Returns the meta object for enum '{@link modelling.TeachingFormKind <em>Teaching Form Kind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Teaching Form Kind</em>'.
+	 * @see modelling.TeachingFormKind
+	 * @generated
+	 */
+	EEnum getTeachingFormKind();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ModellingFactory getModellingFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link modelling.impl.CourseImpl <em>Course</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.CourseImpl
+		 * @see modelling.impl.ModellingPackageImpl#getCourse()
+		 * @generated
+		 */
+		EClass COURSE = eINSTANCE.getCourse();
+
+		/**
+		 * The meta object literal for the '<em><b>Code</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COURSE__CODE = eINSTANCE.getCourse_Code();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COURSE__NAME = eINSTANCE.getCourse_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Content</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COURSE__CONTENT = eINSTANCE.getCourse_Content();
+
+		/**
+		 * The meta object literal for the '<em><b>Recommended Courses</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE__RECOMMENDED_COURSES = eINSTANCE.getCourse_RecommendedCourses();
+
+		/**
+		 * The meta object literal for the '<em><b>Required Courses</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE__REQUIRED_COURSES = eINSTANCE.getCourse_RequiredCourses();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.StudyProgramImpl <em>Study Program</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.StudyProgramImpl
+		 * @see modelling.impl.ModellingPackageImpl#getStudyProgram()
+		 * @generated
+		 */
+		EClass STUDY_PROGRAM = eINSTANCE.getStudyProgram();
+
+		/**
+		 * The meta object literal for the '<em><b>Course</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STUDY_PROGRAM__COURSE = eINSTANCE.getStudyProgram_Course();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STUDY_PROGRAM__NAME = eINSTANCE.getStudyProgram_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Code</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STUDY_PROGRAM__CODE = eINSTANCE.getStudyProgram_Code();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.CourseInstanceImpl <em>Course Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.CourseInstanceImpl
+		 * @see modelling.impl.ModellingPackageImpl#getCourseInstance()
+		 * @generated
+		 */
+		EClass COURSE_INSTANCE = eINSTANCE.getCourseInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Semester Year</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COURSE_INSTANCE__SEMESTER_YEAR = eINSTANCE.getCourseInstance_SemesterYear();
+
+		/**
+		 * The meta object literal for the '<em><b>Credits</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COURSE_INSTANCE__CREDITS = eINSTANCE.getCourseInstance_Credits();
+
+		/**
+		 * The meta object literal for the '<em><b>Lab Hours</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COURSE_INSTANCE__LAB_HOURS = eINSTANCE.getCourseInstance_LabHours();
+
+		/**
+		 * The meta object literal for the '<em><b>Lecture Hours</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COURSE_INSTANCE__LECTURE_HOURS = eINSTANCE.getCourseInstance_LectureHours();
+
+		/**
+		 * The meta object literal for the '<em><b>Course</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE_INSTANCE__COURSE = eINSTANCE.getCourseInstance_Course();
+
+		/**
+		 * The meta object literal for the '<em><b>Staff</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE_INSTANCE__STAFF = eINSTANCE.getCourseInstance_Staff();
+
+		/**
+		 * The meta object literal for the '<em><b>Pointreduction</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE_INSTANCE__POINTREDUCTION = eINSTANCE.getCourseInstance_Pointreduction();
+
+		/**
+		 * The meta object literal for the '<em><b>Evaluationform</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE_INSTANCE__EVALUATIONFORM = eINSTANCE.getCourseInstance_Evaluationform();
+
+		/**
+		 * The meta object literal for the '<em><b>Timetablerow</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE_INSTANCE__TIMETABLEROW = eINSTANCE.getCourseInstance_Timetablerow();
+
+		/**
+		 * The meta object literal for the '<em><b>Department</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE_INSTANCE__DEPARTMENT = eINSTANCE.getCourseInstance_Department();
+
+		/**
+		 * The meta object literal for the '<em><b>Registered Student</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE_INSTANCE__REGISTERED_STUDENT = eINSTANCE.getCourseInstance_RegisteredStudent();
+
+		/**
+		 * The meta object literal for the '<em><b>Passed Student</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE_INSTANCE__PASSED_STUDENT = eINSTANCE.getCourseInstance_PassedStudent();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.TimeTableRowImpl <em>Time Table Row</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.TimeTableRowImpl
+		 * @see modelling.impl.ModellingPackageImpl#getTimeTableRow()
+		 * @generated
+		 */
+		EClass TIME_TABLE_ROW = eINSTANCE.getTimeTableRow();
+
+		/**
+		 * The meta object literal for the '<em><b>Weekday</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TIME_TABLE_ROW__WEEKDAY = eINSTANCE.getTimeTableRow_Weekday();
+
+		/**
+		 * The meta object literal for the '<em><b>Start Time</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TIME_TABLE_ROW__START_TIME = eINSTANCE.getTimeTableRow_StartTime();
+
+		/**
+		 * The meta object literal for the '<em><b>End Time</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TIME_TABLE_ROW__END_TIME = eINSTANCE.getTimeTableRow_EndTime();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TIME_TABLE_ROW__TYPE = eINSTANCE.getTimeTableRow_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Room</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TIME_TABLE_ROW__ROOM = eINSTANCE.getTimeTableRow_Room();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.EvaluationFormImpl <em>Evaluation Form</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.EvaluationFormImpl
+		 * @see modelling.impl.ModellingPackageImpl#getEvaluationForm()
+		 * @generated
+		 */
+		EClass EVALUATION_FORM = eINSTANCE.getEvaluationForm();
+
+		/**
+		 * The meta object literal for the '<em><b>Percentage</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVALUATION_FORM__PERCENTAGE = eINSTANCE.getEvaluationForm_Percentage();
+
+		/**
+		 * The meta object literal for the '<em><b>Content</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVALUATION_FORM__CONTENT = eINSTANCE.getEvaluationForm_Content();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVALUATION_FORM__TYPE = eINSTANCE.getEvaluationForm_Type();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.DepartmentImpl <em>Department</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.DepartmentImpl
+		 * @see modelling.impl.ModellingPackageImpl#getDepartment()
+		 * @generated
+		 */
+		EClass DEPARTMENT = eINSTANCE.getDepartment();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEPARTMENT__NAME = eINSTANCE.getDepartment_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Studyprogram</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DEPARTMENT__STUDYPROGRAM = eINSTANCE.getDepartment_Studyprogram();
+
+		/**
+		 * The meta object literal for the '<em><b>Person</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DEPARTMENT__PERSON = eINSTANCE.getDepartment_Person();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.PointReductionImpl <em>Point Reduction</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.PointReductionImpl
+		 * @see modelling.impl.ModellingPackageImpl#getPointReduction()
+		 * @generated
+		 */
+		EClass POINT_REDUCTION = eINSTANCE.getPointReduction();
+
+		/**
+		 * The meta object literal for the '<em><b>Reduction</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POINT_REDUCTION__REDUCTION = eINSTANCE.getPointReduction_Reduction();
+
+		/**
+		 * The meta object literal for the '<em><b>Courseinstance</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference POINT_REDUCTION__COURSEINSTANCE = eINSTANCE.getPointReduction_Courseinstance();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.RoleImpl <em>Role</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.RoleImpl
+		 * @see modelling.impl.ModellingPackageImpl#getRole()
+		 * @generated
+		 */
+		EClass ROLE = eINSTANCE.getRole();
+
+		/**
+		 * The meta object literal for the '<em><b>Role</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ROLE__ROLE = eINSTANCE.getRole_Role();
+
+		/**
+		 * The meta object literal for the '<em><b>Courseinstance</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ROLE__COURSEINSTANCE = eINSTANCE.getRole_Courseinstance();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.PersonImpl <em>Person</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.PersonImpl
+		 * @see modelling.impl.ModellingPackageImpl#getPerson()
+		 * @generated
+		 */
+		EClass PERSON = eINSTANCE.getPerson();
+
+		/**
+		 * The meta object literal for the '<em><b>First Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERSON__FIRST_NAME = eINSTANCE.getPerson_FirstName();
+
+		/**
+		 * The meta object literal for the '<em><b>Last Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERSON__LAST_NAME = eINSTANCE.getPerson_LastName();
+
+		/**
+		 * The meta object literal for the '<em><b>Student</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSON__STUDENT = eINSTANCE.getPerson_Student();
+
+		/**
+		 * The meta object literal for the '<em><b>Employee</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSON__EMPLOYEE = eINSTANCE.getPerson_Employee();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.StudentImpl <em>Student</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.StudentImpl
+		 * @see modelling.impl.ModellingPackageImpl#getStudent()
+		 * @generated
+		 */
+		EClass STUDENT = eINSTANCE.getStudent();
+
+		/**
+		 * The meta object literal for the '<em><b>Student ID</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute STUDENT__STUDENT_ID = eINSTANCE.getStudent_StudentID();
+
+		/**
+		 * The meta object literal for the '<em><b>Registered For</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STUDENT__REGISTERED_FOR = eINSTANCE.getStudent_RegisteredFor();
+
+		/**
+		 * The meta object literal for the '<em><b>Exam Passed</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STUDENT__EXAM_PASSED = eINSTANCE.getStudent_ExamPassed();
+
+		/**
+		 * The meta object literal for the '<em><b>Studyprogram</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STUDENT__STUDYPROGRAM = eINSTANCE.getStudent_Studyprogram();
+
+		/**
+		 * The meta object literal for the '{@link modelling.impl.EmployeeImpl <em>Employee</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.impl.EmployeeImpl
+		 * @see modelling.impl.ModellingPackageImpl#getEmployee()
+		 * @generated
+		 */
+		EClass EMPLOYEE = eINSTANCE.getEmployee();
+
+		/**
+		 * The meta object literal for the '<em><b>Employee ID</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EMPLOYEE__EMPLOYEE_ID = eINSTANCE.getEmployee_EmployeeID();
+
+		/**
+		 * The meta object literal for the '<em><b>Role</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EMPLOYEE__ROLE = eINSTANCE.getEmployee_Role();
+
+		/**
+		 * The meta object literal for the '{@link modelling.DayKind <em>Day Kind</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.DayKind
+		 * @see modelling.impl.ModellingPackageImpl#getDayKind()
+		 * @generated
+		 */
+		EEnum DAY_KIND = eINSTANCE.getDayKind();
+
+		/**
+		 * The meta object literal for the '{@link modelling.RoleKind <em>Role Kind</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.RoleKind
+		 * @see modelling.impl.ModellingPackageImpl#getRoleKind()
+		 * @generated
+		 */
+		EEnum ROLE_KIND = eINSTANCE.getRoleKind();
+
+		/**
+		 * The meta object literal for the '{@link modelling.EvaluationFormKind <em>Evaluation Form Kind</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.EvaluationFormKind
+		 * @see modelling.impl.ModellingPackageImpl#getEvaluationFormKind()
+		 * @generated
+		 */
+		EEnum EVALUATION_FORM_KIND = eINSTANCE.getEvaluationFormKind();
+
+		/**
+		 * The meta object literal for the '{@link modelling.TeachingFormKind <em>Teaching Form Kind</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see modelling.TeachingFormKind
+		 * @see modelling.impl.ModellingPackageImpl#getTeachingFormKind()
+		 * @generated
+		 */
+		EEnum TEACHING_FORM_KIND = eINSTANCE.getTeachingFormKind();
+
+	}
+
+} //ModellingPackage
diff --git a/src-gen/modelling/Person.java b/src-gen/modelling/Person.java
new file mode 100644
index 0000000000000000000000000000000000000000..d824e92da317c6619330f605a42ba4fe5b0cffe8
--- /dev/null
+++ b/src-gen/modelling/Person.java
@@ -0,0 +1,131 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Person</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.Person#getFirstName <em>First Name</em>}</li>
+ *   <li>{@link modelling.Person#getLastName <em>Last Name</em>}</li>
+ *   <li>{@link modelling.Person#getStudent <em>Student</em>}</li>
+ *   <li>{@link modelling.Person#getEmployee <em>Employee</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getPerson()
+ * @model
+ * @generated
+ */
+public interface Person extends EObject {
+	/**
+	 * Returns the value of the '<em><b>First Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>First Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>First Name</em>' attribute.
+	 * @see #setFirstName(String)
+	 * @see modelling.ModellingPackage#getPerson_FirstName()
+	 * @model
+	 * @generated
+	 */
+	String getFirstName();
+
+	/**
+	 * Sets the value of the '{@link modelling.Person#getFirstName <em>First Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>First Name</em>' attribute.
+	 * @see #getFirstName()
+	 * @generated
+	 */
+	void setFirstName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Last Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Last Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Last Name</em>' attribute.
+	 * @see #setLastName(String)
+	 * @see modelling.ModellingPackage#getPerson_LastName()
+	 * @model
+	 * @generated
+	 */
+	String getLastName();
+
+	/**
+	 * Sets the value of the '{@link modelling.Person#getLastName <em>Last Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Last Name</em>' attribute.
+	 * @see #getLastName()
+	 * @generated
+	 */
+	void setLastName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Student</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Student</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Student</em>' containment reference.
+	 * @see #setStudent(Student)
+	 * @see modelling.ModellingPackage#getPerson_Student()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Student getStudent();
+
+	/**
+	 * Sets the value of the '{@link modelling.Person#getStudent <em>Student</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Student</em>' containment reference.
+	 * @see #getStudent()
+	 * @generated
+	 */
+	void setStudent(Student value);
+
+	/**
+	 * Returns the value of the '<em><b>Employee</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Employee</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Employee</em>' containment reference.
+	 * @see #setEmployee(Employee)
+	 * @see modelling.ModellingPackage#getPerson_Employee()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Employee getEmployee();
+
+	/**
+	 * Sets the value of the '{@link modelling.Person#getEmployee <em>Employee</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Employee</em>' containment reference.
+	 * @see #getEmployee()
+	 * @generated
+	 */
+	void setEmployee(Employee value);
+
+} // Person
diff --git a/src-gen/modelling/PointReduction.java b/src-gen/modelling/PointReduction.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a29bee6c36d7048ea88ea64ba10f3c0a1ee55f3
--- /dev/null
+++ b/src-gen/modelling/PointReduction.java
@@ -0,0 +1,69 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Point Reduction</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.PointReduction#getReduction <em>Reduction</em>}</li>
+ *   <li>{@link modelling.PointReduction#getCourseinstance <em>Courseinstance</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getPointReduction()
+ * @model
+ * @generated
+ */
+public interface PointReduction extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Reduction</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Reduction</em>' attribute.
+	 * @see #setReduction(float)
+	 * @see modelling.ModellingPackage#getPointReduction_Reduction()
+	 * @model
+	 * @generated
+	 */
+	float getReduction();
+
+	/**
+	 * Sets the value of the '{@link modelling.PointReduction#getReduction <em>Reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Reduction</em>' attribute.
+	 * @see #getReduction()
+	 * @generated
+	 */
+	void setReduction(float value);
+
+	/**
+	 * Returns the value of the '<em><b>Courseinstance</b></em>' reference list.
+	 * The list contents are of type {@link modelling.CourseInstance}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Courseinstance</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Courseinstance</em>' reference list.
+	 * @see modelling.ModellingPackage#getPointReduction_Courseinstance()
+	 * @model
+	 * @generated
+	 */
+	EList<CourseInstance> getCourseinstance();
+
+} // PointReduction
diff --git a/src-gen/modelling/Role.java b/src-gen/modelling/Role.java
new file mode 100644
index 0000000000000000000000000000000000000000..e05b54dc2b9280850a0de8ef3fa7a85591408db2
--- /dev/null
+++ b/src-gen/modelling/Role.java
@@ -0,0 +1,82 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Role</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.Role#getRole <em>Role</em>}</li>
+ *   <li>{@link modelling.Role#getCourseinstance <em>Courseinstance</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getRole()
+ * @model
+ * @generated
+ */
+public interface Role extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Role</b></em>' attribute.
+	 * The literals are from the enumeration {@link modelling.RoleKind}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Role</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Role</em>' attribute.
+	 * @see modelling.RoleKind
+	 * @see #setRole(RoleKind)
+	 * @see modelling.ModellingPackage#getRole_Role()
+	 * @model
+	 * @generated
+	 */
+	RoleKind getRole();
+
+	/**
+	 * Sets the value of the '{@link modelling.Role#getRole <em>Role</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Role</em>' attribute.
+	 * @see modelling.RoleKind
+	 * @see #getRole()
+	 * @generated
+	 */
+	void setRole(RoleKind value);
+
+	/**
+	 * Returns the value of the '<em><b>Courseinstance</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link modelling.CourseInstance#getStaff <em>Staff</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Courseinstance</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Courseinstance</em>' reference.
+	 * @see #setCourseinstance(CourseInstance)
+	 * @see modelling.ModellingPackage#getRole_Courseinstance()
+	 * @see modelling.CourseInstance#getStaff
+	 * @model opposite="staff"
+	 * @generated
+	 */
+	CourseInstance getCourseinstance();
+
+	/**
+	 * Sets the value of the '{@link modelling.Role#getCourseinstance <em>Courseinstance</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Courseinstance</em>' reference.
+	 * @see #getCourseinstance()
+	 * @generated
+	 */
+	void setCourseinstance(CourseInstance value);
+
+} // Role
diff --git a/src-gen/modelling/RoleKind.java b/src-gen/modelling/RoleKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e694a32d0e3079a6319caa9d5e4d2e67d517276
--- /dev/null
+++ b/src-gen/modelling/RoleKind.java
@@ -0,0 +1,267 @@
+/**
+ */
+package modelling;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Role Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see modelling.ModellingPackage#getRoleKind()
+ * @model
+ * @generated
+ */
+public enum RoleKind implements Enumerator {
+	/**
+	 * The '<em><b>Lecturer</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LECTURER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LECTURER(0, "Lecturer", "Lecturer"),
+
+	/**
+	 * The '<em><b>Coordinator</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #COORDINATOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	COORDINATOR(1, "Coordinator", "Coordinator"),
+
+	/**
+	 * The '<em><b>Student Assistant</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #STUDENT_ASSISTANT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	STUDENT_ASSISTANT(2, "StudentAssistant", "StudentAssistant"),
+
+	/**
+	 * The '<em><b>Teacher Assistant</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TEACHER_ASSISTANT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TEACHER_ASSISTANT(3, "TeacherAssistant", "TeacherAssistant");
+
+	/**
+	 * The '<em><b>Lecturer</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Lecturer</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LECTURER
+	 * @model name="Lecturer"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LECTURER_VALUE = 0;
+
+	/**
+	 * The '<em><b>Coordinator</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Coordinator</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #COORDINATOR
+	 * @model name="Coordinator"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COORDINATOR_VALUE = 1;
+
+	/**
+	 * The '<em><b>Student Assistant</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Student Assistant</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #STUDENT_ASSISTANT
+	 * @model name="StudentAssistant"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int STUDENT_ASSISTANT_VALUE = 2;
+
+	/**
+	 * The '<em><b>Teacher Assistant</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Teacher Assistant</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TEACHER_ASSISTANT
+	 * @model name="TeacherAssistant"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TEACHER_ASSISTANT_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Role Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final RoleKind[] VALUES_ARRAY = new RoleKind[] { LECTURER, COORDINATOR, STUDENT_ASSISTANT,
+			TEACHER_ASSISTANT, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Role Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<RoleKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Role Kind</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RoleKind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RoleKind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Role Kind</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RoleKind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RoleKind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Role Kind</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RoleKind get(int value) {
+		switch (value) {
+		case LECTURER_VALUE:
+			return LECTURER;
+		case COORDINATOR_VALUE:
+			return COORDINATOR;
+		case STUDENT_ASSISTANT_VALUE:
+			return STUDENT_ASSISTANT;
+		case TEACHER_ASSISTANT_VALUE:
+			return TEACHER_ASSISTANT;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private RoleKind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //RoleKind
diff --git a/src-gen/modelling/Student.java b/src-gen/modelling/Student.java
new file mode 100644
index 0000000000000000000000000000000000000000..8dd5d03e2e3f8e74fd2e4eaa6a6db3f962a22cc7
--- /dev/null
+++ b/src-gen/modelling/Student.java
@@ -0,0 +1,117 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Student</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.Student#getStudentID <em>Student ID</em>}</li>
+ *   <li>{@link modelling.Student#getRegisteredFor <em>Registered For</em>}</li>
+ *   <li>{@link modelling.Student#getExamPassed <em>Exam Passed</em>}</li>
+ *   <li>{@link modelling.Student#getStudyprogram <em>Studyprogram</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getStudent()
+ * @model
+ * @generated
+ */
+public interface Student extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Student ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Student ID</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Student ID</em>' attribute.
+	 * @see #setStudentID(int)
+	 * @see modelling.ModellingPackage#getStudent_StudentID()
+	 * @model
+	 * @generated
+	 */
+	int getStudentID();
+
+	/**
+	 * Sets the value of the '{@link modelling.Student#getStudentID <em>Student ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Student ID</em>' attribute.
+	 * @see #getStudentID()
+	 * @generated
+	 */
+	void setStudentID(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Registered For</b></em>' reference list.
+	 * The list contents are of type {@link modelling.CourseInstance}.
+	 * It is bidirectional and its opposite is '{@link modelling.CourseInstance#getRegisteredStudent <em>Registered Student</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Registered For</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Registered For</em>' reference list.
+	 * @see modelling.ModellingPackage#getStudent_RegisteredFor()
+	 * @see modelling.CourseInstance#getRegisteredStudent
+	 * @model opposite="registeredStudent"
+	 * @generated
+	 */
+	EList<CourseInstance> getRegisteredFor();
+
+	/**
+	 * Returns the value of the '<em><b>Exam Passed</b></em>' reference list.
+	 * The list contents are of type {@link modelling.CourseInstance}.
+	 * It is bidirectional and its opposite is '{@link modelling.CourseInstance#getPassedStudent <em>Passed Student</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Exam Passed</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Exam Passed</em>' reference list.
+	 * @see modelling.ModellingPackage#getStudent_ExamPassed()
+	 * @see modelling.CourseInstance#getPassedStudent
+	 * @model opposite="passedStudent"
+	 * @generated
+	 */
+	EList<CourseInstance> getExamPassed();
+
+	/**
+	 * Returns the value of the '<em><b>Studyprogram</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Studyprogram</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Studyprogram</em>' reference.
+	 * @see #setStudyprogram(StudyProgram)
+	 * @see modelling.ModellingPackage#getStudent_Studyprogram()
+	 * @model
+	 * @generated
+	 */
+	StudyProgram getStudyprogram();
+
+	/**
+	 * Sets the value of the '{@link modelling.Student#getStudyprogram <em>Studyprogram</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Studyprogram</em>' reference.
+	 * @see #getStudyprogram()
+	 * @generated
+	 */
+	void setStudyprogram(StudyProgram value);
+
+} // Student
diff --git a/src-gen/modelling/StudyProgram.java b/src-gen/modelling/StudyProgram.java
new file mode 100644
index 0000000000000000000000000000000000000000..3175892a22a87438d244ea01b05ab8eb773d0d1d
--- /dev/null
+++ b/src-gen/modelling/StudyProgram.java
@@ -0,0 +1,96 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Study Program</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.StudyProgram#getCourse <em>Course</em>}</li>
+ *   <li>{@link modelling.StudyProgram#getName <em>Name</em>}</li>
+ *   <li>{@link modelling.StudyProgram#getCode <em>Code</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getStudyProgram()
+ * @model
+ * @generated
+ */
+public interface StudyProgram extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Course</b></em>' containment reference list.
+	 * The list contents are of type {@link modelling.Course}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Course</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Course</em>' containment reference list.
+	 * @see modelling.ModellingPackage#getStudyProgram_Course()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Course> getCourse();
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see modelling.ModellingPackage#getStudyProgram_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link modelling.StudyProgram#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Code</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Code</em>' attribute.
+	 * @see #setCode(String)
+	 * @see modelling.ModellingPackage#getStudyProgram_Code()
+	 * @model
+	 * @generated
+	 */
+	String getCode();
+
+	/**
+	 * Sets the value of the '{@link modelling.StudyProgram#getCode <em>Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Code</em>' attribute.
+	 * @see #getCode()
+	 * @generated
+	 */
+	void setCode(String value);
+
+} // StudyProgram
diff --git a/src-gen/modelling/TeachingFormKind.java b/src-gen/modelling/TeachingFormKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..98a6f9f4c90d89b09e3b9d1ae4e0450eeb8c9935
--- /dev/null
+++ b/src-gen/modelling/TeachingFormKind.java
@@ -0,0 +1,212 @@
+/**
+ */
+package modelling;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Teaching Form Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see modelling.ModellingPackage#getTeachingFormKind()
+ * @model
+ * @generated
+ */
+public enum TeachingFormKind implements Enumerator {
+	/**
+	 * The '<em><b>Lecture</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LECTURE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LECTURE(0, "Lecture", "Lecture "),
+
+	/**
+	 * The '<em><b>Lab</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LAB_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LAB(1, "Lab", "Lab ");
+
+	/**
+	 * The '<em><b>Lecture</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Lecture</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LECTURE
+	 * @model name="Lecture" literal="Lecture "
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LECTURE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Lab</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Lab</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LAB
+	 * @model name="Lab" literal="Lab "
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LAB_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Teaching Form Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final TeachingFormKind[] VALUES_ARRAY = new TeachingFormKind[] { LECTURE, LAB, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Teaching Form Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<TeachingFormKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Teaching Form Kind</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TeachingFormKind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TeachingFormKind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Teaching Form Kind</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TeachingFormKind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TeachingFormKind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Teaching Form Kind</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static TeachingFormKind get(int value) {
+		switch (value) {
+		case LECTURE_VALUE:
+			return LECTURE;
+		case LAB_VALUE:
+			return LAB;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private TeachingFormKind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //TeachingFormKind
diff --git a/src-gen/modelling/TimeTableRow.java b/src-gen/modelling/TimeTableRow.java
new file mode 100644
index 0000000000000000000000000000000000000000..c66a275b1cf4cf4bdc3a2ea4c9df9f73d9ad515b
--- /dev/null
+++ b/src-gen/modelling/TimeTableRow.java
@@ -0,0 +1,164 @@
+/**
+ */
+package modelling;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Time Table Row</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.TimeTableRow#getWeekday <em>Weekday</em>}</li>
+ *   <li>{@link modelling.TimeTableRow#getStartTime <em>Start Time</em>}</li>
+ *   <li>{@link modelling.TimeTableRow#getEndTime <em>End Time</em>}</li>
+ *   <li>{@link modelling.TimeTableRow#getType <em>Type</em>}</li>
+ *   <li>{@link modelling.TimeTableRow#getRoom <em>Room</em>}</li>
+ * </ul>
+ *
+ * @see modelling.ModellingPackage#getTimeTableRow()
+ * @model
+ * @generated
+ */
+public interface TimeTableRow extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Weekday</b></em>' attribute.
+	 * The literals are from the enumeration {@link modelling.DayKind}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Weekday</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Weekday</em>' attribute.
+	 * @see modelling.DayKind
+	 * @see #setWeekday(DayKind)
+	 * @see modelling.ModellingPackage#getTimeTableRow_Weekday()
+	 * @model
+	 * @generated
+	 */
+	DayKind getWeekday();
+
+	/**
+	 * Sets the value of the '{@link modelling.TimeTableRow#getWeekday <em>Weekday</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Weekday</em>' attribute.
+	 * @see modelling.DayKind
+	 * @see #getWeekday()
+	 * @generated
+	 */
+	void setWeekday(DayKind value);
+
+	/**
+	 * Returns the value of the '<em><b>Start Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Start Time</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Start Time</em>' attribute.
+	 * @see #setStartTime(int)
+	 * @see modelling.ModellingPackage#getTimeTableRow_StartTime()
+	 * @model
+	 * @generated
+	 */
+	int getStartTime();
+
+	/**
+	 * Sets the value of the '{@link modelling.TimeTableRow#getStartTime <em>Start Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Start Time</em>' attribute.
+	 * @see #getStartTime()
+	 * @generated
+	 */
+	void setStartTime(int value);
+
+	/**
+	 * Returns the value of the '<em><b>End Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Time</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Time</em>' attribute.
+	 * @see #setEndTime(int)
+	 * @see modelling.ModellingPackage#getTimeTableRow_EndTime()
+	 * @model
+	 * @generated
+	 */
+	int getEndTime();
+
+	/**
+	 * Sets the value of the '{@link modelling.TimeTableRow#getEndTime <em>End Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Time</em>' attribute.
+	 * @see #getEndTime()
+	 * @generated
+	 */
+	void setEndTime(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link modelling.TeachingFormKind}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see modelling.TeachingFormKind
+	 * @see #setType(TeachingFormKind)
+	 * @see modelling.ModellingPackage#getTimeTableRow_Type()
+	 * @model
+	 * @generated
+	 */
+	TeachingFormKind getType();
+
+	/**
+	 * Sets the value of the '{@link modelling.TimeTableRow#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see modelling.TeachingFormKind
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(TeachingFormKind value);
+
+	/**
+	 * Returns the value of the '<em><b>Room</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Room</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Room</em>' attribute.
+	 * @see #setRoom(String)
+	 * @see modelling.ModellingPackage#getTimeTableRow_Room()
+	 * @model
+	 * @generated
+	 */
+	String getRoom();
+
+	/**
+	 * Sets the value of the '{@link modelling.TimeTableRow#getRoom <em>Room</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Room</em>' attribute.
+	 * @see #getRoom()
+	 * @generated
+	 */
+	void setRoom(String value);
+
+} // TimeTableRow
diff --git a/src-gen/modelling/impl/CourseImpl.java b/src-gen/modelling/impl/CourseImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe75f763460707ca0ec50cce6279e2fe26343437
--- /dev/null
+++ b/src-gen/modelling/impl/CourseImpl.java
@@ -0,0 +1,350 @@
+/**
+ */
+package modelling.impl;
+
+import java.util.Collection;
+
+import modelling.Course;
+import modelling.ModellingPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Course</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.CourseImpl#getCode <em>Code</em>}</li>
+ *   <li>{@link modelling.impl.CourseImpl#getName <em>Name</em>}</li>
+ *   <li>{@link modelling.impl.CourseImpl#getContent <em>Content</em>}</li>
+ *   <li>{@link modelling.impl.CourseImpl#getRecommendedCourses <em>Recommended Courses</em>}</li>
+ *   <li>{@link modelling.impl.CourseImpl#getRequiredCourses <em>Required Courses</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CourseImpl extends MinimalEObjectImpl.Container implements Course {
+	/**
+	 * The default value of the '{@link #getCode() <em>Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getCode() <em>Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String code = CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getContent() <em>Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTENT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getContent() <em>Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected String content = CONTENT_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getRecommendedCourses() <em>Recommended Courses</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecommendedCourses()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Course> recommendedCourses;
+
+	/**
+	 * The cached value of the '{@link #getRequiredCourses() <em>Required Courses</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRequiredCourses()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Course> requiredCourses;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CourseImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.COURSE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getCode() {
+		return code;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCode(String newCode) {
+		String oldCode = code;
+		code = newCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE__CODE, oldCode, code));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getContent() {
+		return content;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setContent(String newContent) {
+		String oldContent = content;
+		content = newContent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE__CONTENT, oldContent,
+					content));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Course> getRecommendedCourses() {
+		if (recommendedCourses == null) {
+			recommendedCourses = new EObjectResolvingEList<Course>(Course.class, this,
+					ModellingPackage.COURSE__RECOMMENDED_COURSES);
+		}
+		return recommendedCourses;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Course> getRequiredCourses() {
+		if (requiredCourses == null) {
+			requiredCourses = new EObjectResolvingEList<Course>(Course.class, this,
+					ModellingPackage.COURSE__REQUIRED_COURSES);
+		}
+		return requiredCourses;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.COURSE__CODE:
+			return getCode();
+		case ModellingPackage.COURSE__NAME:
+			return getName();
+		case ModellingPackage.COURSE__CONTENT:
+			return getContent();
+		case ModellingPackage.COURSE__RECOMMENDED_COURSES:
+			return getRecommendedCourses();
+		case ModellingPackage.COURSE__REQUIRED_COURSES:
+			return getRequiredCourses();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.COURSE__CODE:
+			setCode((String) newValue);
+			return;
+		case ModellingPackage.COURSE__NAME:
+			setName((String) newValue);
+			return;
+		case ModellingPackage.COURSE__CONTENT:
+			setContent((String) newValue);
+			return;
+		case ModellingPackage.COURSE__RECOMMENDED_COURSES:
+			getRecommendedCourses().clear();
+			getRecommendedCourses().addAll((Collection<? extends Course>) newValue);
+			return;
+		case ModellingPackage.COURSE__REQUIRED_COURSES:
+			getRequiredCourses().clear();
+			getRequiredCourses().addAll((Collection<? extends Course>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.COURSE__CODE:
+			setCode(CODE_EDEFAULT);
+			return;
+		case ModellingPackage.COURSE__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case ModellingPackage.COURSE__CONTENT:
+			setContent(CONTENT_EDEFAULT);
+			return;
+		case ModellingPackage.COURSE__RECOMMENDED_COURSES:
+			getRecommendedCourses().clear();
+			return;
+		case ModellingPackage.COURSE__REQUIRED_COURSES:
+			getRequiredCourses().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.COURSE__CODE:
+			return CODE_EDEFAULT == null ? code != null : !CODE_EDEFAULT.equals(code);
+		case ModellingPackage.COURSE__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case ModellingPackage.COURSE__CONTENT:
+			return CONTENT_EDEFAULT == null ? content != null : !CONTENT_EDEFAULT.equals(content);
+		case ModellingPackage.COURSE__RECOMMENDED_COURSES:
+			return recommendedCourses != null && !recommendedCourses.isEmpty();
+		case ModellingPackage.COURSE__REQUIRED_COURSES:
+			return requiredCourses != null && !requiredCourses.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (code: ");
+		result.append(code);
+		result.append(", name: ");
+		result.append(name);
+		result.append(", content: ");
+		result.append(content);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CourseImpl
diff --git a/src-gen/modelling/impl/CourseInstanceImpl.java b/src-gen/modelling/impl/CourseInstanceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..81ce190205cf4d1a7818907e2a593433cfbb1b36
--- /dev/null
+++ b/src-gen/modelling/impl/CourseInstanceImpl.java
@@ -0,0 +1,819 @@
+/**
+ */
+package modelling.impl;
+
+import java.util.Collection;
+
+import modelling.Course;
+import modelling.CourseInstance;
+import modelling.Department;
+import modelling.EvaluationForm;
+import modelling.ModellingPackage;
+import modelling.PointReduction;
+import modelling.Role;
+import modelling.Student;
+import modelling.TimeTableRow;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Course Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getSemesterYear <em>Semester Year</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getCredits <em>Credits</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getLabHours <em>Lab Hours</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getLectureHours <em>Lecture Hours</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getCourse <em>Course</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getStaff <em>Staff</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getPointreduction <em>Pointreduction</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getEvaluationform <em>Evaluationform</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getTimetablerow <em>Timetablerow</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getDepartment <em>Department</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getRegisteredStudent <em>Registered Student</em>}</li>
+ *   <li>{@link modelling.impl.CourseInstanceImpl#getPassedStudent <em>Passed Student</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CourseInstanceImpl extends MinimalEObjectImpl.Container implements CourseInstance {
+	/**
+	 * The default value of the '{@link #getSemesterYear() <em>Semester Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSemesterYear()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SEMESTER_YEAR_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSemesterYear() <em>Semester Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSemesterYear()
+	 * @generated
+	 * @ordered
+	 */
+	protected String semesterYear = SEMESTER_YEAR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCredits() <em>Credits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCredits()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float CREDITS_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getCredits() <em>Credits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCredits()
+	 * @generated
+	 * @ordered
+	 */
+	protected float credits = CREDITS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLabHours() <em>Lab Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabHours()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int LAB_HOURS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getLabHours() <em>Lab Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabHours()
+	 * @generated
+	 * @ordered
+	 */
+	protected int labHours = LAB_HOURS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLectureHours() <em>Lecture Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLectureHours()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int LECTURE_HOURS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getLectureHours() <em>Lecture Hours</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLectureHours()
+	 * @generated
+	 * @ordered
+	 */
+	protected int lectureHours = LECTURE_HOURS_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCourse() <em>Course</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCourse()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Course> course;
+
+	/**
+	 * The cached value of the '{@link #getStaff() <em>Staff</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStaff()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Role> staff;
+
+	/**
+	 * The cached value of the '{@link #getPointreduction() <em>Pointreduction</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPointreduction()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PointReduction> pointreduction;
+
+	/**
+	 * The cached value of the '{@link #getEvaluationform() <em>Evaluationform</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEvaluationform()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<EvaluationForm> evaluationform;
+
+	/**
+	 * The cached value of the '{@link #getTimetablerow() <em>Timetablerow</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimetablerow()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<TimeTableRow> timetablerow;
+
+	/**
+	 * The cached value of the '{@link #getDepartment() <em>Department</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepartment()
+	 * @generated
+	 * @ordered
+	 */
+	protected Department department;
+
+	/**
+	 * The cached value of the '{@link #getRegisteredStudent() <em>Registered Student</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRegisteredStudent()
+	 * @generated
+	 * @ordered
+	 */
+	protected Student registeredStudent;
+
+	/**
+	 * The cached value of the '{@link #getPassedStudent() <em>Passed Student</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPassedStudent()
+	 * @generated
+	 * @ordered
+	 */
+	protected Student passedStudent;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CourseInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.COURSE_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getSemesterYear() {
+		return semesterYear;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSemesterYear(String newSemesterYear) {
+		String oldSemesterYear = semesterYear;
+		semesterYear = newSemesterYear;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE_INSTANCE__SEMESTER_YEAR,
+					oldSemesterYear, semesterYear));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getCredits() {
+		return credits;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCredits(float newCredits) {
+		float oldCredits = credits;
+		credits = newCredits;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE_INSTANCE__CREDITS, oldCredits,
+					credits));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getLabHours() {
+		return labHours;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLabHours(int newLabHours) {
+		int oldLabHours = labHours;
+		labHours = newLabHours;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE_INSTANCE__LAB_HOURS,
+					oldLabHours, labHours));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getLectureHours() {
+		return lectureHours;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLectureHours(int newLectureHours) {
+		int oldLectureHours = lectureHours;
+		lectureHours = newLectureHours;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE_INSTANCE__LECTURE_HOURS,
+					oldLectureHours, lectureHours));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Course> getCourse() {
+		if (course == null) {
+			course = new EObjectContainmentEList<Course>(Course.class, this, ModellingPackage.COURSE_INSTANCE__COURSE);
+		}
+		return course;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Role> getStaff() {
+		if (staff == null) {
+			staff = new EObjectWithInverseResolvingEList<Role>(Role.class, this,
+					ModellingPackage.COURSE_INSTANCE__STAFF, ModellingPackage.ROLE__COURSEINSTANCE);
+		}
+		return staff;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<PointReduction> getPointreduction() {
+		if (pointreduction == null) {
+			pointreduction = new EObjectContainmentEList<PointReduction>(PointReduction.class, this,
+					ModellingPackage.COURSE_INSTANCE__POINTREDUCTION);
+		}
+		return pointreduction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<EvaluationForm> getEvaluationform() {
+		if (evaluationform == null) {
+			evaluationform = new EObjectContainmentEList<EvaluationForm>(EvaluationForm.class, this,
+					ModellingPackage.COURSE_INSTANCE__EVALUATIONFORM);
+		}
+		return evaluationform;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<TimeTableRow> getTimetablerow() {
+		if (timetablerow == null) {
+			timetablerow = new EObjectContainmentEList<TimeTableRow>(TimeTableRow.class, this,
+					ModellingPackage.COURSE_INSTANCE__TIMETABLEROW);
+		}
+		return timetablerow;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Department getDepartment() {
+		if (department != null && department.eIsProxy()) {
+			InternalEObject oldDepartment = (InternalEObject) department;
+			department = (Department) eResolveProxy(oldDepartment);
+			if (department != oldDepartment) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							ModellingPackage.COURSE_INSTANCE__DEPARTMENT, oldDepartment, department));
+			}
+		}
+		return department;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Department basicGetDepartment() {
+		return department;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDepartment(Department newDepartment) {
+		Department oldDepartment = department;
+		department = newDepartment;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE_INSTANCE__DEPARTMENT,
+					oldDepartment, department));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Student getRegisteredStudent() {
+		if (registeredStudent != null && registeredStudent.eIsProxy()) {
+			InternalEObject oldRegisteredStudent = (InternalEObject) registeredStudent;
+			registeredStudent = (Student) eResolveProxy(oldRegisteredStudent);
+			if (registeredStudent != oldRegisteredStudent) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT, oldRegisteredStudent,
+							registeredStudent));
+			}
+		}
+		return registeredStudent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Student basicGetRegisteredStudent() {
+		return registeredStudent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRegisteredStudent(Student newRegisteredStudent, NotificationChain msgs) {
+		Student oldRegisteredStudent = registeredStudent;
+		registeredStudent = newRegisteredStudent;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT, oldRegisteredStudent, newRegisteredStudent);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRegisteredStudent(Student newRegisteredStudent) {
+		if (newRegisteredStudent != registeredStudent) {
+			NotificationChain msgs = null;
+			if (registeredStudent != null)
+				msgs = ((InternalEObject) registeredStudent).eInverseRemove(this,
+						ModellingPackage.STUDENT__REGISTERED_FOR, Student.class, msgs);
+			if (newRegisteredStudent != null)
+				msgs = ((InternalEObject) newRegisteredStudent).eInverseAdd(this,
+						ModellingPackage.STUDENT__REGISTERED_FOR, Student.class, msgs);
+			msgs = basicSetRegisteredStudent(newRegisteredStudent, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT,
+					newRegisteredStudent, newRegisteredStudent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Student getPassedStudent() {
+		if (passedStudent != null && passedStudent.eIsProxy()) {
+			InternalEObject oldPassedStudent = (InternalEObject) passedStudent;
+			passedStudent = (Student) eResolveProxy(oldPassedStudent);
+			if (passedStudent != oldPassedStudent) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT, oldPassedStudent, passedStudent));
+			}
+		}
+		return passedStudent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Student basicGetPassedStudent() {
+		return passedStudent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPassedStudent(Student newPassedStudent, NotificationChain msgs) {
+		Student oldPassedStudent = passedStudent;
+		passedStudent = newPassedStudent;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT, oldPassedStudent, newPassedStudent);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPassedStudent(Student newPassedStudent) {
+		if (newPassedStudent != passedStudent) {
+			NotificationChain msgs = null;
+			if (passedStudent != null)
+				msgs = ((InternalEObject) passedStudent).eInverseRemove(this, ModellingPackage.STUDENT__EXAM_PASSED,
+						Student.class, msgs);
+			if (newPassedStudent != null)
+				msgs = ((InternalEObject) newPassedStudent).eInverseAdd(this, ModellingPackage.STUDENT__EXAM_PASSED,
+						Student.class, msgs);
+			msgs = basicSetPassedStudent(newPassedStudent, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT,
+					newPassedStudent, newPassedStudent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.COURSE_INSTANCE__STAFF:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getStaff()).basicAdd(otherEnd, msgs);
+		case ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT:
+			if (registeredStudent != null)
+				msgs = ((InternalEObject) registeredStudent).eInverseRemove(this,
+						ModellingPackage.STUDENT__REGISTERED_FOR, Student.class, msgs);
+			return basicSetRegisteredStudent((Student) otherEnd, msgs);
+		case ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT:
+			if (passedStudent != null)
+				msgs = ((InternalEObject) passedStudent).eInverseRemove(this, ModellingPackage.STUDENT__EXAM_PASSED,
+						Student.class, msgs);
+			return basicSetPassedStudent((Student) otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.COURSE_INSTANCE__COURSE:
+			return ((InternalEList<?>) getCourse()).basicRemove(otherEnd, msgs);
+		case ModellingPackage.COURSE_INSTANCE__STAFF:
+			return ((InternalEList<?>) getStaff()).basicRemove(otherEnd, msgs);
+		case ModellingPackage.COURSE_INSTANCE__POINTREDUCTION:
+			return ((InternalEList<?>) getPointreduction()).basicRemove(otherEnd, msgs);
+		case ModellingPackage.COURSE_INSTANCE__EVALUATIONFORM:
+			return ((InternalEList<?>) getEvaluationform()).basicRemove(otherEnd, msgs);
+		case ModellingPackage.COURSE_INSTANCE__TIMETABLEROW:
+			return ((InternalEList<?>) getTimetablerow()).basicRemove(otherEnd, msgs);
+		case ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT:
+			return basicSetRegisteredStudent(null, msgs);
+		case ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT:
+			return basicSetPassedStudent(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.COURSE_INSTANCE__SEMESTER_YEAR:
+			return getSemesterYear();
+		case ModellingPackage.COURSE_INSTANCE__CREDITS:
+			return getCredits();
+		case ModellingPackage.COURSE_INSTANCE__LAB_HOURS:
+			return getLabHours();
+		case ModellingPackage.COURSE_INSTANCE__LECTURE_HOURS:
+			return getLectureHours();
+		case ModellingPackage.COURSE_INSTANCE__COURSE:
+			return getCourse();
+		case ModellingPackage.COURSE_INSTANCE__STAFF:
+			return getStaff();
+		case ModellingPackage.COURSE_INSTANCE__POINTREDUCTION:
+			return getPointreduction();
+		case ModellingPackage.COURSE_INSTANCE__EVALUATIONFORM:
+			return getEvaluationform();
+		case ModellingPackage.COURSE_INSTANCE__TIMETABLEROW:
+			return getTimetablerow();
+		case ModellingPackage.COURSE_INSTANCE__DEPARTMENT:
+			if (resolve)
+				return getDepartment();
+			return basicGetDepartment();
+		case ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT:
+			if (resolve)
+				return getRegisteredStudent();
+			return basicGetRegisteredStudent();
+		case ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT:
+			if (resolve)
+				return getPassedStudent();
+			return basicGetPassedStudent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.COURSE_INSTANCE__SEMESTER_YEAR:
+			setSemesterYear((String) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__CREDITS:
+			setCredits((Float) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__LAB_HOURS:
+			setLabHours((Integer) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__LECTURE_HOURS:
+			setLectureHours((Integer) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__COURSE:
+			getCourse().clear();
+			getCourse().addAll((Collection<? extends Course>) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__STAFF:
+			getStaff().clear();
+			getStaff().addAll((Collection<? extends Role>) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__POINTREDUCTION:
+			getPointreduction().clear();
+			getPointreduction().addAll((Collection<? extends PointReduction>) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__EVALUATIONFORM:
+			getEvaluationform().clear();
+			getEvaluationform().addAll((Collection<? extends EvaluationForm>) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__TIMETABLEROW:
+			getTimetablerow().clear();
+			getTimetablerow().addAll((Collection<? extends TimeTableRow>) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__DEPARTMENT:
+			setDepartment((Department) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT:
+			setRegisteredStudent((Student) newValue);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT:
+			setPassedStudent((Student) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.COURSE_INSTANCE__SEMESTER_YEAR:
+			setSemesterYear(SEMESTER_YEAR_EDEFAULT);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__CREDITS:
+			setCredits(CREDITS_EDEFAULT);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__LAB_HOURS:
+			setLabHours(LAB_HOURS_EDEFAULT);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__LECTURE_HOURS:
+			setLectureHours(LECTURE_HOURS_EDEFAULT);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__COURSE:
+			getCourse().clear();
+			return;
+		case ModellingPackage.COURSE_INSTANCE__STAFF:
+			getStaff().clear();
+			return;
+		case ModellingPackage.COURSE_INSTANCE__POINTREDUCTION:
+			getPointreduction().clear();
+			return;
+		case ModellingPackage.COURSE_INSTANCE__EVALUATIONFORM:
+			getEvaluationform().clear();
+			return;
+		case ModellingPackage.COURSE_INSTANCE__TIMETABLEROW:
+			getTimetablerow().clear();
+			return;
+		case ModellingPackage.COURSE_INSTANCE__DEPARTMENT:
+			setDepartment((Department) null);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT:
+			setRegisteredStudent((Student) null);
+			return;
+		case ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT:
+			setPassedStudent((Student) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.COURSE_INSTANCE__SEMESTER_YEAR:
+			return SEMESTER_YEAR_EDEFAULT == null ? semesterYear != null : !SEMESTER_YEAR_EDEFAULT.equals(semesterYear);
+		case ModellingPackage.COURSE_INSTANCE__CREDITS:
+			return credits != CREDITS_EDEFAULT;
+		case ModellingPackage.COURSE_INSTANCE__LAB_HOURS:
+			return labHours != LAB_HOURS_EDEFAULT;
+		case ModellingPackage.COURSE_INSTANCE__LECTURE_HOURS:
+			return lectureHours != LECTURE_HOURS_EDEFAULT;
+		case ModellingPackage.COURSE_INSTANCE__COURSE:
+			return course != null && !course.isEmpty();
+		case ModellingPackage.COURSE_INSTANCE__STAFF:
+			return staff != null && !staff.isEmpty();
+		case ModellingPackage.COURSE_INSTANCE__POINTREDUCTION:
+			return pointreduction != null && !pointreduction.isEmpty();
+		case ModellingPackage.COURSE_INSTANCE__EVALUATIONFORM:
+			return evaluationform != null && !evaluationform.isEmpty();
+		case ModellingPackage.COURSE_INSTANCE__TIMETABLEROW:
+			return timetablerow != null && !timetablerow.isEmpty();
+		case ModellingPackage.COURSE_INSTANCE__DEPARTMENT:
+			return department != null;
+		case ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT:
+			return registeredStudent != null;
+		case ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT:
+			return passedStudent != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (semesterYear: ");
+		result.append(semesterYear);
+		result.append(", credits: ");
+		result.append(credits);
+		result.append(", labHours: ");
+		result.append(labHours);
+		result.append(", lectureHours: ");
+		result.append(lectureHours);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CourseInstanceImpl
diff --git a/src-gen/modelling/impl/DepartmentImpl.java b/src-gen/modelling/impl/DepartmentImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6bb0114891187fc3b0b94f22d523cf3f50f28840
--- /dev/null
+++ b/src-gen/modelling/impl/DepartmentImpl.java
@@ -0,0 +1,261 @@
+/**
+ */
+package modelling.impl;
+
+import java.util.Collection;
+
+import modelling.Department;
+import modelling.ModellingPackage;
+import modelling.Person;
+import modelling.StudyProgram;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Department</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.DepartmentImpl#getName <em>Name</em>}</li>
+ *   <li>{@link modelling.impl.DepartmentImpl#getStudyprogram <em>Studyprogram</em>}</li>
+ *   <li>{@link modelling.impl.DepartmentImpl#getPerson <em>Person</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DepartmentImpl extends MinimalEObjectImpl.Container implements Department {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getStudyprogram() <em>Studyprogram</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStudyprogram()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<StudyProgram> studyprogram;
+
+	/**
+	 * The cached value of the '{@link #getPerson() <em>Person</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPerson()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Person> person;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DepartmentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.DEPARTMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.DEPARTMENT__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<StudyProgram> getStudyprogram() {
+		if (studyprogram == null) {
+			studyprogram = new EObjectContainmentEList<StudyProgram>(StudyProgram.class, this,
+					ModellingPackage.DEPARTMENT__STUDYPROGRAM);
+		}
+		return studyprogram;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Person> getPerson() {
+		if (person == null) {
+			person = new EObjectContainmentEList<Person>(Person.class, this, ModellingPackage.DEPARTMENT__PERSON);
+		}
+		return person;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.DEPARTMENT__STUDYPROGRAM:
+			return ((InternalEList<?>) getStudyprogram()).basicRemove(otherEnd, msgs);
+		case ModellingPackage.DEPARTMENT__PERSON:
+			return ((InternalEList<?>) getPerson()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.DEPARTMENT__NAME:
+			return getName();
+		case ModellingPackage.DEPARTMENT__STUDYPROGRAM:
+			return getStudyprogram();
+		case ModellingPackage.DEPARTMENT__PERSON:
+			return getPerson();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.DEPARTMENT__NAME:
+			setName((String) newValue);
+			return;
+		case ModellingPackage.DEPARTMENT__STUDYPROGRAM:
+			getStudyprogram().clear();
+			getStudyprogram().addAll((Collection<? extends StudyProgram>) newValue);
+			return;
+		case ModellingPackage.DEPARTMENT__PERSON:
+			getPerson().clear();
+			getPerson().addAll((Collection<? extends Person>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.DEPARTMENT__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case ModellingPackage.DEPARTMENT__STUDYPROGRAM:
+			getStudyprogram().clear();
+			return;
+		case ModellingPackage.DEPARTMENT__PERSON:
+			getPerson().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.DEPARTMENT__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case ModellingPackage.DEPARTMENT__STUDYPROGRAM:
+			return studyprogram != null && !studyprogram.isEmpty();
+		case ModellingPackage.DEPARTMENT__PERSON:
+			return person != null && !person.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DepartmentImpl
diff --git a/src-gen/modelling/impl/EmployeeImpl.java b/src-gen/modelling/impl/EmployeeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ad84b8b41e3c74a3baf8ae41c3a23e417d7e5b97
--- /dev/null
+++ b/src-gen/modelling/impl/EmployeeImpl.java
@@ -0,0 +1,224 @@
+/**
+ */
+package modelling.impl;
+
+import java.util.Collection;
+
+import modelling.Employee;
+import modelling.ModellingPackage;
+import modelling.Role;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Employee</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.EmployeeImpl#getEmployeeID <em>Employee ID</em>}</li>
+ *   <li>{@link modelling.impl.EmployeeImpl#getRole <em>Role</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EmployeeImpl extends MinimalEObjectImpl.Container implements Employee {
+	/**
+	 * The default value of the '{@link #getEmployeeID() <em>Employee ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEmployeeID()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int EMPLOYEE_ID_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getEmployeeID() <em>Employee ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEmployeeID()
+	 * @generated
+	 * @ordered
+	 */
+	protected int employeeID = EMPLOYEE_ID_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getRole() <em>Role</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRole()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Role> role;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EmployeeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.EMPLOYEE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getEmployeeID() {
+		return employeeID;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEmployeeID(int newEmployeeID) {
+		int oldEmployeeID = employeeID;
+		employeeID = newEmployeeID;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.EMPLOYEE__EMPLOYEE_ID, oldEmployeeID,
+					employeeID));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Role> getRole() {
+		if (role == null) {
+			role = new EObjectContainmentEList<Role>(Role.class, this, ModellingPackage.EMPLOYEE__ROLE);
+		}
+		return role;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.EMPLOYEE__ROLE:
+			return ((InternalEList<?>) getRole()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.EMPLOYEE__EMPLOYEE_ID:
+			return getEmployeeID();
+		case ModellingPackage.EMPLOYEE__ROLE:
+			return getRole();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.EMPLOYEE__EMPLOYEE_ID:
+			setEmployeeID((Integer) newValue);
+			return;
+		case ModellingPackage.EMPLOYEE__ROLE:
+			getRole().clear();
+			getRole().addAll((Collection<? extends Role>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.EMPLOYEE__EMPLOYEE_ID:
+			setEmployeeID(EMPLOYEE_ID_EDEFAULT);
+			return;
+		case ModellingPackage.EMPLOYEE__ROLE:
+			getRole().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.EMPLOYEE__EMPLOYEE_ID:
+			return employeeID != EMPLOYEE_ID_EDEFAULT;
+		case ModellingPackage.EMPLOYEE__ROLE:
+			return role != null && !role.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (employeeID: ");
+		result.append(employeeID);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EmployeeImpl
diff --git a/src-gen/modelling/impl/EvaluationFormImpl.java b/src-gen/modelling/impl/EvaluationFormImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..12fb7d27e16a4b83419ddcb1a6ee24c84bef6081
--- /dev/null
+++ b/src-gen/modelling/impl/EvaluationFormImpl.java
@@ -0,0 +1,276 @@
+/**
+ */
+package modelling.impl;
+
+import modelling.EvaluationForm;
+import modelling.EvaluationFormKind;
+import modelling.ModellingPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Evaluation Form</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.EvaluationFormImpl#getPercentage <em>Percentage</em>}</li>
+ *   <li>{@link modelling.impl.EvaluationFormImpl#getContent <em>Content</em>}</li>
+ *   <li>{@link modelling.impl.EvaluationFormImpl#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EvaluationFormImpl extends MinimalEObjectImpl.Container implements EvaluationForm {
+	/**
+	 * The default value of the '{@link #getPercentage() <em>Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPercentage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int PERCENTAGE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getPercentage() <em>Percentage</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPercentage()
+	 * @generated
+	 * @ordered
+	 */
+	protected int percentage = PERCENTAGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getContent() <em>Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTENT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getContent() <em>Content</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContent()
+	 * @generated
+	 * @ordered
+	 */
+	protected String content = CONTENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final EvaluationFormKind TYPE_EDEFAULT = EvaluationFormKind.WRITTEN_EXAM;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected EvaluationFormKind type = TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EvaluationFormImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.EVALUATION_FORM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getPercentage() {
+		return percentage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPercentage(int newPercentage) {
+		int oldPercentage = percentage;
+		percentage = newPercentage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.EVALUATION_FORM__PERCENTAGE,
+					oldPercentage, percentage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getContent() {
+		return content;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setContent(String newContent) {
+		String oldContent = content;
+		content = newContent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.EVALUATION_FORM__CONTENT, oldContent,
+					content));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvaluationFormKind getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(EvaluationFormKind newType) {
+		EvaluationFormKind oldType = type;
+		type = newType == null ? TYPE_EDEFAULT : newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.EVALUATION_FORM__TYPE, oldType,
+					type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.EVALUATION_FORM__PERCENTAGE:
+			return getPercentage();
+		case ModellingPackage.EVALUATION_FORM__CONTENT:
+			return getContent();
+		case ModellingPackage.EVALUATION_FORM__TYPE:
+			return getType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.EVALUATION_FORM__PERCENTAGE:
+			setPercentage((Integer) newValue);
+			return;
+		case ModellingPackage.EVALUATION_FORM__CONTENT:
+			setContent((String) newValue);
+			return;
+		case ModellingPackage.EVALUATION_FORM__TYPE:
+			setType((EvaluationFormKind) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.EVALUATION_FORM__PERCENTAGE:
+			setPercentage(PERCENTAGE_EDEFAULT);
+			return;
+		case ModellingPackage.EVALUATION_FORM__CONTENT:
+			setContent(CONTENT_EDEFAULT);
+			return;
+		case ModellingPackage.EVALUATION_FORM__TYPE:
+			setType(TYPE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.EVALUATION_FORM__PERCENTAGE:
+			return percentage != PERCENTAGE_EDEFAULT;
+		case ModellingPackage.EVALUATION_FORM__CONTENT:
+			return CONTENT_EDEFAULT == null ? content != null : !CONTENT_EDEFAULT.equals(content);
+		case ModellingPackage.EVALUATION_FORM__TYPE:
+			return type != TYPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (percentage: ");
+		result.append(percentage);
+		result.append(", content: ");
+		result.append(content);
+		result.append(", type: ");
+		result.append(type);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EvaluationFormImpl
diff --git a/src-gen/modelling/impl/ModellingFactoryImpl.java b/src-gen/modelling/impl/ModellingFactoryImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..7c045b98b4bea530b8a4bfe745bf1a3d6f0bfc27
--- /dev/null
+++ b/src-gen/modelling/impl/ModellingFactoryImpl.java
@@ -0,0 +1,347 @@
+/**
+ */
+package modelling.impl;
+
+import modelling.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModellingFactoryImpl extends EFactoryImpl implements ModellingFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ModellingFactory init() {
+		try {
+			ModellingFactory theModellingFactory = (ModellingFactory) EPackage.Registry.INSTANCE
+					.getEFactory(ModellingPackage.eNS_URI);
+			if (theModellingFactory != null) {
+				return theModellingFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ModellingFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModellingFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case ModellingPackage.COURSE:
+			return createCourse();
+		case ModellingPackage.STUDY_PROGRAM:
+			return createStudyProgram();
+		case ModellingPackage.COURSE_INSTANCE:
+			return createCourseInstance();
+		case ModellingPackage.TIME_TABLE_ROW:
+			return createTimeTableRow();
+		case ModellingPackage.EVALUATION_FORM:
+			return createEvaluationForm();
+		case ModellingPackage.DEPARTMENT:
+			return createDepartment();
+		case ModellingPackage.POINT_REDUCTION:
+			return createPointReduction();
+		case ModellingPackage.ROLE:
+			return createRole();
+		case ModellingPackage.PERSON:
+			return createPerson();
+		case ModellingPackage.STUDENT:
+			return createStudent();
+		case ModellingPackage.EMPLOYEE:
+			return createEmployee();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+		case ModellingPackage.DAY_KIND:
+			return createDayKindFromString(eDataType, initialValue);
+		case ModellingPackage.ROLE_KIND:
+			return createRoleKindFromString(eDataType, initialValue);
+		case ModellingPackage.EVALUATION_FORM_KIND:
+			return createEvaluationFormKindFromString(eDataType, initialValue);
+		case ModellingPackage.TEACHING_FORM_KIND:
+			return createTeachingFormKindFromString(eDataType, initialValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+		case ModellingPackage.DAY_KIND:
+			return convertDayKindToString(eDataType, instanceValue);
+		case ModellingPackage.ROLE_KIND:
+			return convertRoleKindToString(eDataType, instanceValue);
+		case ModellingPackage.EVALUATION_FORM_KIND:
+			return convertEvaluationFormKindToString(eDataType, instanceValue);
+		case ModellingPackage.TEACHING_FORM_KIND:
+			return convertTeachingFormKindToString(eDataType, instanceValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Course createCourse() {
+		CourseImpl course = new CourseImpl();
+		return course;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StudyProgram createStudyProgram() {
+		StudyProgramImpl studyProgram = new StudyProgramImpl();
+		return studyProgram;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CourseInstance createCourseInstance() {
+		CourseInstanceImpl courseInstance = new CourseInstanceImpl();
+		return courseInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TimeTableRow createTimeTableRow() {
+		TimeTableRowImpl timeTableRow = new TimeTableRowImpl();
+		return timeTableRow;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvaluationForm createEvaluationForm() {
+		EvaluationFormImpl evaluationForm = new EvaluationFormImpl();
+		return evaluationForm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Department createDepartment() {
+		DepartmentImpl department = new DepartmentImpl();
+		return department;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PointReduction createPointReduction() {
+		PointReductionImpl pointReduction = new PointReductionImpl();
+		return pointReduction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Role createRole() {
+		RoleImpl role = new RoleImpl();
+		return role;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Person createPerson() {
+		PersonImpl person = new PersonImpl();
+		return person;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Student createStudent() {
+		StudentImpl student = new StudentImpl();
+		return student;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Employee createEmployee() {
+		EmployeeImpl employee = new EmployeeImpl();
+		return employee;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DayKind createDayKindFromString(EDataType eDataType, String initialValue) {
+		DayKind result = DayKind.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertDayKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RoleKind createRoleKindFromString(EDataType eDataType, String initialValue) {
+		RoleKind result = RoleKind.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertRoleKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EvaluationFormKind createEvaluationFormKindFromString(EDataType eDataType, String initialValue) {
+		EvaluationFormKind result = EvaluationFormKind.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertEvaluationFormKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TeachingFormKind createTeachingFormKindFromString(EDataType eDataType, String initialValue) {
+		TeachingFormKind result = TeachingFormKind.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertTeachingFormKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModellingPackage getModellingPackage() {
+		return (ModellingPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ModellingPackage getPackage() {
+		return ModellingPackage.eINSTANCE;
+	}
+
+} //ModellingFactoryImpl
diff --git a/src-gen/modelling/impl/ModellingPackageImpl.java b/src-gen/modelling/impl/ModellingPackageImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ec114cde5a1e517f5df5dedbc29ef86427b24ca
--- /dev/null
+++ b/src-gen/modelling/impl/ModellingPackageImpl.java
@@ -0,0 +1,1058 @@
+/**
+ */
+package modelling.impl;
+
+import modelling.Course;
+import modelling.CourseInstance;
+import modelling.DayKind;
+import modelling.Department;
+import modelling.Employee;
+import modelling.EvaluationForm;
+import modelling.EvaluationFormKind;
+import modelling.ModellingFactory;
+import modelling.ModellingPackage;
+import modelling.Person;
+import modelling.PointReduction;
+import modelling.Role;
+import modelling.RoleKind;
+import modelling.Student;
+import modelling.StudyProgram;
+import modelling.TeachingFormKind;
+import modelling.TimeTableRow;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModellingPackageImpl extends EPackageImpl implements ModellingPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass courseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass studyProgramEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass courseInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass timeTableRowEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass evaluationFormEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass departmentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pointReductionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass roleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass personEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass studentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass employeeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum dayKindEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum roleKindEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum evaluationFormKindEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum teachingFormKindEEnum = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see modelling.ModellingPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ModellingPackageImpl() {
+		super(eNS_URI, ModellingFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link ModellingPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static ModellingPackage init() {
+		if (isInited)
+			return (ModellingPackage) EPackage.Registry.INSTANCE.getEPackage(ModellingPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredModellingPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		ModellingPackageImpl theModellingPackage = registeredModellingPackage instanceof ModellingPackageImpl
+				? (ModellingPackageImpl) registeredModellingPackage
+				: new ModellingPackageImpl();
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theModellingPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theModellingPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theModellingPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(ModellingPackage.eNS_URI, theModellingPackage);
+		return theModellingPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCourse() {
+		return courseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCourse_Code() {
+		return (EAttribute) courseEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCourse_Name() {
+		return (EAttribute) courseEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCourse_Content() {
+		return (EAttribute) courseEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourse_RecommendedCourses() {
+		return (EReference) courseEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourse_RequiredCourses() {
+		return (EReference) courseEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStudyProgram() {
+		return studyProgramEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStudyProgram_Course() {
+		return (EReference) studyProgramEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStudyProgram_Name() {
+		return (EAttribute) studyProgramEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStudyProgram_Code() {
+		return (EAttribute) studyProgramEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCourseInstance() {
+		return courseInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCourseInstance_SemesterYear() {
+		return (EAttribute) courseInstanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCourseInstance_Credits() {
+		return (EAttribute) courseInstanceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCourseInstance_LabHours() {
+		return (EAttribute) courseInstanceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCourseInstance_LectureHours() {
+		return (EAttribute) courseInstanceEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourseInstance_Course() {
+		return (EReference) courseInstanceEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourseInstance_Staff() {
+		return (EReference) courseInstanceEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourseInstance_Pointreduction() {
+		return (EReference) courseInstanceEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourseInstance_Evaluationform() {
+		return (EReference) courseInstanceEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourseInstance_Timetablerow() {
+		return (EReference) courseInstanceEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourseInstance_Department() {
+		return (EReference) courseInstanceEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourseInstance_RegisteredStudent() {
+		return (EReference) courseInstanceEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourseInstance_PassedStudent() {
+		return (EReference) courseInstanceEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTimeTableRow() {
+		return timeTableRowEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTimeTableRow_Weekday() {
+		return (EAttribute) timeTableRowEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTimeTableRow_StartTime() {
+		return (EAttribute) timeTableRowEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTimeTableRow_EndTime() {
+		return (EAttribute) timeTableRowEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTimeTableRow_Type() {
+		return (EAttribute) timeTableRowEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTimeTableRow_Room() {
+		return (EAttribute) timeTableRowEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvaluationForm() {
+		return evaluationFormEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvaluationForm_Percentage() {
+		return (EAttribute) evaluationFormEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvaluationForm_Content() {
+		return (EAttribute) evaluationFormEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvaluationForm_Type() {
+		return (EAttribute) evaluationFormEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDepartment() {
+		return departmentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDepartment_Name() {
+		return (EAttribute) departmentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDepartment_Studyprogram() {
+		return (EReference) departmentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDepartment_Person() {
+		return (EReference) departmentEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPointReduction() {
+		return pointReductionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPointReduction_Reduction() {
+		return (EAttribute) pointReductionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPointReduction_Courseinstance() {
+		return (EReference) pointReductionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRole() {
+		return roleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getRole_Role() {
+		return (EAttribute) roleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRole_Courseinstance() {
+		return (EReference) roleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPerson() {
+		return personEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPerson_FirstName() {
+		return (EAttribute) personEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPerson_LastName() {
+		return (EAttribute) personEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerson_Student() {
+		return (EReference) personEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerson_Employee() {
+		return (EReference) personEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getStudent() {
+		return studentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getStudent_StudentID() {
+		return (EAttribute) studentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStudent_RegisteredFor() {
+		return (EReference) studentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStudent_ExamPassed() {
+		return (EReference) studentEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getStudent_Studyprogram() {
+		return (EReference) studentEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEmployee() {
+		return employeeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEmployee_EmployeeID() {
+		return (EAttribute) employeeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEmployee_Role() {
+		return (EReference) employeeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getDayKind() {
+		return dayKindEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getRoleKind() {
+		return roleKindEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getEvaluationFormKind() {
+		return evaluationFormKindEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getTeachingFormKind() {
+		return teachingFormKindEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModellingFactory getModellingFactory() {
+		return (ModellingFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		courseEClass = createEClass(COURSE);
+		createEAttribute(courseEClass, COURSE__CODE);
+		createEAttribute(courseEClass, COURSE__NAME);
+		createEAttribute(courseEClass, COURSE__CONTENT);
+		createEReference(courseEClass, COURSE__RECOMMENDED_COURSES);
+		createEReference(courseEClass, COURSE__REQUIRED_COURSES);
+
+		studyProgramEClass = createEClass(STUDY_PROGRAM);
+		createEReference(studyProgramEClass, STUDY_PROGRAM__COURSE);
+		createEAttribute(studyProgramEClass, STUDY_PROGRAM__NAME);
+		createEAttribute(studyProgramEClass, STUDY_PROGRAM__CODE);
+
+		courseInstanceEClass = createEClass(COURSE_INSTANCE);
+		createEAttribute(courseInstanceEClass, COURSE_INSTANCE__SEMESTER_YEAR);
+		createEAttribute(courseInstanceEClass, COURSE_INSTANCE__CREDITS);
+		createEAttribute(courseInstanceEClass, COURSE_INSTANCE__LAB_HOURS);
+		createEAttribute(courseInstanceEClass, COURSE_INSTANCE__LECTURE_HOURS);
+		createEReference(courseInstanceEClass, COURSE_INSTANCE__COURSE);
+		createEReference(courseInstanceEClass, COURSE_INSTANCE__STAFF);
+		createEReference(courseInstanceEClass, COURSE_INSTANCE__POINTREDUCTION);
+		createEReference(courseInstanceEClass, COURSE_INSTANCE__EVALUATIONFORM);
+		createEReference(courseInstanceEClass, COURSE_INSTANCE__TIMETABLEROW);
+		createEReference(courseInstanceEClass, COURSE_INSTANCE__DEPARTMENT);
+		createEReference(courseInstanceEClass, COURSE_INSTANCE__REGISTERED_STUDENT);
+		createEReference(courseInstanceEClass, COURSE_INSTANCE__PASSED_STUDENT);
+
+		timeTableRowEClass = createEClass(TIME_TABLE_ROW);
+		createEAttribute(timeTableRowEClass, TIME_TABLE_ROW__WEEKDAY);
+		createEAttribute(timeTableRowEClass, TIME_TABLE_ROW__START_TIME);
+		createEAttribute(timeTableRowEClass, TIME_TABLE_ROW__END_TIME);
+		createEAttribute(timeTableRowEClass, TIME_TABLE_ROW__TYPE);
+		createEAttribute(timeTableRowEClass, TIME_TABLE_ROW__ROOM);
+
+		evaluationFormEClass = createEClass(EVALUATION_FORM);
+		createEAttribute(evaluationFormEClass, EVALUATION_FORM__PERCENTAGE);
+		createEAttribute(evaluationFormEClass, EVALUATION_FORM__CONTENT);
+		createEAttribute(evaluationFormEClass, EVALUATION_FORM__TYPE);
+
+		departmentEClass = createEClass(DEPARTMENT);
+		createEAttribute(departmentEClass, DEPARTMENT__NAME);
+		createEReference(departmentEClass, DEPARTMENT__STUDYPROGRAM);
+		createEReference(departmentEClass, DEPARTMENT__PERSON);
+
+		pointReductionEClass = createEClass(POINT_REDUCTION);
+		createEAttribute(pointReductionEClass, POINT_REDUCTION__REDUCTION);
+		createEReference(pointReductionEClass, POINT_REDUCTION__COURSEINSTANCE);
+
+		roleEClass = createEClass(ROLE);
+		createEAttribute(roleEClass, ROLE__ROLE);
+		createEReference(roleEClass, ROLE__COURSEINSTANCE);
+
+		personEClass = createEClass(PERSON);
+		createEAttribute(personEClass, PERSON__FIRST_NAME);
+		createEAttribute(personEClass, PERSON__LAST_NAME);
+		createEReference(personEClass, PERSON__STUDENT);
+		createEReference(personEClass, PERSON__EMPLOYEE);
+
+		studentEClass = createEClass(STUDENT);
+		createEAttribute(studentEClass, STUDENT__STUDENT_ID);
+		createEReference(studentEClass, STUDENT__REGISTERED_FOR);
+		createEReference(studentEClass, STUDENT__EXAM_PASSED);
+		createEReference(studentEClass, STUDENT__STUDYPROGRAM);
+
+		employeeEClass = createEClass(EMPLOYEE);
+		createEAttribute(employeeEClass, EMPLOYEE__EMPLOYEE_ID);
+		createEReference(employeeEClass, EMPLOYEE__ROLE);
+
+		// Create enums
+		dayKindEEnum = createEEnum(DAY_KIND);
+		roleKindEEnum = createEEnum(ROLE_KIND);
+		evaluationFormKindEEnum = createEEnum(EVALUATION_FORM_KIND);
+		teachingFormKindEEnum = createEEnum(TEACHING_FORM_KIND);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(courseEClass, Course.class, "Course", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCourse_Code(), ecorePackage.getEString(), "code", null, 0, 1, Course.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCourse_Name(), ecorePackage.getEString(), "name", null, 0, 1, Course.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCourse_Content(), ecorePackage.getEString(), "content", null, 0, 1, Course.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourse_RecommendedCourses(), this.getCourse(), null, "recommendedCourses", null, 0, -1,
+				Course.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourse_RequiredCourses(), this.getCourse(), null, "requiredCourses", null, 0, -1,
+				Course.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(studyProgramEClass, StudyProgram.class, "StudyProgram", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStudyProgram_Course(), this.getCourse(), null, "course", null, 0, -1, StudyProgram.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStudyProgram_Name(), ecorePackage.getEString(), "name", null, 0, 1, StudyProgram.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getStudyProgram_Code(), ecorePackage.getEString(), "code", null, 0, 1, StudyProgram.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(courseInstanceEClass, CourseInstance.class, "CourseInstance", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCourseInstance_SemesterYear(), ecorePackage.getEString(), "semesterYear", null, 0, 1,
+				CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCourseInstance_Credits(), ecorePackage.getEFloat(), "credits", null, 0, 1,
+				CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCourseInstance_LabHours(), ecorePackage.getEInt(), "labHours", null, 0, 1,
+				CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCourseInstance_LectureHours(), ecorePackage.getEInt(), "lectureHours", null, 0, 1,
+				CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getCourseInstance_Course(), this.getCourse(), null, "course", null, 0, -1, CourseInstance.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourseInstance_Staff(), this.getRole(), this.getRole_Courseinstance(), "staff", null, 0, -1,
+				CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourseInstance_Pointreduction(), this.getPointReduction(), null, "pointreduction", null, 0,
+				-1, CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourseInstance_Evaluationform(), this.getEvaluationForm(), null, "evaluationform", null, 0,
+				-1, CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourseInstance_Timetablerow(), this.getTimeTableRow(), null, "timetablerow", null, 0, -1,
+				CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourseInstance_Department(), this.getDepartment(), null, "department", null, 0, 1,
+				CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourseInstance_RegisteredStudent(), this.getStudent(), this.getStudent_RegisteredFor(),
+				"registeredStudent", null, 0, 1, CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourseInstance_PassedStudent(), this.getStudent(), this.getStudent_ExamPassed(),
+				"passedStudent", null, 0, 1, CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(timeTableRowEClass, TimeTableRow.class, "TimeTableRow", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTimeTableRow_Weekday(), this.getDayKind(), "weekday", null, 0, 1, TimeTableRow.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTimeTableRow_StartTime(), ecorePackage.getEInt(), "startTime", null, 0, 1, TimeTableRow.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTimeTableRow_EndTime(), ecorePackage.getEInt(), "endTime", null, 0, 1, TimeTableRow.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTimeTableRow_Type(), this.getTeachingFormKind(), "type", null, 0, 1, TimeTableRow.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTimeTableRow_Room(), ecorePackage.getEString(), "room", null, 0, 1, TimeTableRow.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(evaluationFormEClass, EvaluationForm.class, "EvaluationForm", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEvaluationForm_Percentage(), ecorePackage.getEInt(), "percentage", null, 0, 1,
+				EvaluationForm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvaluationForm_Content(), ecorePackage.getEString(), "content", null, 0, 1,
+				EvaluationForm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEvaluationForm_Type(), this.getEvaluationFormKind(), "type", null, 0, 1, EvaluationForm.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(departmentEClass, Department.class, "Department", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDepartment_Name(), ecorePackage.getEString(), "name", null, 0, 1, Department.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDepartment_Studyprogram(), this.getStudyProgram(), null, "studyprogram", null, 0, -1,
+				Department.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDepartment_Person(), this.getPerson(), null, "person", null, 0, -1, Department.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(pointReductionEClass, PointReduction.class, "PointReduction", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPointReduction_Reduction(), ecorePackage.getEFloat(), "reduction", null, 0, 1,
+				PointReduction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getPointReduction_Courseinstance(), this.getCourseInstance(), null, "courseinstance", null, 0,
+				-1, PointReduction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(roleEClass, Role.class, "Role", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getRole_Role(), this.getRoleKind(), "role", null, 0, 1, Role.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRole_Courseinstance(), this.getCourseInstance(), this.getCourseInstance_Staff(),
+				"courseinstance", null, 0, 1, Role.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(personEClass, Person.class, "Person", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPerson_FirstName(), ecorePackage.getEString(), "firstName", null, 0, 1, Person.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPerson_LastName(), ecorePackage.getEString(), "lastName", null, 0, 1, Person.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerson_Student(), this.getStudent(), null, "student", null, 0, 1, Person.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getPerson_Employee(), this.getEmployee(), null, "employee", null, 0, 1, Person.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(studentEClass, Student.class, "Student", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStudent_StudentID(), ecorePackage.getEInt(), "studentID", null, 0, 1, Student.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStudent_RegisteredFor(), this.getCourseInstance(), this.getCourseInstance_RegisteredStudent(),
+				"registeredFor", null, 0, -1, Student.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStudent_ExamPassed(), this.getCourseInstance(), this.getCourseInstance_PassedStudent(),
+				"examPassed", null, 0, -1, Student.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStudent_Studyprogram(), this.getStudyProgram(), null, "studyprogram", null, 0, 1,
+				Student.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(employeeEClass, Employee.class, "Employee", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEmployee_EmployeeID(), ecorePackage.getEInt(), "employeeID", null, 0, 1, Employee.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEmployee_Role(), this.getRole(), null, "role", null, 0, -1, Employee.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(dayKindEEnum, DayKind.class, "DayKind");
+		addEEnumLiteral(dayKindEEnum, DayKind.MONDAY);
+		addEEnumLiteral(dayKindEEnum, DayKind.TUESDAY);
+		addEEnumLiteral(dayKindEEnum, DayKind.WEDNESDAY);
+		addEEnumLiteral(dayKindEEnum, DayKind.THURSDAY);
+		addEEnumLiteral(dayKindEEnum, DayKind.FRIDAY);
+		addEEnumLiteral(dayKindEEnum, DayKind.SATURDAY);
+		addEEnumLiteral(dayKindEEnum, DayKind.SUNDAY);
+
+		initEEnum(roleKindEEnum, RoleKind.class, "RoleKind");
+		addEEnumLiteral(roleKindEEnum, RoleKind.LECTURER);
+		addEEnumLiteral(roleKindEEnum, RoleKind.COORDINATOR);
+		addEEnumLiteral(roleKindEEnum, RoleKind.STUDENT_ASSISTANT);
+		addEEnumLiteral(roleKindEEnum, RoleKind.TEACHER_ASSISTANT);
+
+		initEEnum(evaluationFormKindEEnum, EvaluationFormKind.class, "EvaluationFormKind");
+		addEEnumLiteral(evaluationFormKindEEnum, EvaluationFormKind.WRITTEN_EXAM);
+		addEEnumLiteral(evaluationFormKindEEnum, EvaluationFormKind.ORAL_EXAM);
+		addEEnumLiteral(evaluationFormKindEEnum, EvaluationFormKind.EXERCISES);
+		addEEnumLiteral(evaluationFormKindEEnum, EvaluationFormKind.PROJECT);
+
+		initEEnum(teachingFormKindEEnum, TeachingFormKind.class, "TeachingFormKind");
+		addEEnumLiteral(teachingFormKindEEnum, TeachingFormKind.LECTURE);
+		addEEnumLiteral(teachingFormKindEEnum, TeachingFormKind.LAB);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //ModellingPackageImpl
diff --git a/src-gen/modelling/impl/PersonImpl.java b/src-gen/modelling/impl/PersonImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..93c28dc354e7a2072e8ad747bd4101efd76099ad
--- /dev/null
+++ b/src-gen/modelling/impl/PersonImpl.java
@@ -0,0 +1,382 @@
+/**
+ */
+package modelling.impl;
+
+import modelling.Employee;
+import modelling.ModellingPackage;
+import modelling.Person;
+import modelling.Student;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Person</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.PersonImpl#getFirstName <em>First Name</em>}</li>
+ *   <li>{@link modelling.impl.PersonImpl#getLastName <em>Last Name</em>}</li>
+ *   <li>{@link modelling.impl.PersonImpl#getStudent <em>Student</em>}</li>
+ *   <li>{@link modelling.impl.PersonImpl#getEmployee <em>Employee</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PersonImpl extends MinimalEObjectImpl.Container implements Person {
+	/**
+	 * The default value of the '{@link #getFirstName() <em>First Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFirstName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FIRST_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFirstName() <em>First Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFirstName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String firstName = FIRST_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLastName() <em>Last Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LAST_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLastName() <em>Last Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String lastName = LAST_NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getStudent() <em>Student</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStudent()
+	 * @generated
+	 * @ordered
+	 */
+	protected Student student;
+
+	/**
+	 * The cached value of the '{@link #getEmployee() <em>Employee</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEmployee()
+	 * @generated
+	 * @ordered
+	 */
+	protected Employee employee;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PersonImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.PERSON;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFirstName() {
+		return firstName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFirstName(String newFirstName) {
+		String oldFirstName = firstName;
+		firstName = newFirstName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.PERSON__FIRST_NAME, oldFirstName,
+					firstName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLastName() {
+		return lastName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLastName(String newLastName) {
+		String oldLastName = lastName;
+		lastName = newLastName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.PERSON__LAST_NAME, oldLastName,
+					lastName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Student getStudent() {
+		return student;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetStudent(Student newStudent, NotificationChain msgs) {
+		Student oldStudent = student;
+		student = newStudent;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					ModellingPackage.PERSON__STUDENT, oldStudent, newStudent);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStudent(Student newStudent) {
+		if (newStudent != student) {
+			NotificationChain msgs = null;
+			if (student != null)
+				msgs = ((InternalEObject) student).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - ModellingPackage.PERSON__STUDENT, null, msgs);
+			if (newStudent != null)
+				msgs = ((InternalEObject) newStudent).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - ModellingPackage.PERSON__STUDENT, null, msgs);
+			msgs = basicSetStudent(newStudent, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.PERSON__STUDENT, newStudent,
+					newStudent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Employee getEmployee() {
+		return employee;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetEmployee(Employee newEmployee, NotificationChain msgs) {
+		Employee oldEmployee = employee;
+		employee = newEmployee;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					ModellingPackage.PERSON__EMPLOYEE, oldEmployee, newEmployee);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEmployee(Employee newEmployee) {
+		if (newEmployee != employee) {
+			NotificationChain msgs = null;
+			if (employee != null)
+				msgs = ((InternalEObject) employee).eInverseRemove(this,
+						EOPPOSITE_FEATURE_BASE - ModellingPackage.PERSON__EMPLOYEE, null, msgs);
+			if (newEmployee != null)
+				msgs = ((InternalEObject) newEmployee).eInverseAdd(this,
+						EOPPOSITE_FEATURE_BASE - ModellingPackage.PERSON__EMPLOYEE, null, msgs);
+			msgs = basicSetEmployee(newEmployee, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.PERSON__EMPLOYEE, newEmployee,
+					newEmployee));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.PERSON__STUDENT:
+			return basicSetStudent(null, msgs);
+		case ModellingPackage.PERSON__EMPLOYEE:
+			return basicSetEmployee(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.PERSON__FIRST_NAME:
+			return getFirstName();
+		case ModellingPackage.PERSON__LAST_NAME:
+			return getLastName();
+		case ModellingPackage.PERSON__STUDENT:
+			return getStudent();
+		case ModellingPackage.PERSON__EMPLOYEE:
+			return getEmployee();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.PERSON__FIRST_NAME:
+			setFirstName((String) newValue);
+			return;
+		case ModellingPackage.PERSON__LAST_NAME:
+			setLastName((String) newValue);
+			return;
+		case ModellingPackage.PERSON__STUDENT:
+			setStudent((Student) newValue);
+			return;
+		case ModellingPackage.PERSON__EMPLOYEE:
+			setEmployee((Employee) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.PERSON__FIRST_NAME:
+			setFirstName(FIRST_NAME_EDEFAULT);
+			return;
+		case ModellingPackage.PERSON__LAST_NAME:
+			setLastName(LAST_NAME_EDEFAULT);
+			return;
+		case ModellingPackage.PERSON__STUDENT:
+			setStudent((Student) null);
+			return;
+		case ModellingPackage.PERSON__EMPLOYEE:
+			setEmployee((Employee) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.PERSON__FIRST_NAME:
+			return FIRST_NAME_EDEFAULT == null ? firstName != null : !FIRST_NAME_EDEFAULT.equals(firstName);
+		case ModellingPackage.PERSON__LAST_NAME:
+			return LAST_NAME_EDEFAULT == null ? lastName != null : !LAST_NAME_EDEFAULT.equals(lastName);
+		case ModellingPackage.PERSON__STUDENT:
+			return student != null;
+		case ModellingPackage.PERSON__EMPLOYEE:
+			return employee != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (firstName: ");
+		result.append(firstName);
+		result.append(", lastName: ");
+		result.append(lastName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PersonImpl
diff --git a/src-gen/modelling/impl/PointReductionImpl.java b/src-gen/modelling/impl/PointReductionImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b5488b9e4f3e031aae257157c23d82bab4ea6423
--- /dev/null
+++ b/src-gen/modelling/impl/PointReductionImpl.java
@@ -0,0 +1,208 @@
+/**
+ */
+package modelling.impl;
+
+import java.util.Collection;
+
+import modelling.CourseInstance;
+import modelling.ModellingPackage;
+import modelling.PointReduction;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Point Reduction</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.PointReductionImpl#getReduction <em>Reduction</em>}</li>
+ *   <li>{@link modelling.impl.PointReductionImpl#getCourseinstance <em>Courseinstance</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PointReductionImpl extends MinimalEObjectImpl.Container implements PointReduction {
+	/**
+	 * The default value of the '{@link #getReduction() <em>Reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReduction()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float REDUCTION_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getReduction() <em>Reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReduction()
+	 * @generated
+	 * @ordered
+	 */
+	protected float reduction = REDUCTION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCourseinstance() <em>Courseinstance</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCourseinstance()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CourseInstance> courseinstance;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PointReductionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.POINT_REDUCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getReduction() {
+		return reduction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReduction(float newReduction) {
+		float oldReduction = reduction;
+		reduction = newReduction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.POINT_REDUCTION__REDUCTION,
+					oldReduction, reduction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CourseInstance> getCourseinstance() {
+		if (courseinstance == null) {
+			courseinstance = new EObjectResolvingEList<CourseInstance>(CourseInstance.class, this,
+					ModellingPackage.POINT_REDUCTION__COURSEINSTANCE);
+		}
+		return courseinstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.POINT_REDUCTION__REDUCTION:
+			return getReduction();
+		case ModellingPackage.POINT_REDUCTION__COURSEINSTANCE:
+			return getCourseinstance();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.POINT_REDUCTION__REDUCTION:
+			setReduction((Float) newValue);
+			return;
+		case ModellingPackage.POINT_REDUCTION__COURSEINSTANCE:
+			getCourseinstance().clear();
+			getCourseinstance().addAll((Collection<? extends CourseInstance>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.POINT_REDUCTION__REDUCTION:
+			setReduction(REDUCTION_EDEFAULT);
+			return;
+		case ModellingPackage.POINT_REDUCTION__COURSEINSTANCE:
+			getCourseinstance().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.POINT_REDUCTION__REDUCTION:
+			return reduction != REDUCTION_EDEFAULT;
+		case ModellingPackage.POINT_REDUCTION__COURSEINSTANCE:
+			return courseinstance != null && !courseinstance.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (reduction: ");
+		result.append(reduction);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PointReductionImpl
diff --git a/src-gen/modelling/impl/RoleImpl.java b/src-gen/modelling/impl/RoleImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..671937d3883632777e31b45990296e49b8a83a32
--- /dev/null
+++ b/src-gen/modelling/impl/RoleImpl.java
@@ -0,0 +1,290 @@
+/**
+ */
+package modelling.impl;
+
+import modelling.CourseInstance;
+import modelling.ModellingPackage;
+import modelling.Role;
+import modelling.RoleKind;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Role</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.RoleImpl#getRole <em>Role</em>}</li>
+ *   <li>{@link modelling.impl.RoleImpl#getCourseinstance <em>Courseinstance</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RoleImpl extends MinimalEObjectImpl.Container implements Role {
+	/**
+	 * The default value of the '{@link #getRole() <em>Role</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRole()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final RoleKind ROLE_EDEFAULT = RoleKind.LECTURER;
+
+	/**
+	 * The cached value of the '{@link #getRole() <em>Role</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRole()
+	 * @generated
+	 * @ordered
+	 */
+	protected RoleKind role = ROLE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCourseinstance() <em>Courseinstance</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCourseinstance()
+	 * @generated
+	 * @ordered
+	 */
+	protected CourseInstance courseinstance;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RoleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.ROLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RoleKind getRole() {
+		return role;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRole(RoleKind newRole) {
+		RoleKind oldRole = role;
+		role = newRole == null ? ROLE_EDEFAULT : newRole;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.ROLE__ROLE, oldRole, role));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CourseInstance getCourseinstance() {
+		if (courseinstance != null && courseinstance.eIsProxy()) {
+			InternalEObject oldCourseinstance = (InternalEObject) courseinstance;
+			courseinstance = (CourseInstance) eResolveProxy(oldCourseinstance);
+			if (courseinstance != oldCourseinstance) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModellingPackage.ROLE__COURSEINSTANCE,
+							oldCourseinstance, courseinstance));
+			}
+		}
+		return courseinstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CourseInstance basicGetCourseinstance() {
+		return courseinstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCourseinstance(CourseInstance newCourseinstance, NotificationChain msgs) {
+		CourseInstance oldCourseinstance = courseinstance;
+		courseinstance = newCourseinstance;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+					ModellingPackage.ROLE__COURSEINSTANCE, oldCourseinstance, newCourseinstance);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCourseinstance(CourseInstance newCourseinstance) {
+		if (newCourseinstance != courseinstance) {
+			NotificationChain msgs = null;
+			if (courseinstance != null)
+				msgs = ((InternalEObject) courseinstance).eInverseRemove(this, ModellingPackage.COURSE_INSTANCE__STAFF,
+						CourseInstance.class, msgs);
+			if (newCourseinstance != null)
+				msgs = ((InternalEObject) newCourseinstance).eInverseAdd(this, ModellingPackage.COURSE_INSTANCE__STAFF,
+						CourseInstance.class, msgs);
+			msgs = basicSetCourseinstance(newCourseinstance, msgs);
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.ROLE__COURSEINSTANCE,
+					newCourseinstance, newCourseinstance));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.ROLE__COURSEINSTANCE:
+			if (courseinstance != null)
+				msgs = ((InternalEObject) courseinstance).eInverseRemove(this, ModellingPackage.COURSE_INSTANCE__STAFF,
+						CourseInstance.class, msgs);
+			return basicSetCourseinstance((CourseInstance) otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.ROLE__COURSEINSTANCE:
+			return basicSetCourseinstance(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.ROLE__ROLE:
+			return getRole();
+		case ModellingPackage.ROLE__COURSEINSTANCE:
+			if (resolve)
+				return getCourseinstance();
+			return basicGetCourseinstance();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.ROLE__ROLE:
+			setRole((RoleKind) newValue);
+			return;
+		case ModellingPackage.ROLE__COURSEINSTANCE:
+			setCourseinstance((CourseInstance) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.ROLE__ROLE:
+			setRole(ROLE_EDEFAULT);
+			return;
+		case ModellingPackage.ROLE__COURSEINSTANCE:
+			setCourseinstance((CourseInstance) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.ROLE__ROLE:
+			return role != ROLE_EDEFAULT;
+		case ModellingPackage.ROLE__COURSEINSTANCE:
+			return courseinstance != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (role: ");
+		result.append(role);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RoleImpl
diff --git a/src-gen/modelling/impl/StudentImpl.java b/src-gen/modelling/impl/StudentImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e8234dab656ab77173365f5c5a018a34bbeeff1
--- /dev/null
+++ b/src-gen/modelling/impl/StudentImpl.java
@@ -0,0 +1,343 @@
+/**
+ */
+package modelling.impl;
+
+import java.util.Collection;
+
+import modelling.CourseInstance;
+import modelling.ModellingPackage;
+import modelling.Student;
+import modelling.StudyProgram;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Student</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.StudentImpl#getStudentID <em>Student ID</em>}</li>
+ *   <li>{@link modelling.impl.StudentImpl#getRegisteredFor <em>Registered For</em>}</li>
+ *   <li>{@link modelling.impl.StudentImpl#getExamPassed <em>Exam Passed</em>}</li>
+ *   <li>{@link modelling.impl.StudentImpl#getStudyprogram <em>Studyprogram</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StudentImpl extends MinimalEObjectImpl.Container implements Student {
+	/**
+	 * The default value of the '{@link #getStudentID() <em>Student ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStudentID()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int STUDENT_ID_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getStudentID() <em>Student ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStudentID()
+	 * @generated
+	 * @ordered
+	 */
+	protected int studentID = STUDENT_ID_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getRegisteredFor() <em>Registered For</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRegisteredFor()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CourseInstance> registeredFor;
+
+	/**
+	 * The cached value of the '{@link #getExamPassed() <em>Exam Passed</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExamPassed()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CourseInstance> examPassed;
+
+	/**
+	 * The cached value of the '{@link #getStudyprogram() <em>Studyprogram</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStudyprogram()
+	 * @generated
+	 * @ordered
+	 */
+	protected StudyProgram studyprogram;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StudentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.STUDENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getStudentID() {
+		return studentID;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStudentID(int newStudentID) {
+		int oldStudentID = studentID;
+		studentID = newStudentID;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.STUDENT__STUDENT_ID, oldStudentID,
+					studentID));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CourseInstance> getRegisteredFor() {
+		if (registeredFor == null) {
+			registeredFor = new EObjectWithInverseResolvingEList<CourseInstance>(CourseInstance.class, this,
+					ModellingPackage.STUDENT__REGISTERED_FOR, ModellingPackage.COURSE_INSTANCE__REGISTERED_STUDENT);
+		}
+		return registeredFor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CourseInstance> getExamPassed() {
+		if (examPassed == null) {
+			examPassed = new EObjectWithInverseResolvingEList<CourseInstance>(CourseInstance.class, this,
+					ModellingPackage.STUDENT__EXAM_PASSED, ModellingPackage.COURSE_INSTANCE__PASSED_STUDENT);
+		}
+		return examPassed;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StudyProgram getStudyprogram() {
+		if (studyprogram != null && studyprogram.eIsProxy()) {
+			InternalEObject oldStudyprogram = (InternalEObject) studyprogram;
+			studyprogram = (StudyProgram) eResolveProxy(oldStudyprogram);
+			if (studyprogram != oldStudyprogram) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModellingPackage.STUDENT__STUDYPROGRAM,
+							oldStudyprogram, studyprogram));
+			}
+		}
+		return studyprogram;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StudyProgram basicGetStudyprogram() {
+		return studyprogram;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStudyprogram(StudyProgram newStudyprogram) {
+		StudyProgram oldStudyprogram = studyprogram;
+		studyprogram = newStudyprogram;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.STUDENT__STUDYPROGRAM,
+					oldStudyprogram, studyprogram));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.STUDENT__REGISTERED_FOR:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getRegisteredFor()).basicAdd(otherEnd, msgs);
+		case ModellingPackage.STUDENT__EXAM_PASSED:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getExamPassed()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.STUDENT__REGISTERED_FOR:
+			return ((InternalEList<?>) getRegisteredFor()).basicRemove(otherEnd, msgs);
+		case ModellingPackage.STUDENT__EXAM_PASSED:
+			return ((InternalEList<?>) getExamPassed()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.STUDENT__STUDENT_ID:
+			return getStudentID();
+		case ModellingPackage.STUDENT__REGISTERED_FOR:
+			return getRegisteredFor();
+		case ModellingPackage.STUDENT__EXAM_PASSED:
+			return getExamPassed();
+		case ModellingPackage.STUDENT__STUDYPROGRAM:
+			if (resolve)
+				return getStudyprogram();
+			return basicGetStudyprogram();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.STUDENT__STUDENT_ID:
+			setStudentID((Integer) newValue);
+			return;
+		case ModellingPackage.STUDENT__REGISTERED_FOR:
+			getRegisteredFor().clear();
+			getRegisteredFor().addAll((Collection<? extends CourseInstance>) newValue);
+			return;
+		case ModellingPackage.STUDENT__EXAM_PASSED:
+			getExamPassed().clear();
+			getExamPassed().addAll((Collection<? extends CourseInstance>) newValue);
+			return;
+		case ModellingPackage.STUDENT__STUDYPROGRAM:
+			setStudyprogram((StudyProgram) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.STUDENT__STUDENT_ID:
+			setStudentID(STUDENT_ID_EDEFAULT);
+			return;
+		case ModellingPackage.STUDENT__REGISTERED_FOR:
+			getRegisteredFor().clear();
+			return;
+		case ModellingPackage.STUDENT__EXAM_PASSED:
+			getExamPassed().clear();
+			return;
+		case ModellingPackage.STUDENT__STUDYPROGRAM:
+			setStudyprogram((StudyProgram) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.STUDENT__STUDENT_ID:
+			return studentID != STUDENT_ID_EDEFAULT;
+		case ModellingPackage.STUDENT__REGISTERED_FOR:
+			return registeredFor != null && !registeredFor.isEmpty();
+		case ModellingPackage.STUDENT__EXAM_PASSED:
+			return examPassed != null && !examPassed.isEmpty();
+		case ModellingPackage.STUDENT__STUDYPROGRAM:
+			return studyprogram != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (studentID: ");
+		result.append(studentID);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StudentImpl
diff --git a/src-gen/modelling/impl/StudyProgramImpl.java b/src-gen/modelling/impl/StudyProgramImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a9e452b599e208405b67a0874cb199e54fc8387
--- /dev/null
+++ b/src-gen/modelling/impl/StudyProgramImpl.java
@@ -0,0 +1,277 @@
+/**
+ */
+package modelling.impl;
+
+import java.util.Collection;
+
+import modelling.Course;
+import modelling.ModellingPackage;
+import modelling.StudyProgram;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Study Program</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.StudyProgramImpl#getCourse <em>Course</em>}</li>
+ *   <li>{@link modelling.impl.StudyProgramImpl#getName <em>Name</em>}</li>
+ *   <li>{@link modelling.impl.StudyProgramImpl#getCode <em>Code</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StudyProgramImpl extends MinimalEObjectImpl.Container implements StudyProgram {
+	/**
+	 * The cached value of the '{@link #getCourse() <em>Course</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCourse()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Course> course;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCode() <em>Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getCode() <em>Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String code = CODE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StudyProgramImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.STUDY_PROGRAM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Course> getCourse() {
+		if (course == null) {
+			course = new EObjectContainmentEList<Course>(Course.class, this, ModellingPackage.STUDY_PROGRAM__COURSE);
+		}
+		return course;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.STUDY_PROGRAM__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getCode() {
+		return code;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCode(String newCode) {
+		String oldCode = code;
+		code = newCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.STUDY_PROGRAM__CODE, oldCode, code));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ModellingPackage.STUDY_PROGRAM__COURSE:
+			return ((InternalEList<?>) getCourse()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.STUDY_PROGRAM__COURSE:
+			return getCourse();
+		case ModellingPackage.STUDY_PROGRAM__NAME:
+			return getName();
+		case ModellingPackage.STUDY_PROGRAM__CODE:
+			return getCode();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.STUDY_PROGRAM__COURSE:
+			getCourse().clear();
+			getCourse().addAll((Collection<? extends Course>) newValue);
+			return;
+		case ModellingPackage.STUDY_PROGRAM__NAME:
+			setName((String) newValue);
+			return;
+		case ModellingPackage.STUDY_PROGRAM__CODE:
+			setCode((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.STUDY_PROGRAM__COURSE:
+			getCourse().clear();
+			return;
+		case ModellingPackage.STUDY_PROGRAM__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case ModellingPackage.STUDY_PROGRAM__CODE:
+			setCode(CODE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.STUDY_PROGRAM__COURSE:
+			return course != null && !course.isEmpty();
+		case ModellingPackage.STUDY_PROGRAM__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case ModellingPackage.STUDY_PROGRAM__CODE:
+			return CODE_EDEFAULT == null ? code != null : !CODE_EDEFAULT.equals(code);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", code: ");
+		result.append(code);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StudyProgramImpl
diff --git a/src-gen/modelling/impl/TimeTableRowImpl.java b/src-gen/modelling/impl/TimeTableRowImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..232e1c55489b74b19cfa489f1a1393d490d8632b
--- /dev/null
+++ b/src-gen/modelling/impl/TimeTableRowImpl.java
@@ -0,0 +1,387 @@
+/**
+ */
+package modelling.impl;
+
+import modelling.DayKind;
+import modelling.ModellingPackage;
+import modelling.TeachingFormKind;
+import modelling.TimeTableRow;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Time Table Row</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link modelling.impl.TimeTableRowImpl#getWeekday <em>Weekday</em>}</li>
+ *   <li>{@link modelling.impl.TimeTableRowImpl#getStartTime <em>Start Time</em>}</li>
+ *   <li>{@link modelling.impl.TimeTableRowImpl#getEndTime <em>End Time</em>}</li>
+ *   <li>{@link modelling.impl.TimeTableRowImpl#getType <em>Type</em>}</li>
+ *   <li>{@link modelling.impl.TimeTableRowImpl#getRoom <em>Room</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TimeTableRowImpl extends MinimalEObjectImpl.Container implements TimeTableRow {
+	/**
+	 * The default value of the '{@link #getWeekday() <em>Weekday</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWeekday()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final DayKind WEEKDAY_EDEFAULT = DayKind.MONDAY;
+
+	/**
+	 * The cached value of the '{@link #getWeekday() <em>Weekday</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWeekday()
+	 * @generated
+	 * @ordered
+	 */
+	protected DayKind weekday = WEEKDAY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getStartTime() <em>Start Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStartTime()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int START_TIME_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getStartTime() <em>Start Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStartTime()
+	 * @generated
+	 * @ordered
+	 */
+	protected int startTime = START_TIME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEndTime() <em>End Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndTime()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int END_TIME_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getEndTime() <em>End Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndTime()
+	 * @generated
+	 * @ordered
+	 */
+	protected int endTime = END_TIME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final TeachingFormKind TYPE_EDEFAULT = TeachingFormKind.LECTURE;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected TeachingFormKind type = TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getRoom() <em>Room</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRoom()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ROOM_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getRoom() <em>Room</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRoom()
+	 * @generated
+	 * @ordered
+	 */
+	protected String room = ROOM_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TimeTableRowImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModellingPackage.Literals.TIME_TABLE_ROW;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DayKind getWeekday() {
+		return weekday;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWeekday(DayKind newWeekday) {
+		DayKind oldWeekday = weekday;
+		weekday = newWeekday == null ? WEEKDAY_EDEFAULT : newWeekday;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.TIME_TABLE_ROW__WEEKDAY, oldWeekday,
+					weekday));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getStartTime() {
+		return startTime;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStartTime(int newStartTime) {
+		int oldStartTime = startTime;
+		startTime = newStartTime;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.TIME_TABLE_ROW__START_TIME,
+					oldStartTime, startTime));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getEndTime() {
+		return endTime;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndTime(int newEndTime) {
+		int oldEndTime = endTime;
+		endTime = newEndTime;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.TIME_TABLE_ROW__END_TIME, oldEndTime,
+					endTime));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TeachingFormKind getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(TeachingFormKind newType) {
+		TeachingFormKind oldType = type;
+		type = newType == null ? TYPE_EDEFAULT : newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.TIME_TABLE_ROW__TYPE, oldType,
+					type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getRoom() {
+		return room;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRoom(String newRoom) {
+		String oldRoom = room;
+		room = newRoom;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModellingPackage.TIME_TABLE_ROW__ROOM, oldRoom,
+					room));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ModellingPackage.TIME_TABLE_ROW__WEEKDAY:
+			return getWeekday();
+		case ModellingPackage.TIME_TABLE_ROW__START_TIME:
+			return getStartTime();
+		case ModellingPackage.TIME_TABLE_ROW__END_TIME:
+			return getEndTime();
+		case ModellingPackage.TIME_TABLE_ROW__TYPE:
+			return getType();
+		case ModellingPackage.TIME_TABLE_ROW__ROOM:
+			return getRoom();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ModellingPackage.TIME_TABLE_ROW__WEEKDAY:
+			setWeekday((DayKind) newValue);
+			return;
+		case ModellingPackage.TIME_TABLE_ROW__START_TIME:
+			setStartTime((Integer) newValue);
+			return;
+		case ModellingPackage.TIME_TABLE_ROW__END_TIME:
+			setEndTime((Integer) newValue);
+			return;
+		case ModellingPackage.TIME_TABLE_ROW__TYPE:
+			setType((TeachingFormKind) newValue);
+			return;
+		case ModellingPackage.TIME_TABLE_ROW__ROOM:
+			setRoom((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.TIME_TABLE_ROW__WEEKDAY:
+			setWeekday(WEEKDAY_EDEFAULT);
+			return;
+		case ModellingPackage.TIME_TABLE_ROW__START_TIME:
+			setStartTime(START_TIME_EDEFAULT);
+			return;
+		case ModellingPackage.TIME_TABLE_ROW__END_TIME:
+			setEndTime(END_TIME_EDEFAULT);
+			return;
+		case ModellingPackage.TIME_TABLE_ROW__TYPE:
+			setType(TYPE_EDEFAULT);
+			return;
+		case ModellingPackage.TIME_TABLE_ROW__ROOM:
+			setRoom(ROOM_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ModellingPackage.TIME_TABLE_ROW__WEEKDAY:
+			return weekday != WEEKDAY_EDEFAULT;
+		case ModellingPackage.TIME_TABLE_ROW__START_TIME:
+			return startTime != START_TIME_EDEFAULT;
+		case ModellingPackage.TIME_TABLE_ROW__END_TIME:
+			return endTime != END_TIME_EDEFAULT;
+		case ModellingPackage.TIME_TABLE_ROW__TYPE:
+			return type != TYPE_EDEFAULT;
+		case ModellingPackage.TIME_TABLE_ROW__ROOM:
+			return ROOM_EDEFAULT == null ? room != null : !ROOM_EDEFAULT.equals(room);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (weekday: ");
+		result.append(weekday);
+		result.append(", startTime: ");
+		result.append(startTime);
+		result.append(", endTime: ");
+		result.append(endTime);
+		result.append(", type: ");
+		result.append(type);
+		result.append(", room: ");
+		result.append(room);
+		result.append(')');
+		return result.toString();
+	}
+
+} //TimeTableRowImpl
diff --git a/src-gen/modelling/util/ModellingAdapterFactory.java b/src-gen/modelling/util/ModellingAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..ab94732226089ff2c8ef85b2540ad158aa108854
--- /dev/null
+++ b/src-gen/modelling/util/ModellingAdapterFactory.java
@@ -0,0 +1,309 @@
+/**
+ */
+package modelling.util;
+
+import modelling.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see modelling.ModellingPackage
+ * @generated
+ */
+public class ModellingAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ModellingPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModellingAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ModellingPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ModellingSwitch<Adapter> modelSwitch = new ModellingSwitch<Adapter>() {
+		@Override
+		public Adapter caseCourse(Course object) {
+			return createCourseAdapter();
+		}
+
+		@Override
+		public Adapter caseStudyProgram(StudyProgram object) {
+			return createStudyProgramAdapter();
+		}
+
+		@Override
+		public Adapter caseCourseInstance(CourseInstance object) {
+			return createCourseInstanceAdapter();
+		}
+
+		@Override
+		public Adapter caseTimeTableRow(TimeTableRow object) {
+			return createTimeTableRowAdapter();
+		}
+
+		@Override
+		public Adapter caseEvaluationForm(EvaluationForm object) {
+			return createEvaluationFormAdapter();
+		}
+
+		@Override
+		public Adapter caseDepartment(Department object) {
+			return createDepartmentAdapter();
+		}
+
+		@Override
+		public Adapter casePointReduction(PointReduction object) {
+			return createPointReductionAdapter();
+		}
+
+		@Override
+		public Adapter caseRole(Role object) {
+			return createRoleAdapter();
+		}
+
+		@Override
+		public Adapter casePerson(Person object) {
+			return createPersonAdapter();
+		}
+
+		@Override
+		public Adapter caseStudent(Student object) {
+			return createStudentAdapter();
+		}
+
+		@Override
+		public Adapter caseEmployee(Employee object) {
+			return createEmployeeAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.Course <em>Course</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.Course
+	 * @generated
+	 */
+	public Adapter createCourseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.StudyProgram <em>Study Program</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.StudyProgram
+	 * @generated
+	 */
+	public Adapter createStudyProgramAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.CourseInstance <em>Course Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.CourseInstance
+	 * @generated
+	 */
+	public Adapter createCourseInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.TimeTableRow <em>Time Table Row</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.TimeTableRow
+	 * @generated
+	 */
+	public Adapter createTimeTableRowAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.EvaluationForm <em>Evaluation Form</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.EvaluationForm
+	 * @generated
+	 */
+	public Adapter createEvaluationFormAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.Department <em>Department</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.Department
+	 * @generated
+	 */
+	public Adapter createDepartmentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.PointReduction <em>Point Reduction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.PointReduction
+	 * @generated
+	 */
+	public Adapter createPointReductionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.Role <em>Role</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.Role
+	 * @generated
+	 */
+	public Adapter createRoleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.Person <em>Person</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.Person
+	 * @generated
+	 */
+	public Adapter createPersonAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.Student <em>Student</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.Student
+	 * @generated
+	 */
+	public Adapter createStudentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link modelling.Employee <em>Employee</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see modelling.Employee
+	 * @generated
+	 */
+	public Adapter createEmployeeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //ModellingAdapterFactory
diff --git a/src-gen/modelling/util/ModellingSwitch.java b/src-gen/modelling/util/ModellingSwitch.java
new file mode 100644
index 0000000000000000000000000000000000000000..3c17215934377e7cee7dcb2f17076c325e862027
--- /dev/null
+++ b/src-gen/modelling/util/ModellingSwitch.java
@@ -0,0 +1,332 @@
+/**
+ */
+package modelling.util;
+
+import modelling.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see modelling.ModellingPackage
+ * @generated
+ */
+public class ModellingSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ModellingPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModellingSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ModellingPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case ModellingPackage.COURSE: {
+			Course course = (Course) theEObject;
+			T result = caseCourse(course);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.STUDY_PROGRAM: {
+			StudyProgram studyProgram = (StudyProgram) theEObject;
+			T result = caseStudyProgram(studyProgram);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.COURSE_INSTANCE: {
+			CourseInstance courseInstance = (CourseInstance) theEObject;
+			T result = caseCourseInstance(courseInstance);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.TIME_TABLE_ROW: {
+			TimeTableRow timeTableRow = (TimeTableRow) theEObject;
+			T result = caseTimeTableRow(timeTableRow);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.EVALUATION_FORM: {
+			EvaluationForm evaluationForm = (EvaluationForm) theEObject;
+			T result = caseEvaluationForm(evaluationForm);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.DEPARTMENT: {
+			Department department = (Department) theEObject;
+			T result = caseDepartment(department);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.POINT_REDUCTION: {
+			PointReduction pointReduction = (PointReduction) theEObject;
+			T result = casePointReduction(pointReduction);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.ROLE: {
+			Role role = (Role) theEObject;
+			T result = caseRole(role);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.PERSON: {
+			Person person = (Person) theEObject;
+			T result = casePerson(person);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.STUDENT: {
+			Student student = (Student) theEObject;
+			T result = caseStudent(student);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case ModellingPackage.EMPLOYEE: {
+			Employee employee = (Employee) theEObject;
+			T result = caseEmployee(employee);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Course</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Course</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCourse(Course object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Study Program</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Study Program</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStudyProgram(StudyProgram object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Course Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Course Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCourseInstance(CourseInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Time Table Row</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Time Table Row</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTimeTableRow(TimeTableRow object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Evaluation Form</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Evaluation Form</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEvaluationForm(EvaluationForm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Department</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Department</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDepartment(Department object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Point Reduction</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Point Reduction</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePointReduction(PointReduction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Role</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Role</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRole(Role object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Person</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Person</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerson(Person object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Student</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Student</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStudent(Student object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Employee</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Employee</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEmployee(Employee object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //ModellingSwitch