[modellib] Restructure and rename models to conform naming convention

Bug 546278

Change-Id: Ic0f4eee83307a7ae14eb0b6cfa3c85cd13d71a18
diff --git a/examples/org.eclipse.etrice.examples.c/model/Features/Attributes.room b/examples/org.eclipse.etrice.examples.c/model/Features/Attributes.room
index 7cde46e..00caa3a 100644
--- a/examples/org.eclipse.etrice.examples.c/model/Features/Attributes.room
+++ b/examples/org.eclipse.etrice.examples.c/model/Features/Attributes.room
@@ -1,10 +1,10 @@
 RoomModel Attributes {
 
-	import room.basic.types.boolean
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.uint32
-	import room.basic.types.voidType
+	import etrice.api.types.boolean
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.uint32
+	import etrice.api.types.voidType
 
 	DataClass SimpleDataClass {
 		Attribute attribute1: int16
diff --git a/examples/org.eclipse.etrice.examples.c/model/Features/CommunicationAndExecutionTypes.room b/examples/org.eclipse.etrice.examples.c/model/Features/CommunicationAndExecutionTypes.room
index c050fff..153317e 100644
--- a/examples/org.eclipse.etrice.examples.c/model/Features/CommunicationAndExecutionTypes.room
+++ b/examples/org.eclipse.etrice.examples.c/model/Features/CommunicationAndExecutionTypes.room
@@ -1,8 +1,8 @@
 RoomModel CommunicationAndExecutionTypes {
 
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.uint32
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.uint32
 
 	DataClass AnotherSimpleDataClass {
 		Attribute attribute1: int16
diff --git a/examples/org.eclipse.etrice.examples.c/model/Features/DataTypes.room b/examples/org.eclipse.etrice.examples.c/model/Features/DataTypes.room
index 150eb54..0803222 100644
--- a/examples/org.eclipse.etrice.examples.c/model/Features/DataTypes.room
+++ b/examples/org.eclipse.etrice.examples.c/model/Features/DataTypes.room
@@ -1,11 +1,11 @@
 RoomModel DataTypes {
 
 	// For PrimitiveType examples see Types.room
-	import room.basic.types.boolean
-	import room.basic.types.uint16
-	import room.basic.types.uint32
-	import room.basic.types.charPtr
-	import room.basic.types.voidType
+	import etrice.api.types.boolean
+	import etrice.api.types.uint16
+	import etrice.api.types.uint32
+	import etrice.api.types.charPtr
+	import etrice.api.types.voidType
 
 	DataClass SimpleDataClass {
 		Attribute attribute1: uint16
diff --git a/examples/org.eclipse.etrice.examples.c/model/Features/Inheritance.room b/examples/org.eclipse.etrice.examples.c/model/Features/Inheritance.room
index 8690c44..769c0b4 100644
--- a/examples/org.eclipse.etrice.examples.c/model/Features/Inheritance.room
+++ b/examples/org.eclipse.etrice.examples.c/model/Features/Inheritance.room
@@ -1,6 +1,6 @@
 RoomModel Inheritance {
 
-	import room.basic.types.uint32
+	import etrice.api.types.uint32
 
 	ActorClass ActorSubClass extends ActorBaseClass {
 		// inherits all elements from super type hierarchy
diff --git a/examples/org.eclipse.etrice.examples.c/model/Features/Multiplicity.room b/examples/org.eclipse.etrice.examples.c/model/Features/Multiplicity.room
index 8219f79..e91c56b 100644
--- a/examples/org.eclipse.etrice.examples.c/model/Features/Multiplicity.room
+++ b/examples/org.eclipse.etrice.examples.c/model/Features/Multiplicity.room
@@ -1,7 +1,7 @@
 RoomModel Multiplicity {
 
-	import room.basic.types.char
-	import room.basic.types.int16
+	import etrice.api.types.char
+	import etrice.api.types.int16
 
 	ActorClass ExampleMultiplicity {
 		Structure {
diff --git a/examples/org.eclipse.etrice.examples.c/model/Features/Operations.room b/examples/org.eclipse.etrice.examples.c/model/Features/Operations.room
index 860fded..065e24a 100644
--- a/examples/org.eclipse.etrice.examples.c/model/Features/Operations.room
+++ b/examples/org.eclipse.etrice.examples.c/model/Features/Operations.room
@@ -1,10 +1,10 @@
 RoomModel Operations {
 
-	import room.basic.types.boolean
-	import room.basic.types.int32
-	import room.basic.types.uint32
-	import room.basic.types.charPtr
-	import room.basic.types.voidType
+	import etrice.api.types.boolean
+	import etrice.api.types.int32
+	import etrice.api.types.uint32
+	import etrice.api.types.charPtr
+	import etrice.api.types.voidType
 
 	DataClass DataClassWithOperation {
 		Attribute attribute1: uint32
diff --git a/examples/org.eclipse.etrice.examples.c/model/Features/ProtocolClasses.room b/examples/org.eclipse.etrice.examples.c/model/Features/ProtocolClasses.room
index 2ab183e..7b89f1c 100644
--- a/examples/org.eclipse.etrice.examples.c/model/Features/ProtocolClasses.room
+++ b/examples/org.eclipse.etrice.examples.c/model/Features/ProtocolClasses.room
@@ -1,7 +1,7 @@
 RoomModel ProtocolClasses {
 	
-	import room.basic.types.int16
-	import room.basic.types.int32
+	import etrice.api.types.int16
+	import etrice.api.types.int32
 
 	// eventdriven ProtocolClass (asynchronous message passing, bidirectional)
 	eventdriven ProtocolClass ProtocolClassEvt {
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight/TrafficLight.room b/examples/org.eclipse.etrice.examples.c/model/TrafficLight/TrafficLight.room
index 05a2408..8423233 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight/TrafficLight.room
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight/TrafficLight.room
@@ -1,12 +1,12 @@
 RoomModel TrafficLight {
 
-	import room.basic.types.boolean
-	import room.basic.types.char
-	import room.basic.types.int32
-	import room.basic.service.timing.PTimer
-	import room.basic.service.tcp.PTcpPayload
-	import room.basic.service.tcp.PTcpControl
-	import room.basic.service.tcp.ATcpClient
+	import etrice.api.types.boolean
+	import etrice.api.types.char
+	import etrice.api.types.int32
+	import etrice.api.timer.PTimer
+	import etrice.api.tcp.PTcpPayload
+	import etrice.api.tcp.PTcpControl
+	import etrice.api.tcp.ATcpClient
 
 	ActorClass TestApplication ["The TestApplication contains the PedestrianTrafficLightController and its test harness."] {
 		Structure {
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step1/TrafficLight_step1.room b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step1/TrafficLight_step1.room
index bab0221..b4fd90d 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step1/TrafficLight_step1.room
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step1/TrafficLight_step1.room
@@ -1,7 +1,7 @@
 RoomModel TrafficLight_step1 {
 
 	import TrafficLight.TestApplication
-	import room.basic.service.timing.ATimingService
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem TrafficLight {
 		SubSystemRef subSystem: TrafficLightStep1_Test
@@ -9,7 +9,7 @@
 
 	SubSystemClass TrafficLightStep1_Test {
 		ActorRef step1_TestApplication: TestApplication
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref step1_TestApplication satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step1/diagrams/TrafficLight_step1.TrafficLightStep1_Test.structure b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step1/diagrams/TrafficLight_step1.TrafficLightStep1_Test.structure
index bc8260e..45b9e1c 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step1/diagrams/TrafficLight_step1.TrafficLightStep1_Test.structure
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step1/diagrams/TrafficLight_step1.TrafficLightStep1_Test.structure
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of TrafficLightStep1_Test" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.15.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of TrafficLightStep1_Test" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@children.0/@children.1/@children.3/@link //@connections.0/@link" verticalGridUnit="10" version="0.14.0">
   <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
   <link>
     <businessObjects href="../TrafficLight_step1.room#SubSystemClass:TrafficLightStep1_Test"/>
@@ -246,7 +246,7 @@
       </anchors>
       <children visible="true">
         <properties key="actorref_graphic_element" value="name_shape"/>
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimingService)"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimerService)"/>
       </children>
       <children>
         <properties key="actorref_graphic_element" value="size_shape"/>
@@ -256,20 +256,35 @@
         <properties key="obj-type" value="port"/>
         <properties key="inherited" value="false"/>
         <properties key="item-kind" value=""/>
-        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="90">
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="119">
           <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
         </graphicsAlgorithm>
         <link>
-          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/TimingService.room#SPP:ATimingService$timer"/>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$supervisionControl"/>
         </link>
-        <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <children visible="true">
+          <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="supervisionControl"/>
+        </children>
+      </children>
+      <children xsi:type="pi:ContainerShape" visible="true" active="true">
+        <properties key="obj-type" value="port"/>
+        <properties key="inherited" value="false"/>
+        <properties key="item-kind" value=""/>
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="59">
+          <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+        </graphicsAlgorithm>
+        <link>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$timer"/>
+        </link>
+        <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
         <children visible="true">
           <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="timer"/>
         </children>
       </children>
     </children>
   </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.2/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.3/@anchors.0">
     <properties key="obj-type" value="conn"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0"/>
     <link>
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step2/TrafficLight_step2.room b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step2/TrafficLight_step2.room
index 3261e37..385a094 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step2/TrafficLight_step2.room
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step2/TrafficLight_step2.room
@@ -1,14 +1,14 @@
 RoomModel TrafficLight_step2 {
 
 	import TrafficLight.SingleTrafficLight
-	import room.basic.service.timing.ATimingService
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem TrafficLight {
 		SubSystemRef subSystem: TrafficLightStep2_SingleTrafficLight
 	}
 
 	SubSystemClass TrafficLightStep2_SingleTrafficLight {
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		ActorRef step2_SingleTrafficLight: SingleTrafficLight
 		LayerConnection ref step2_SingleTrafficLight satisfied_by timingService.timer
 		LogicalThread defaultThread
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step2/diagrams/TrafficLight_step2.TrafficLightStep2_SingleTrafficLight.structure b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step2/diagrams/TrafficLight_step2.TrafficLightStep2_SingleTrafficLight.structure
index 99a940c..911973c 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step2/diagrams/TrafficLight_step2.TrafficLightStep2_SingleTrafficLight.structure
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step2/diagrams/TrafficLight_step2.TrafficLightStep2_SingleTrafficLight.structure
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of TrafficLightStep2_SingleTrafficLight" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.15.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of TrafficLightStep2_SingleTrafficLight" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@children.0/@children.1/@children.3/@link //@connections.0/@link" verticalGridUnit="10" version="0.14.0">
   <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
   <link>
     <businessObjects href="../TrafficLight_step2.room#SubSystemClass:TrafficLightStep2_SingleTrafficLight"/>
@@ -246,7 +246,7 @@
       </anchors>
       <children visible="true">
         <properties key="actorref_graphic_element" value="name_shape"/>
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimingService)"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimerService)"/>
       </children>
       <children>
         <properties key="actorref_graphic_element" value="size_shape"/>
@@ -256,17 +256,32 @@
         <properties key="obj-type" value="port"/>
         <properties key="inherited" value="false"/>
         <properties key="item-kind" value=""/>
-        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="90">
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="59">
           <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
         </graphicsAlgorithm>
         <link>
-          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/TimingService.room#SPP:ATimingService$timer"/>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$timer"/>
         </link>
         <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
         <children visible="true">
           <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="timer"/>
         </children>
       </children>
+      <children xsi:type="pi:ContainerShape" visible="true" active="true">
+        <properties key="obj-type" value="port"/>
+        <properties key="inherited" value="false"/>
+        <properties key="item-kind" value=""/>
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="119">
+          <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+        </graphicsAlgorithm>
+        <link>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$supervisionControl"/>
+        </link>
+        <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <children visible="true">
+          <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="supervisionControl"/>
+        </children>
+      </children>
     </children>
   </children>
   <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.2/@anchors.0">
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step3/TrafficLight_step3.room b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step3/TrafficLight_step3.room
index 6a38264..87b5adc 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step3/TrafficLight_step3.room
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step3/TrafficLight_step3.room
@@ -1,14 +1,14 @@
 RoomModel TrafficLight_step3 {
 
 	import TrafficLight.FlatReplication
-	import room.basic.service.timing.ATimingService
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem TrafficLight {
 		SubSystemRef subSystem: TrafficLightStep3_MultipleTrafficLights
 	}
 
 	SubSystemClass TrafficLightStep3_MultipleTrafficLights {
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		ActorRef step3_FlatReplication: FlatReplication
 		LayerConnection ref step3_FlatReplication satisfied_by timingService.timer
 
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step3/diagrams/TrafficLight_step3.TrafficLightStep3_MultipleTrafficLights.structure b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step3/diagrams/TrafficLight_step3.TrafficLightStep3_MultipleTrafficLights.structure
index 262ef7d..8015964 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step3/diagrams/TrafficLight_step3.TrafficLightStep3_MultipleTrafficLights.structure
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step3/diagrams/TrafficLight_step3.TrafficLightStep3_MultipleTrafficLights.structure
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of TrafficLightStep3_MultipleTrafficLights" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.15.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of TrafficLightStep3_MultipleTrafficLights" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@children.0/@children.1/@children.3/@link //@connections.0/@link" verticalGridUnit="10" version="0.14.0">
   <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
   <link>
     <businessObjects href="../TrafficLight_step3.room#SubSystemClass:TrafficLightStep3_MultipleTrafficLights"/>
@@ -246,7 +246,7 @@
       </anchors>
       <children visible="true">
         <properties key="actorref_graphic_element" value="name_shape"/>
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimingService)"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimerService)"/>
       </children>
       <children>
         <properties key="actorref_graphic_element" value="size_shape"/>
@@ -256,20 +256,35 @@
         <properties key="obj-type" value="port"/>
         <properties key="inherited" value="false"/>
         <properties key="item-kind" value=""/>
-        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="90">
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="119">
           <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
         </graphicsAlgorithm>
         <link>
-          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/TimingService.room#SPP:ATimingService$timer"/>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$supervisionControl"/>
         </link>
-        <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <children visible="true">
+          <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="supervisionControl"/>
+        </children>
+      </children>
+      <children xsi:type="pi:ContainerShape" visible="true" active="true">
+        <properties key="obj-type" value="port"/>
+        <properties key="inherited" value="false"/>
+        <properties key="item-kind" value=""/>
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="59">
+          <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+        </graphicsAlgorithm>
+        <link>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$timer"/>
+        </link>
+        <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
         <children visible="true">
           <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="timer"/>
         </children>
       </children>
     </children>
   </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.2/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.3/@anchors.0">
     <properties key="obj-type" value="conn"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0"/>
     <link>
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step4/TrafficLight_step4.room b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step4/TrafficLight_step4.room
index 0b2dd28..9bed95d 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step4/TrafficLight_step4.room
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step4/TrafficLight_step4.room
@@ -1,14 +1,14 @@
 RoomModel TrafficLight_step4 {
 	
 	import TrafficLight.HierarchicalReplication
-	import room.basic.service.timing.ATimingService
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem TrafficLight {
 		SubSystemRef subSystem: TrafficLightStep4_MultipleTrafficLights
 	}
 
 	SubSystemClass TrafficLightStep4_MultipleTrafficLights {
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		ActorRef step4_HierarchicalReplication: HierarchicalReplication
 		LayerConnection ref step4_HierarchicalReplication satisfied_by timingService.timer
 
diff --git a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step4/diagrams/TrafficLight_step4.TrafficLightStep4_MultipleTrafficLights.structure b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step4/diagrams/TrafficLight_step4.TrafficLightStep4_MultipleTrafficLights.structure
index 2f2abfa..6a0a731 100644
--- a/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step4/diagrams/TrafficLight_step4.TrafficLightStep4_MultipleTrafficLights.structure
+++ b/examples/org.eclipse.etrice.examples.c/model/TrafficLight_step4/diagrams/TrafficLight_step4.TrafficLightStep4_MultipleTrafficLights.structure
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of TrafficLightStep4_MultipleTrafficLights" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.0/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.15.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of TrafficLightStep4_MultipleTrafficLights" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.0/@children.2/@link //@children.0/@children.0/@children.3/@link //@connections.0/@link" verticalGridUnit="10" version="0.14.0">
   <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
   <link>
     <businessObjects href="../TrafficLight_step4.room#SubSystemClass:TrafficLightStep4_MultipleTrafficLights"/>
@@ -126,7 +126,7 @@
       </anchors>
       <children visible="true">
         <properties key="actorref_graphic_element" value="name_shape"/>
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimingService)"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimerService)"/>
       </children>
       <children>
         <properties key="actorref_graphic_element" value="size_shape"/>
@@ -136,13 +136,28 @@
         <properties key="obj-type" value="port"/>
         <properties key="inherited" value="false"/>
         <properties key="item-kind" value=""/>
-        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="90">
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="119">
           <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
         </graphicsAlgorithm>
         <link>
-          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/TimingService.room#SPP:ATimingService$timer"/>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$supervisionControl"/>
         </link>
-        <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <children visible="true">
+          <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="supervisionControl"/>
+        </children>
+      </children>
+      <children xsi:type="pi:ContainerShape" visible="true" active="true">
+        <properties key="obj-type" value="port"/>
+        <properties key="inherited" value="false"/>
+        <properties key="item-kind" value=""/>
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="59">
+          <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+        </graphicsAlgorithm>
+        <link>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$timer"/>
+        </link>
+        <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
         <children visible="true">
           <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="timer"/>
         </children>
@@ -269,7 +284,7 @@
       </children>
     </children>
   </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.0/@children.2/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.0/@children.3/@anchors.0">
     <properties key="obj-type" value="conn"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0"/>
     <link>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors1/DynAct1.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors1/DynAct1.room
index 82f9cd3..0da4fcb 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors1/DynAct1.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors1/DynAct1.room
@@ -1,6 +1,6 @@
 RoomModel DynAct1 {
 	
-	import room.basic.types.string
+	import etrice.api.types.string
 	
 	LogicalSystem LS {
 		SubSystemRef main: Main
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors1/run_DynAct1.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors1/run_DynAct1.launch
index ac773d2..8c23771 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors1/run_DynAct1.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors1/run_DynAct1.launch
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.etrice.examples.java/src-gen/org/eclipse/etrice/examples/dynamicactors1/Node_nodeRef1_mainRunner.java"/>
+<listEntry value="/org.eclipse.etrice.examples.java/src-gen/DynAct1/Node_nodeRef1_mainRunner.java"/>
 </listAttribute>
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
 <listEntry value="1"/>
 </listAttribute>
 <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors1.Node_nodeRef1_mainRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct1.Node_nodeRef1_mainRunner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors2/DynAct2.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors2/DynAct2.room
index 9317f69..7432f74 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors2/DynAct2.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors2/DynAct2.room
@@ -1,7 +1,7 @@
 RoomModel DynAct2 {
 	
-	import room.basic.types.int32
-	import room.basic.types.string
+	import etrice.api.types.int32
+	import etrice.api.types.string
 	
 	LogicalSystem LS {
 		SubSystemRef main: Main
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors2/run_DynAct2.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors2/run_DynAct2.launch
index c15f40f..6dfe859 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors2/run_DynAct2.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors2/run_DynAct2.launch
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.etrice.examples.java"/>
+<listEntry value="/org.eclipse.etrice.examples.java/src-gen/DynAct2/Node_nodeRef1_mainRunner.java"/>
 </listAttribute>
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
+<listEntry value="1"/>
 </listAttribute>
 <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors2.Node_nodeRef1_mainRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct2.Node_nodeRef1_mainRunner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors3/DynAct3.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors3/DynAct3.room
index a4f7434..bf2da73 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors3/DynAct3.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors3/DynAct3.room
@@ -1,6 +1,6 @@
 RoomModel DynAct3 {
 	
-	import room.basic.types.string
+	import etrice.api.types.string
 	
 	LogicalSystem LS {
 		SubSystemRef main: Main
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors3/run_DynAct3.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors3/run_DynAct3.launch
index a555259..aff7a54 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors3/run_DynAct3.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors3/run_DynAct3.launch
@@ -7,6 +7,6 @@
 <listEntry value="4"/>
 </listAttribute>
 <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors3.Node_nodeRef1_mainRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct3.Node_nodeRef1_mainRunner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors4/DynAct4.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors4/DynAct4.room
index 3acbdca..670cc98 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors4/DynAct4.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors4/DynAct4.room
@@ -1,6 +1,6 @@
 RoomModel DynAct4 {
 	
-	import room.basic.types.string
+	import etrice.api.types.string
 	
 	LogicalSystem LS {
 		SubSystemRef main: Main
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors4/run_DynAct4.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors4/run_DynAct4.launch
index 502caf0..695b938 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors4/run_DynAct4.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors4/run_DynAct4.launch
@@ -6,6 +6,6 @@
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
 <listEntry value="4"/>
 </listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors4.Node_nodeRef1_mainRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct4.Node_nodeRef1_mainRunner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors5/DynAct5.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors5/DynAct5.room
index 0a009b1..a1e1681 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors5/DynAct5.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors5/DynAct5.room
@@ -1,6 +1,6 @@
 RoomModel DynAct5 {
 	
-	import room.basic.types.string
+	import etrice.api.types.string
 	
 	LogicalSystem LS {
 		SubSystemRef main: Main
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors5/run_DynAct5.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors5/run_DynAct5.launch
index 58bb13b..5140633 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors5/run_DynAct5.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors5/run_DynAct5.launch
@@ -6,6 +6,6 @@
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
 <listEntry value="4"/>
 </listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors5.Node_nodeRef1_mainRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct5.Node_nodeRef1_mainRunner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors6/DynAct6.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors6/DynAct6.room
index 61a0b1c..4730a28 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors6/DynAct6.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors6/DynAct6.room
@@ -1,6 +1,6 @@
 RoomModel DynAct6 {
 	
-	import room.basic.types.string
+	import etrice.api.types.string
 	
 	LogicalSystem LS {
 		SubSystemRef main: Main
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors6/run_DynAct6.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors6/run_DynAct6.launch
index 307f7b4..c6e6aed 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors6/run_DynAct6.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors6/run_DynAct6.launch
@@ -7,6 +7,6 @@
 <listEntry value="4"/>
 </listAttribute>
 <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors6.Node_nodeRef1_mainRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct6.Node_nodeRef1_mainRunner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors7/DynAct7.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors7/DynAct7.room
index dff709d..5d5f6c6 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors7/DynAct7.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors7/DynAct7.room
@@ -1,6 +1,6 @@
 RoomModel DynAct7 {
 	
-	import room.basic.types.string
+	import etrice.api.types.string
 	
 	LogicalSystem LS {
 		SubSystemRef main: Main
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors7/run_DynAct7.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors7/run_DynAct7.launch
index 9e6cb8f..05df0c8 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors7/run_DynAct7.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors7/run_DynAct7.launch
@@ -7,6 +7,6 @@
 <listEntry value="4"/>
 </listAttribute>
 <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors7.Node_nodeRef1_mainRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct7.Node_nodeRef1_mainRunner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors8/DynAct8.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors8/DynAct8.room
index e2905b6..5a42bb4 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors8/DynAct8.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors8/DynAct8.room
@@ -1,13 +1,13 @@
 RoomModel DynAct8 {
 
-	import room.basic.types.boolean
-	import room.basic.types.char
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.float32
-	import room.basic.types.float64
-	import room.basic.types.string
+	import etrice.api.types.boolean
+	import etrice.api.types.char
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.float32
+	import etrice.api.types.float64
+	import etrice.api.types.string
 	
 	LogicalSystem LogSys1 {
 		SubSystemRef main: Main
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors8/run_DynAct8.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors8/run_DynAct8.launch
index 0343bbf..83e4698 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors8/run_DynAct8.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors8/run_DynAct8.launch
@@ -6,6 +6,6 @@
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
 <listEntry value="4"/>
 </listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors8.Node_nodeRef1_mainRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct8.Node_nodeRef1_mainRunner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors9/DynAct9.room b/examples/org.eclipse.etrice.examples.java/model/dynamicactors9/DynAct9.room
index 38d06e4..5262e00 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors9/DynAct9.room
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors9/DynAct9.room
@@ -1,7 +1,7 @@
 RoomModel DynAct9 {
 
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys1 {
 		SubSystemRef subSysRef1: SubSysClass1
@@ -9,7 +9,7 @@
 
 	SubSystemClass SubSysClass1 {
 		ActorRef actorRef1: PingPongTop
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref actorRef1 satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.examples.java/model/dynamicactors9/run_DynAct9.launch b/examples/org.eclipse.etrice.examples.java/model/dynamicactors9/run_DynAct9.launch
index 081d695..bf7c946 100644
--- a/examples/org.eclipse.etrice.examples.java/model/dynamicactors9/run_DynAct9.launch
+++ b/examples/org.eclipse.etrice.examples.java/model/dynamicactors9/run_DynAct9.launch
@@ -6,6 +6,6 @@
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
 <listEntry value="4"/>
 </listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors9.Node_nodeRef1_subSysRef1Runner"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="DynAct9.Node_nodeRef1_subSysRef1Runner"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.java"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.java/src/org/eclipse/etrice/examples/dynamicactors8/FilePersistor.java b/examples/org.eclipse.etrice.examples.java/src/DynAct8/FilePersistor.java
similarity index 97%
rename from examples/org.eclipse.etrice.examples.java/src/org/eclipse/etrice/examples/dynamicactors8/FilePersistor.java
rename to examples/org.eclipse.etrice.examples.java/src/DynAct8/FilePersistor.java
index 3c604ec..78bbfcc 100644
--- a/examples/org.eclipse.etrice.examples.java/src/org/eclipse/etrice/examples/dynamicactors8/FilePersistor.java
+++ b/examples/org.eclipse.etrice.examples.java/src/DynAct8/FilePersistor.java
@@ -1,4 +1,4 @@
-package org.eclipse.etrice.examples.dynamicactors8;
+package DynAct8;
 
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
diff --git a/examples/org.eclipse.etrice.template.c/model/TemplateModel.room b/examples/org.eclipse.etrice.template.c/model/TemplateModel.room
index 06ae1ca..af294af 100644
--- a/examples/org.eclipse.etrice.template.c/model/TemplateModel.room
+++ b/examples/org.eclipse.etrice.template.c/model/TemplateModel.room
@@ -8,9 +8,9 @@
  */
 RoomModel TemplateModel {
 
-	import room.basic.types.*
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.*
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys {
 		SubSystemRef subSystemRef: SubSysClass
@@ -18,7 +18,7 @@
 
 	SubSystemClass SubSysClass {
 		ActorRef topActor: TopActor
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref topActor satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.template.cpp/model/TemplateModel.room b/examples/org.eclipse.etrice.template.cpp/model/TemplateModel.room
index d1c4909..16ec7fd 100644
--- a/examples/org.eclipse.etrice.template.cpp/model/TemplateModel.room
+++ b/examples/org.eclipse.etrice.template.cpp/model/TemplateModel.room
@@ -8,9 +8,9 @@
  */
 RoomModel TemplateModel {
 
-	import room.basic.types.*
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.*
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys {
 		SubSystemRef subSystemRef: SubSysClass
@@ -18,7 +18,7 @@
 
 	SubSystemClass SubSysClass {
 		ActorRef topActor: TopActor
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref topActor satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.tutorials.c/model/HelloWorld/HelloWorld.room b/examples/org.eclipse.etrice.tutorials.c/model/HelloWorld/HelloWorld.room
index 0b7113c..4a31f1d 100644
--- a/examples/org.eclipse.etrice.tutorials.c/model/HelloWorld/HelloWorld.room
+++ b/examples/org.eclipse.etrice.tutorials.c/model/HelloWorld/HelloWorld.room
@@ -8,8 +8,8 @@
  */
 RoomModel HelloWorld {
 
-	import room.basic.types.*
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.*
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys {
 		SubSystemRef subSystemRef: SubSysClass
@@ -17,7 +17,7 @@
 
 	SubSystemClass SubSysClass {
 		ActorRef topActor: TopActor
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref topActor satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.tutorials.c/model/PingPong/PingPong.room b/examples/org.eclipse.etrice.tutorials.c/model/PingPong/PingPong.room
index cb03301..85a05a1 100644
--- a/examples/org.eclipse.etrice.tutorials.c/model/PingPong/PingPong.room
+++ b/examples/org.eclipse.etrice.tutorials.c/model/PingPong/PingPong.room
@@ -8,9 +8,9 @@
  */
 RoomModel PingPong {
 
-	import room.basic.types.*
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.*
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys {
 		SubSystemRef subSystemRef: SubSysClass
@@ -18,7 +18,7 @@
 
 	SubSystemClass SubSysClass {
 		ActorRef topActor: TopActor
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref topActor satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.tutorials.c/model/PingPong/diagrams/PingPongModel.SubSysClass.structure b/examples/org.eclipse.etrice.tutorials.c/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
index 6aa5231..f47f3ef 100644
--- a/examples/org.eclipse.etrice.tutorials.c/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
+++ b/examples/org.eclipse.etrice.tutorials.c/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of SubSysClass" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.15.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of SubSysClass" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@children.0/@children.1/@children.3/@link //@connections.0/@link" verticalGridUnit="10" version="0.14.0">
   <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
   <link>
     <businessObjects href="../PingPong.room#SubSystemClass:SubSysClass"/>
@@ -246,7 +246,7 @@
       </anchors>
       <children visible="true">
         <properties key="actorref_graphic_element" value="name_shape"/>
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimingService)"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimerService)"/>
       </children>
       <children>
         <properties key="actorref_graphic_element" value="size_shape"/>
@@ -256,20 +256,35 @@
         <properties key="obj-type" value="port"/>
         <properties key="inherited" value="false"/>
         <properties key="item-kind" value=""/>
-        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="90">
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="119">
           <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
         </graphicsAlgorithm>
         <link>
-          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/TimingService.room#SPP:ATimingService$timer"/>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$supervisionControl"/>
         </link>
-        <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+        <children visible="true">
+          <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="supervisionControl"/>
+        </children>
+      </children>
+      <children xsi:type="pi:ContainerShape" visible="true" active="true">
+        <properties key="obj-type" value="port"/>
+        <properties key="inherited" value="false"/>
+        <properties key="item-kind" value=""/>
+        <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="59">
+          <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+        </graphicsAlgorithm>
+        <link>
+          <businessObjects href="../../../../../runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room#SPP:ATimerService$timer"/>
+        </link>
+        <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
         <children visible="true">
           <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="timer"/>
         </children>
       </children>
     </children>
   </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.2/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.3/@anchors.0">
     <properties key="obj-type" value="conn"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0"/>
     <link>
diff --git a/examples/org.eclipse.etrice.tutorials.c/run_CurrentTutorial_WindowsMinGW.launch b/examples/org.eclipse.etrice.tutorials.c/run_CurrentTutorial_WindowsMinGW.launch
index bd5f0e6..ce67c60 100644
--- a/examples/org.eclipse.etrice.tutorials.c/run_CurrentTutorial_WindowsMinGW.launch
+++ b/examples/org.eclipse.etrice.tutorials.c/run_CurrentTutorial_WindowsMinGW.launch
@@ -13,4 +13,5 @@
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
 <listEntry value="4"/>
 </listAttribute>
+<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
 </launchConfiguration>
diff --git a/examples/org.eclipse.etrice.tutorials.cpp/model/HelloWorld/HelloWorld.room b/examples/org.eclipse.etrice.tutorials.cpp/model/HelloWorld/HelloWorld.room
index 2238b78..3187215 100644
--- a/examples/org.eclipse.etrice.tutorials.cpp/model/HelloWorld/HelloWorld.room
+++ b/examples/org.eclipse.etrice.tutorials.cpp/model/HelloWorld/HelloWorld.room
@@ -8,8 +8,8 @@
  */
 RoomModel HelloWorld {
 
-	import room.basic.types.*
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.*
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys {
 		SubSystemRef subSystemRef: SubSysClass
@@ -17,7 +17,7 @@
 
 	SubSystemClass SubSysClass {
 		ActorRef topActor: TopActor
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref topActor satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.tutorials.cpp/model/PingPong/PingPong.room b/examples/org.eclipse.etrice.tutorials.cpp/model/PingPong/PingPong.room
index 3c4dd8c..f4f2ad3 100644
--- a/examples/org.eclipse.etrice.tutorials.cpp/model/PingPong/PingPong.room
+++ b/examples/org.eclipse.etrice.tutorials.cpp/model/PingPong/PingPong.room
@@ -8,9 +8,9 @@
  */
 RoomModel PingPong {
 
-	import room.basic.types.*
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.*
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys {
 		SubSystemRef subSystemRef: SubSysClass
@@ -18,7 +18,7 @@
 
 	SubSystemClass SubSysClass {
 		ActorRef topActor: TopActor
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref topActor satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.tutorials.cpp/model/PingPong/diagrams/PingPongModel.SubSysClass.structure b/examples/org.eclipse.etrice.tutorials.cpp/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
index c6fda12..1ff4cb3 100644
--- a/examples/org.eclipse.etrice.tutorials.cpp/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
+++ b/examples/org.eclipse.etrice.tutorials.cpp/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
@@ -246,7 +246,7 @@
       </anchors>
       <children visible="true">
         <properties key="actorref_graphic_element" value="name_shape"/>
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimingService)"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimerService)"/>
       </children>
       <children>
         <properties key="actorref_graphic_element" value="size_shape"/>
@@ -260,7 +260,7 @@
           <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
         </graphicsAlgorithm>
         <link>
-          <businessObjects href="../../../../org.eclipse.etrice.modellib.cpp/model/TimingService.room#SPP:ATimingService$timer"/>
+          <businessObjects href="../../../../org.eclipse.etrice.modellib.cpp/model/TimingService.room#SPP:ATimerService$timer"/>
         </link>
         <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
         <children visible="true">
diff --git a/examples/org.eclipse.etrice.tutorials.java/model/HelloWorld/HelloWorld.room b/examples/org.eclipse.etrice.tutorials.java/model/HelloWorld/HelloWorld.room
index 1149abb..6d53374 100644
--- a/examples/org.eclipse.etrice.tutorials.java/model/HelloWorld/HelloWorld.room
+++ b/examples/org.eclipse.etrice.tutorials.java/model/HelloWorld/HelloWorld.room
@@ -8,8 +8,8 @@
  */
 RoomModel HelloWorld {
 
-	import room.basic.types.*
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.*
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys {
 		SubSystemRef subSystemRef: SubSysClass
@@ -17,7 +17,7 @@
 
 	SubSystemClass SubSysClass {
 		ActorRef topActor: TopActor
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref topActor satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.tutorials.java/model/HelloWorld/Mapping.etmap b/examples/org.eclipse.etrice.tutorials.java/model/HelloWorld/Mapping.etmap
index 6e36b7f..420e4ce 100644
--- a/examples/org.eclipse.etrice.tutorials.java/model/HelloWorld/Mapping.etmap
+++ b/examples/org.eclipse.etrice.tutorials.java/model/HelloWorld/Mapping.etmap
Binary files differ
diff --git a/examples/org.eclipse.etrice.tutorials.java/model/PingPong/Mapping.etmap b/examples/org.eclipse.etrice.tutorials.java/model/PingPong/Mapping.etmap
index 08d6d6d..6a6f938 100644
--- a/examples/org.eclipse.etrice.tutorials.java/model/PingPong/Mapping.etmap
+++ b/examples/org.eclipse.etrice.tutorials.java/model/PingPong/Mapping.etmap
Binary files differ
diff --git a/examples/org.eclipse.etrice.tutorials.java/model/PingPong/PingPong.room b/examples/org.eclipse.etrice.tutorials.java/model/PingPong/PingPong.room
index 3ada391..2e7195d 100644
--- a/examples/org.eclipse.etrice.tutorials.java/model/PingPong/PingPong.room
+++ b/examples/org.eclipse.etrice.tutorials.java/model/PingPong/PingPong.room
@@ -8,9 +8,9 @@
  */
 RoomModel PingPong {
 
-	import room.basic.types.*
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.*
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem LogSys {
 		SubSystemRef subSystemRef: SubSysClass
@@ -18,7 +18,7 @@
 
 	SubSystemClass SubSysClass {
 		ActorRef topActor: TopActor
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref topActor satisfied_by timingService.timer
 		LogicalThread defaultThread
 	}
diff --git a/examples/org.eclipse.etrice.tutorials.java/model/PingPong/diagrams/PingPongModel.SubSysClass.structure b/examples/org.eclipse.etrice.tutorials.java/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
index 21a866c..397150b 100644
--- a/examples/org.eclipse.etrice.tutorials.java/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
+++ b/examples/org.eclipse.etrice.tutorials.java/model/PingPong/diagrams/PingPongModel.SubSysClass.structure
@@ -246,7 +246,7 @@
       </anchors>
       <children visible="true">
         <properties key="actorref_graphic_element" value="name_shape"/>
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimingService)"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimerService)"/>
       </children>
       <children>
         <properties key="actorref_graphic_element" value="size_shape"/>
@@ -260,7 +260,7 @@
           <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
         </graphicsAlgorithm>
         <link>
-          <businessObjects href="file:/C:/Users/Juergen/workspaces/Eclipse-eTrice/eTrice-rt/org.eclipse.etrice.modellib.java/model/TimingService.room#SPP:ATimingService$timer"/>
+          <businessObjects href="file:/C:/Users/Juergen/workspaces/Eclipse-eTrice/eTrice-rt/org.eclipse.etrice.modellib.java/model/TimingService.room#SPP:ATimerService$timer"/>
         </link>
         <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
         <children visible="true">
diff --git a/runtime/org.eclipse.etrice.modellib.c/build.gradle b/runtime/org.eclipse.etrice.modellib.c/build.gradle
index 627b368..bc3d86c 100644
--- a/runtime/org.eclipse.etrice.modellib.c/build.gradle
+++ b/runtime/org.eclipse.etrice.modellib.c/build.gradle
@@ -7,9 +7,11 @@
 }
 
 def models = [
-	'model/PInterrupt.room',
-	'model/TcpService.room',
-	'model/TimingService.room',
+	'model/etrice/api/interrupt.room',
+	'model/etrice/api/logger.room',
+	'model/etrice/api/tcp.room',
+	'model/etrice/api/testcontrol.room',
+	'model/etrice/api/timer.room',
 	'model/etrice/api/contracts/monitors.room'
 ]
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/gen_modellib_c.launch b/runtime/org.eclipse.etrice.modellib.c/gen_modellib_c.launch
index cb2bf68..8f2dd9f 100644
--- a/runtime/org.eclipse.etrice.modellib.c/gen_modellib_c.launch
+++ b/runtime/org.eclipse.etrice.modellib.c/gen_modellib_c.launch
@@ -5,18 +5,27 @@
 <booleanAttribute key="GenDocumentation" value="false"/>
 <booleanAttribute key="GenInstanceDiagram" value="false"/>
 <stringAttribute key="GenModelPath" value=""/>
+<booleanAttribute key="GenerateDepsWithinProject" value="true"/>
 <booleanAttribute key="Lib" value="true"/>
 <booleanAttribute key="MSC" value="true"/>
 <stringAttribute key="MainMethodName" value="main"/>
 <listAttribute key="ModelFiles">
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/TimingService.room}"/>
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/TcpService.room}"/>
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/Tests.room}"/>
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/PInterrupt.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/annotations.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/interrupt.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/language.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/logger.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/tcp.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/testcontrol.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/types.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/contracts/definitions.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.c/model/etrice/api/contracts/monitors.room}"/>
 </listAttribute>
+<booleanAttribute key="OldStyleTransitionData" value="false"/>
 <booleanAttribute key="OverrideDirectories" value="false"/>
 <booleanAttribute key="SaveGenModel" value="false"/>
 <booleanAttribute key="UseTranslation" value="true"/>
 <booleanAttribute key="Verbose" value="false"/>
+<booleanAttribute key="cppFileExtensions" value="false"/>
 <stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${project}"/>
 </launchConfiguration>
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/Annotations.room b/runtime/org.eclipse.etrice.modellib.c/model/Annotations.room
deleted file mode 100644
index 064d7dd..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/model/Annotations.room
+++ /dev/null
@@ -1,52 +0,0 @@
-RoomModel room.basic.annotations {
-	/**
-	 * BehaviorManual suppresses the generation of the implementation file (.c) for an ActorClass
-	 */
-	AnnotationType BehaviorManual {
-		target = ActorBehavior
-	}
-	
-	/**
-	 * Marks elements as deprecated.
-	 */
-	AnnotationType Deprecated {
-		target = {
-			ActorClass, DataClass, Message, Port, ProtocolClass, SubSystemClass
-		}
-		optional attribute error: ptBoolean
-		optional attribute noGenerate: ptBoolean
-	}
-	
-	/**
-	 * Special user code which is generated to the sub system instance.
-	 */
-	AnnotationType SubSystemUserCode {
-		target = ActorClass
-		mandatory attribute userCode: ptCharacter
-	}
-	
-	AnnotationType DataLogging {
-		target = SubSystemClass
-		mandatory attribute pathlist: ptCharacter
-	}
-	
-	AnnotationType Gnuplot {
-		target = SubSystemClass
-		mandatory attribute format: ptCharacter
-		mandatory attribute outputfile: ptCharacter
-		mandatory attribute width: ptInteger
-		mandatory attribute height: ptInteger
-		optional attribute fontsize: ptInteger
-	}
-	
-	AnnotationType GnuplotGraph {
-		target = SubSystemClass
-		mandatory attribute paths: ptCharacter
-		optional attribute interval: ptInteger
-		optional attribute xtics: ptReal
-		optional attribute mxtics: ptInteger
-		optional attribute ymin: ptReal
-		optional attribute ymax: ptReal
-	}
-	
-}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/GenericPhysical.etphys b/runtime/org.eclipse.etrice.modellib.c/model/GenericPhysical.etphys
index 27f442b..25d6537 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/GenericPhysical.etphys
+++ b/runtime/org.eclipse.etrice.modellib.c/model/GenericPhysical.etphys
@@ -1,4 +1,4 @@
-PhysicalModel room.generic.physical {
+PhysicalModel GenericPhysical {
 	
 	PhysicalSystem GenericPhysicalSystem {
 		NodeRef node : GenericNodeClass
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/PInterrupt.room b/runtime/org.eclipse.etrice.modellib.c/model/PInterrupt.room
deleted file mode 100644
index bc435f1..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/model/PInterrupt.room
+++ /dev/null
@@ -1,43 +0,0 @@
-RoomModel room.basic.service.pinterrupt {
-
-	import room.basic.types.* from "Types.room"
-
-	ProtocolClass PInterrupt {
-		incoming {
-			Message event()
-		}
-		conjugated PortClass
-		{
-			usercode '''#include "messaging/etMessageService.h"'''
-			handle
-			incoming event '''// the message should be sent via the fire operation !!'''
-			Operation export(): PInterruptConjPort ref '''
-				msg.address = self->peerAddress;
-				msg.evtID = PInterrupt_IN_event;
-				callback.func=(void (*)(void*))PInterruptConjPort_dispatch;
-				callback.param=(void *)self;
-				etMessageService_registerHighPrioFunc(self->msgService,&callback);
-				return self;
-			'''
-			Operation dispatch() '''
-				// this operation will be executed from the message service
-				if (enable){
-					enable=0;
-					self->msgService->msgDispatcher(&msg);
-				}
-			'''
-			Operation fire() '''
-				// this method runs on interrupt level
-				enable=1;
-				etSema_wakeupFromISR(&self->msgService->executionSemaphore);
-			'''
-			Attribute msg: etMessage = "0"
-			Attribute callback: etHighPrioFunc = "{0,0}"
-			Attribute enable: uint8 = "0"
-		}
-	}
-
-	ExternalType PInterruptConjPort -> "PInterruptConjPort"
-	ExternalType etMessage -> "etMessage"
-	ExternalType etHighPrioFunc -> "etHighPrioFunc"
-}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/Types.room b/runtime/org.eclipse.etrice.modellib.c/model/Types.room
deleted file mode 100644
index b38e046..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/model/Types.room
+++ /dev/null
@@ -1,27 +0,0 @@
-RoomModel room.basic.types {
-
-	PrimitiveType boolean: ptBoolean -> 'bool' default 'false'
-	PrimitiveType char: ptCharacter -> 'char' default '0'
-	PrimitiveType int8: ptInteger -> 'int8' default '0'
-	PrimitiveType int16: ptInteger -> 'int16' default '0'
-	PrimitiveType int32: ptInteger -> 'int32' default '0'
-	PrimitiveType int64: ptInteger -> 'int64' default '0'
-
-	PrimitiveType uint8: ptInteger -> 'uint8' default '0'
-	PrimitiveType uint16: ptInteger -> 'uint16' default '0'
-	PrimitiveType uint32: ptInteger -> 'uint32' default '0'
-	PrimitiveType uint64: ptInteger -> 'uint64' default '0'
-
-	PrimitiveType float32:ptReal -> 'float32' default '0'
-	PrimitiveType float64:ptReal -> 'float64' default '0'
-
-
-	// TODO: define strings for C
-	PrimitiveType charPtr:ptCharacter -> 'charPtr' default '0'
-	PrimitiveType string:ptCharacter -> 'charPtr' default '0'
-
-	// et-datatypes for the model
-	PrimitiveType etAddressId:ptInteger -> 'etAddressId' default '0'
-
-	ExternalType voidType -> 'void' default 'NULL'
-}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpClient.structure b/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpClient.structure
deleted file mode 100644
index 474e01e..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpClient.structure
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of ATcpClient" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link" verticalGridUnit="10" version="0.15.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TcpService.room#ActorClass:ATcpClient"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="cls"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" lineVisible="false" transparency="0.5" width="800" height="500" x="40" y="40"/>
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TcpService.room#ActorClass:ATcpClient"/>
-    </link>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="inherited" value="false"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="532">
-        <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#Port:ATcpClient$payloadPort"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" value="payloadPort"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="inherited" value="false"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="265">
-        <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#Port:ATcpClient$controlPort"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" value="controlPort"/>
-      </children>
-    </children>
-  </children>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <fonts name="Arial" size="8"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.timing.ATimingService.behavior b/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.timing.ATimingService.behavior
deleted file mode 100644
index af5c48b..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.timing.ATimingService.behavior
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATimingService" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link" verticalGridUnit="10" version="0.11.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="sg"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TimingService.room#StateGraph:ATimingService$sg"/>
-    </link>
-    <children visible="true">
-      <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#StateGraph:ATimingService$sg"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="136" height="90" x="332" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="76" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="51" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="38" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="38" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="38" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#SimpleState:ATimingService$Operational"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1 //@connections.2 //@connections.3" incomingConnections="//@connections.0 //@connections.1 //@connections.2 //@connections.3" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="76" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Operational"/>
-      </children>
-    </children>
-  </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#InitialTransition:ATimingService$initial"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr1"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;startTimeout:t..."/>
-    </connectionDecorators>
-    <bendpoints x="440" y="319"/>
-    <bendpoints x="463" y="272"/>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr3"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr3: &lt;startTimer:tim..."/>
-    </connectionDecorators>
-    <bendpoints x="339" y="292"/>
-    <bendpoints x="339" y="240"/>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr4"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr4: &lt;kill:timer>"/>
-    </connectionDecorators>
-    <bendpoints x="617" y="292"/>
-    <bendpoints x="563" y="235"/>
-  </connections>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <colors red="200" green="200" blue="200"/>
-  <fonts name="Arial" size="8"/>
-  <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.timing.ATimingService.structure b/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.timing.ATimingService.structure
deleted file mode 100644
index 09c970f..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.timing.ATimingService.structure
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of ATimingService" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.15.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="cls"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" lineVisible="false" transparency="0.5" width="800" height="500" x="40" y="40"/>
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-    </link>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="inherited" value="false"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="400">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#SPP:ATimingService$timer"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" value="timer"/>
-      </children>
-    </children>
-  </children>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <fonts name="Arial" size="8"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/annotations.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/annotations.room
new file mode 100644
index 0000000..9a6d80f
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/annotations.room
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2019 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+ 
+RoomModel etrice.api.annotations {
+	
+	/**
+	  Meta information for elements that will be picked up by generators. Examples:
+	  <code><pre>
+	   	@MetaInfo(key="x", text="...")
+	   	
+	  	@MetaInfo(text="...")
+	  	
+	 	@MetaInfo(multiKeyText="
+		&#9; key1 : value
+		&#9; key2 : Some text with 
+		&#9;&#9; new line
+		")
+	  </code></pre>
+	 */
+	AnnotationType MetaInfo {
+		target = ActorClass // CaGe TestSuite and TestCase
+		optional attribute key: ptCharacter				// key=text
+		optional attribute text: ptCharacter			// text=text
+		optional attribute multiKeyText: ptCharacter	// key:text pairs separated by ':'
+	}
+	
+	/**
+	 * BehaviorManual suppresses the generation of the implementation file (.c) for an ActorClass
+	 */
+	AnnotationType BehaviorManual {
+		target = ActorBehavior
+	}
+	
+	/**
+	 * Special user code which is generated to the sub system instance.
+	 */
+	AnnotationType SubSystemUserCode {
+		target = ActorClass
+		mandatory attribute userCode: ptCharacter
+	}
+	
+	AnnotationType Deprecated {
+		target = {
+			ActorClass, DataClass, Message, Port, ProtocolClass, SubSystemClass, RoomModel
+		}
+		optional attribute error: ptBoolean
+		optional attribute noGenerate: ptBoolean
+	}
+	
+	/**
+	 * A SubSystemClass or ActorClass having this annotation is construed as an instance.<br>
+	 * During generation the necessary instantiation (LogicalSystem, SubSystemRef etc.) and mapping will be created. 
+	 * <p>
+	 * Must not have LogicalThreads. Globally only once allowed. Runtime execution on DefaultThread of given PhysicalSystem.
+	 * </p>
+	 */
+	AnnotationType TestInstance {
+		target = { SubSystemClass, ActorClass }
+	}
+	
+	AnnotationType DataLogging {
+		target = SubSystemClass
+		mandatory attribute pathlist: ptCharacter
+	}
+	
+	AnnotationType Gnuplot {
+		target = SubSystemClass
+		mandatory attribute format: ptCharacter
+		mandatory attribute outputfile: ptCharacter
+		mandatory attribute width: ptInteger
+		mandatory attribute height: ptInteger
+		optional attribute fontsize: ptInteger
+	}
+	
+	AnnotationType GnuplotGraph {
+		target = SubSystemClass
+		mandatory attribute paths: ptCharacter
+		optional attribute interval: ptInteger
+		optional attribute xtics: ptReal
+		optional attribute mxtics: ptInteger
+		optional attribute ymin: ptReal
+		optional attribute ymax: ptReal
+	}
+	
+}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/contracts/monitors.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/contracts/monitors.room
index 9fc767c..8759648 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/contracts/monitors.room
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/contracts/monitors.room
@@ -4,7 +4,8 @@
  */
 RoomModel etrice.api.contracts.monitors {
 
-	import room.basic.types.*
+	import etrice.api.types.boolean
+	import etrice.api.types.string
 	
 	/** Protocol to get validation status and control monitor behavior. */
 	ProtocolClass PContractMonitorControl {
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpClient.behavior b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/diagrams/etrice.api.tcp.ATcpClient.behavior
similarity index 84%
rename from runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpClient.behavior
rename to runtime/org.eclipse.etrice.modellib.c/model/etrice/api/diagrams/etrice.api.tcp.ATcpClient.behavior
index ed1e478..c9615d1 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpClient.behavior
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/diagrams/etrice.api.tcp.ATcpClient.behavior
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATcpClient" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@children.0/@children.4/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link //@connections.4/@link //@connections.5/@link //@children.0/@children.5/@link //@connections.6/@link //@children.0/@children.6/@link //@connections.7/@link //@connections.8/@link" verticalGridUnit="10" version="0.11.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATcpClient" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@children.0/@children.4/@link //@children.0/@children.5/@link //@children.0/@children.6/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link //@connections.4/@link //@connections.5/@link //@connections.6/@link //@connections.7/@link //@connections.8/@link" verticalGridUnit="10" version="0.14.0">
   <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
   <link>
-    <businessObjects href="../TcpService.room#ActorClass:ATcpClient"/>
+    <businessObjects href="../tcp.room#ActorClass:ATcpClient"/>
   </link>
   <children xsi:type="pi:ContainerShape" visible="true" active="true">
     <properties key="obj-type" value="sg"/>
@@ -11,40 +11,40 @@
       <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
     </graphicsAlgorithm>
     <link>
-      <businessObjects href="../TcpService.room#StateGraph:ATcpClient$sg"/>
+      <businessObjects href="../tcp.room#StateGraph:ATcpClient$sg"/>
     </link>
     <children visible="true">
       <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
+      <properties key="obj-type" value="ini"/>
       <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
         <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#StateGraph:ATcpClient$sg"/>
+        <businessObjects href="../tcp.room#StateGraph:ATcpClient$sg"/>
       </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0"/>
       <children visible="true">
         <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
       </children>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
       <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="159" height="90" x="191" y="179">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="99" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="74" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="49" y="24">
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="133" height="90" x="356" y="201">
+        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="73" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="48" y="3" cornerHeight="5" cornerWidth="5"/>
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="36" y="24">
             <points x="-3" y="-3"/>
             <points x="-3" y="3"/>
             <points x="-11" y="3"/>
           </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="49" y="24">
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="36" y="24">
             <points x="3" y="-3"/>
             <points x="3" y="3"/>
             <points x="11" y="3"/>
           </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="49" y="24">
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="36" y="24">
             <points x="-2" y="-3"/>
             <points x="-2" y="3"/>
             <points x="2" y="3"/>
@@ -53,29 +53,29 @@
         </graphicsAlgorithmChildren>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpClient$unconnected"/>
+        <businessObjects href="../tcp.room#SimpleState:ATcpClient$unconnected"/>
       </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.2 //@connections.6 //@connections.4"/>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.2 //@connections.4 //@connections.6" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
       <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="99" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="unconnected"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="73" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="unconnected"/>
       </children>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
       <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="158" height="90" x="493" y="179">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="98" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="73" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="49" y="24">
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="121" height="90" x="99" y="201">
+        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="61" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="36" y="3" cornerHeight="5" cornerWidth="5"/>
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
             <points x="-3" y="-3"/>
             <points x="-3" y="3"/>
             <points x="-11" y="3"/>
           </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="49" y="24">
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
             <points x="3" y="-3"/>
             <points x="3" y="3"/>
             <points x="11" y="3"/>
           </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="49" y="24">
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
             <points x="-2" y="-3"/>
             <points x="-2" y="3"/>
             <points x="2" y="3"/>
@@ -84,42 +84,16 @@
         </graphicsAlgorithmChildren>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpClient$connected"/>
+        <businessObjects href="../tcp.room#SimpleState:ATcpClient$connected"/>
       </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2 //@connections.5" incomingConnections="//@connections.5 //@connections.3"/>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2 //@connections.5" incomingConnections="//@connections.3 //@connections.5" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
       <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="98" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="connected"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="428" y="376">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#ChoicePoint:ATcpClient$cp0"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.3 //@connections.4" incomingConnections="//@connections.1"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="215" y="99">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#ChoicePoint:ATcpClient$cp1"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.6 //@connections.7" incomingConnections="//@connections.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="61" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="connected"/>
       </children>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
       <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="40" y="185">
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="594" y="201">
         <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
           <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
           <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="30" y="24">
@@ -141,19 +115,45 @@
         </graphicsAlgorithmChildren>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpClient$initError"/>
+        <businessObjects href="../tcp.room#SimpleState:ATcpClient$initError"/>
       </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.8" incomingConnections="//@connections.7 //@connections.8"/>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.8" incomingConnections="//@connections.7 //@connections.8" referencedGraphicsAlgorithm="//@children.0/@children.4/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
       <children visible="true">
         <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="initError"/>
       </children>
     </children>
+    <children xsi:type="pi:ContainerShape" visible="true" active="true">
+      <properties key="obj-type" value="cp"/>
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="253" y="358">
+        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
+      </graphicsAlgorithm>
+      <link>
+        <businessObjects href="../tcp.room#ChoicePoint:ATcpClient$cp0"/>
+      </link>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.3 //@connections.4" incomingConnections="//@connections.1"/>
+      <children visible="true">
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
+      </children>
+    </children>
+    <children xsi:type="pi:ContainerShape" visible="true" active="true">
+      <properties key="obj-type" value="cp"/>
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="398" y="95">
+        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
+      </graphicsAlgorithm>
+      <link>
+        <businessObjects href="../tcp.room#ChoicePoint:ATcpClient$cp1"/>
+      </link>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.6 //@connections.7" incomingConnections="//@connections.0"/>
+      <children visible="true">
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
+      </children>
+    </children>
   </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.5/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.6/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#InitialTransition:ATcpClient$initial"/>
+      <businessObjects href="../tcp.room#InitialTransition:ATcpClient$initial"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -166,11 +166,11 @@
       <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
     </connectionDecorators>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.4/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.5/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpClient$tr0"/>
+      <businessObjects href="../tcp.room#TriggeredTransition:ATcpClient$tr0"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -180,14 +180,15 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;connect:contro..."/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;connect:controlPort>"/>
     </connectionDecorators>
+    <bendpoints x="438" y="372"/>
   </connections>
   <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.2/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpClient$tr1"/>
+      <businessObjects href="../tcp.room#TriggeredTransition:ATcpClient$tr1"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -197,14 +198,14 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;disconnect:con..."/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;disconnect:controlPort>"/>
     </connectionDecorators>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.3/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.3/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#ContinuationTransition:ATcpClient$tr2"/>
+      <businessObjects href="../tcp.room#ContinuationTransition:ATcpClient$tr2"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -216,13 +217,12 @@
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
       <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr2: [else]"/>
     </connectionDecorators>
-    <bendpoints x="612" y="440"/>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.2/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#CPBranchTransition:ATcpClient$tr7"/>
+      <businessObjects href="../tcp.room#CPBranchTransition:ATcpClient$tr7"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -234,13 +234,13 @@
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
       <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr7: [hasError()]"/>
     </connectionDecorators>
-    <bendpoints x="310" y="440"/>
+    <bendpoints x="351" y="329"/>
   </connections>
   <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.3/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpClient$tr3"/>
+      <businessObjects href="../tcp.room#TriggeredTransition:ATcpClient$tr3"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -250,16 +250,15 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr3: &lt;dataPackage:pa..."/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr3: &lt;dataPackage:payloadPort>"/>
     </connectionDecorators>
-    <bendpoints x="713" y="378"/>
-    <bendpoints x="713" y="317"/>
+    <bendpoints x="128" y="374"/>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.6/@anchors.0" end="//@children.0/@children.2/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#ContinuationTransition:ATcpClient$tr4"/>
+      <businessObjects href="../tcp.room#ContinuationTransition:ATcpClient$tr4"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -272,11 +271,11 @@
       <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr4: [else]"/>
     </connectionDecorators>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.6/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.6/@anchors.0" end="//@children.0/@children.4/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#CPBranchTransition:ATcpClient$tr5"/>
+      <businessObjects href="../tcp.room#CPBranchTransition:ATcpClient$tr5"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -286,14 +285,14 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="-98" y="-6" font="//@fonts.0" value="tr5: [hasError()]"/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr5: [hasError()]"/>
     </connectionDecorators>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.6/@anchors.0" end="//@children.0/@children.6/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.4/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpClient$tr6"/>
+      <businessObjects href="../tcp.room#TriggeredTransition:ATcpClient$tr6"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -303,11 +302,9 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr6: &lt;connect:contro..."/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr6: &lt;connect:controlPort>"/>
     </connectionDecorators>
-    <bendpoints x="124" y="335"/>
-    <bendpoints x="140" y="390"/>
-    <bendpoints x="157" y="335"/>
+    <bendpoints x="694" y="406"/>
   </connections>
   <colors red="227" green="238" blue="249"/>
   <colors red="255" green="255" blue="255"/>
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpServer.behavior b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/diagrams/etrice.api.tcp.ATcpServer.behavior
similarity index 83%
rename from runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpServer.behavior
rename to runtime/org.eclipse.etrice.modellib.c/model/etrice/api/diagrams/etrice.api.tcp.ATcpServer.behavior
index c290c90..2b3b0e3 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/diagrams/room.basic.service.tcp.ATcpServer.behavior
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/diagrams/etrice.api.tcp.ATcpServer.behavior
@@ -1,50 +1,50 @@
 <?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATcpServer" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@children.0/@children.4/@link //@connections.3/@link //@connections.4/@link //@connections.5/@link //@children.0/@children.5/@link //@children.0/@children.6/@link //@connections.6/@link //@connections.7/@link //@connections.8/@link" verticalGridUnit="10" version="0.11.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATcpServer" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@children.0/@children.4/@link //@children.0/@children.5/@link //@children.0/@children.6/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link //@connections.4/@link //@connections.5/@link //@connections.6/@link //@connections.7/@link //@connections.8/@link" verticalGridUnit="10" version="0.14.0">
   <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
   <link>
-    <businessObjects href="../TcpService.room#ActorClass:ATcpServer"/>
+    <businessObjects href="../tcp.room#ActorClass:ATcpServer"/>
   </link>
   <children xsi:type="pi:ContainerShape" visible="true" active="true">
     <properties key="obj-type" value="sg"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="44" y="35">
+    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
       <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
       <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
     </graphicsAlgorithm>
     <link>
-      <businessObjects href="../TcpService.room#StateGraph:ATcpServer$sg"/>
+      <businessObjects href="../tcp.room#StateGraph:ATcpServer$sg"/>
     </link>
     <children visible="true">
       <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
+      <properties key="obj-type" value="ini"/>
       <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
         <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#StateGraph:ATcpServer$sg"/>
+        <businessObjects href="../tcp.room#StateGraph:ATcpServer$sg"/>
       </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0"/>
       <children visible="true">
         <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
       </children>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
       <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="130" height="90" x="532" y="155">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="70" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="45" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="35" y="24">
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="121" height="90" x="159" y="189">
+        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="61" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="36" y="3" cornerHeight="5" cornerWidth="5"/>
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
             <points x="-3" y="-3"/>
             <points x="-3" y="3"/>
             <points x="-11" y="3"/>
           </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="35" y="24">
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
             <points x="3" y="-3"/>
             <points x="3" y="3"/>
             <points x="11" y="3"/>
           </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="35" y="24">
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
             <points x="-2" y="-3"/>
             <points x="-2" y="3"/>
             <points x="2" y="3"/>
@@ -53,29 +53,29 @@
         </graphicsAlgorithmChildren>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpServer$connected"/>
+        <businessObjects href="../tcp.room#SimpleState:ATcpServer$connected"/>
       </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1 //@connections.2" incomingConnections="//@connections.1 //@connections.4"/>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1 //@connections.2" incomingConnections="//@connections.1 //@connections.4" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
       <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="70" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="connected"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="61" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="connected"/>
       </children>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
       <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="147" height="90" x="230" y="155">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="87" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="62" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="43" y="24">
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="133" height="90" x="388" y="189">
+        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="73" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="48" y="3" cornerHeight="5" cornerWidth="5"/>
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="36" y="24">
             <points x="-3" y="-3"/>
             <points x="-3" y="3"/>
             <points x="-11" y="3"/>
           </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="43" y="24">
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="36" y="24">
             <points x="3" y="-3"/>
             <points x="3" y="3"/>
             <points x="11" y="3"/>
           </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="43" y="24">
+          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="36" y="24">
             <points x="-2" y="-3"/>
             <points x="-2" y="3"/>
             <points x="2" y="3"/>
@@ -84,29 +84,16 @@
         </graphicsAlgorithmChildren>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpServer$unconnected"/>
+        <businessObjects href="../tcp.room#SimpleState:ATcpServer$unconnected"/>
       </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.3" incomingConnections="//@connections.2 //@connections.6 //@connections.5"/>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.3" incomingConnections="//@connections.2 //@connections.5 //@connections.6" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
       <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="87" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="unconnected"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="451" y="308">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#ChoicePoint:ATcpServer$cp1"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.4 //@connections.5" incomingConnections="//@connections.3"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="73" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="unconnected"/>
       </children>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
       <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="70" y="155">
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="652" y="189">
         <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
           <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
           <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="30" y="24">
@@ -128,20 +115,33 @@
         </graphicsAlgorithmChildren>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpServer$initError"/>
+        <businessObjects href="../tcp.room#SimpleState:ATcpServer$initError"/>
       </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.8" incomingConnections="//@connections.7 //@connections.8" referencedGraphicsAlgorithm="//@children.0/@children.5/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.8" incomingConnections="//@connections.7 //@connections.8" referencedGraphicsAlgorithm="//@children.0/@children.4/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
       <children visible="true">
         <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="initError"/>
       </children>
     </children>
     <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="248" y="95">
+      <properties key="obj-type" value="cp"/>
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="310" y="376">
         <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
       </graphicsAlgorithm>
       <link>
-        <businessObjects href="../TcpService.room#ChoicePoint:ATcpServer$cp0"/>
+        <businessObjects href="../tcp.room#ChoicePoint:ATcpServer$cp1"/>
+      </link>
+      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.4 //@connections.5" incomingConnections="//@connections.3"/>
+      <children visible="true">
+        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
+      </children>
+    </children>
+    <children xsi:type="pi:ContainerShape" visible="true" active="true">
+      <properties key="obj-type" value="cp"/>
+      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="430" y="95">
+        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
+      </graphicsAlgorithm>
+      <link>
+        <businessObjects href="../tcp.room#ChoicePoint:ATcpServer$cp0"/>
       </link>
       <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.6 //@connections.7" incomingConnections="//@connections.0"/>
       <children visible="true">
@@ -153,7 +153,7 @@
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#InitialTransition:ATcpServer$initial"/>
+      <businessObjects href="../tcp.room#InitialTransition:ATcpServer$initial"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -170,7 +170,7 @@
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpServer$tr5"/>
+      <businessObjects href="../tcp.room#TriggeredTransition:ATcpServer$tr5"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -180,17 +180,15 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr5: &lt;dataPackage:pa..."/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr5: &lt;dataPackage:payloadPort>"/>
     </connectionDecorators>
-    <bendpoints x="726" y="278"/>
-    <bendpoints x="767" y="338"/>
-    <bendpoints x="697" y="316"/>
+    <bendpoints x="133" y="316"/>
   </connections>
   <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.3/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpServer$tr6"/>
+      <businessObjects href="../tcp.room#TriggeredTransition:ATcpServer$tr6"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -200,14 +198,14 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr6: &lt;disconnect:con..."/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="-59" y="1" font="//@fonts.0" value="tr6: &lt;disconnect:controlPort>"/>
     </connectionDecorators>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.4/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.5/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpServer$tr7"/>
+      <businessObjects href="../tcp.room#TriggeredTransition:ATcpServer$tr7"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -217,14 +215,15 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr7: &lt;connect:contro..."/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr7: &lt;connect:controlPort>"/>
     </connectionDecorators>
+    <bendpoints x="416" y="331"/>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.2/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#ContinuationTransition:ATcpServer$tr4"/>
+      <businessObjects href="../tcp.room#ContinuationTransition:ATcpServer$tr4"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -236,13 +235,12 @@
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
       <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr4: [else]"/>
     </connectionDecorators>
-    <bendpoints x="641" y="368"/>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.3/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.3/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#CPBranchTransition:ATcpServer$tr8"/>
+      <businessObjects href="../tcp.room#CPBranchTransition:ATcpServer$tr8"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -252,15 +250,15 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="29" y="14" font="//@fonts.0" value="tr8: [hasError()]"/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr8: [hasError()]"/>
     </connectionDecorators>
-    <bendpoints x="347" y="368"/>
+    <bendpoints x="494" y="387"/>
   </connections>
   <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.6/@anchors.0" end="//@children.0/@children.3/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#ContinuationTransition:ATcpServer$tr0"/>
+      <businessObjects href="../tcp.room#ContinuationTransition:ATcpServer$tr0"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -273,11 +271,11 @@
       <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: [else]"/>
     </connectionDecorators>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.6/@anchors.0" end="//@children.0/@children.5/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.6/@anchors.0" end="//@children.0/@children.4/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#CPBranchTransition:ATcpServer$tr1"/>
+      <businessObjects href="../tcp.room#CPBranchTransition:ATcpServer$tr1"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -287,14 +285,14 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="-100" y="-2" font="//@fonts.0" value="tr1: [hasError()]"/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: [hasError()]"/>
     </connectionDecorators>
   </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.5/@anchors.0">
+  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.4/@anchors.0">
     <properties key="obj-type" value="trans"/>
     <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
     <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpServer$tr2"/>
+      <businessObjects href="../tcp.room#TriggeredTransition:ATcpServer$tr2"/>
     </link>
     <connectionDecorators visible="true" locationRelative="true" location="1.0">
       <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
@@ -304,10 +302,9 @@
       </graphicsAlgorithm>
     </connectionDecorators>
     <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr2: &lt;connect:contro..."/>
+      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr2: &lt;connect:controlPort>"/>
     </connectionDecorators>
-    <bendpoints x="174" y="355"/>
-    <bendpoints x="143" y="301"/>
+    <bendpoints x="752" y="394"/>
   </connections>
   <colors red="227" green="238" blue="249"/>
   <colors red="255" green="255" blue="255"/>
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/interrupt.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/interrupt.room
new file mode 100644
index 0000000..6458ddb
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/interrupt.room
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2019 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+ 
+RoomModel etrice.api.interrupt {
+
+	import etrice.api.types.uint8
+
+	ExternalType PInterruptConjPort -> "PInterruptConjPort"
+	ExternalType etMessage -> "etMessage"
+	ExternalType etHighPrioFunc -> "etHighPrioFunc"
+
+	ProtocolClass PInterrupt {
+		incoming {
+			Message event()
+		}
+		conjugated PortClass
+		{
+			usercode '''#include "messaging/etMessageService.h"'''
+			handle incoming event '''// the message should be sent via the fire operation !!'''
+			Operation export(): PInterruptConjPort ref '''
+				msg.address = self->peerAddress;
+				msg.evtID = PInterrupt_IN_event;
+				callback.func=(void (*)(void*))PInterruptConjPort_dispatch;
+				callback.param=(void *)self;
+				etMessageService_registerHighPrioFunc(self->msgService,&callback);
+				return self;'''
+			Operation dispatch() '''
+				// this operation will be executed from the message service
+				if (enable){
+					enable=0;
+					self->msgService->msgDispatcher(&msg);
+				}'''
+			Operation fire() '''
+				// this method runs on interrupt level
+				enable=1;
+				etSema_wakeupFromISR(&self->msgService->executionSemaphore);'''
+			Attribute msg: etMessage = "{0}"
+			Attribute callback: etHighPrioFunc = "{0,0}"
+			Attribute enable: uint8 = "0"
+		}
+	}
+}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/Language.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/language.room
similarity index 67%
rename from runtime/org.eclipse.etrice.modellib.c/model/Language.room
rename to runtime/org.eclipse.etrice.modellib.c/model/etrice/api/language.room
index 7de780b..3b67525 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/Language.room
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/language.room
@@ -1,3 +1,3 @@
-RoomModel room.basic.language {
+RoomModel etrice.api.language {
 	PrimitiveType languageIndicator: ptInteger -> 'int8' default '2'
 }
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/logger.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/logger.room
new file mode 100644
index 0000000..2ba153e
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/logger.room
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2019 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+ 
+RoomModel etrice.api.logger {
+
+	import etrice.api.types.voidType
+	import etrice.api.types.char
+
+	/** <!-- asciidoc -->
+	 * Protocol for logging text messages.
+	 * 
+	 * This protocol is a service and can be accessed via an SAP. It provides PortOperations to log (formatted) messages.
+	 * [source, room]
+	 * ----
+	 * logger.log("message");
+	 * logger.logF("counter %d", 100);
+	 * ----
+	 */
+	ProtocolClass PLogger {
+		usercode3 '''
+			#include <stdarg.h>
+			extern void PLogging_internal_logF();
+		'''
+		conjugated PortClass
+		{
+
+			/**
+			 *  Logs a simple message. Appends line separator.
+			 */
+			Operation log(message: char ref) '''
+				logF(message, NULL);
+			'''
+
+			/**
+			 *  Logs a formatted message with arguments. Appends line separator.
+			 */
+			Operation logF(format: char ref, args: voidType varargs) '''
+				va_list argptr;
+				va_start(argptr, format);
+				// TODO call etLogger
+				PLogger_internal_logF(format, argptr);
+				va_end(argptr);
+			'''
+		}
+	}
+}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/TcpService.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/tcp.room
similarity index 88%
rename from runtime/org.eclipse.etrice.modellib.c/model/TcpService.room
rename to runtime/org.eclipse.etrice.modellib.c/model/etrice/api/tcp.room
index bc76416..72ac678 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/TcpService.room
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/tcp.room
@@ -1,6 +1,75 @@
-RoomModel room.basic.service.tcp {
+/*******************************************************************************
+ * Copyright (c) 2019 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+ 
+RoomModel etrice.api.tcp {
 
-	import room.basic.types.* from "Types.room"
+	import etrice.api.types.boolean
+	import etrice.api.types.int8
+	import etrice.api.types.int32
+	import etrice.api.types.string
+	import etrice.api.types.charPtr
+
+	ExternalType etSocketServerData -> "etSocketServerData"
+	ExternalType etSocketConnectionData -> "etSocketConnectionData"
+
+	DataClass DTcpControl {
+		Attribute IPAddr: string
+		Attribute TcpPort: int32
+	}
+
+	DataClass DTcpPayload {
+		Attribute connectionId: int32
+		Attribute length: int32
+		Attribute data [32]: int8
+
+		Operation getMaxLength(): int32 '''return 32;'''
+
+		Operation setAsString(value: charPtr) '''
+			/* used macros: data, length */
+			int valLength = (strlen(value)+1 > 32)? 32 : strlen(value) + 1;
+			memcpy(data, value, valLength);
+			data[31] = '\0';
+			length = valLength;'''
+
+		Operation setData(value: int8 ref, size: int32) '''
+			/* used macros: data, length */
+			strncpy(data, value, ((size>32)?32:size));
+			length = size;'''
+
+		Operation getAsString(): charPtr '''
+			/* used macros: data */
+			data[31] = '\0';
+			return data;'''
+	}
+
+	ProtocolClass PTcpControl {
+		incoming {
+			Message connect(DTcpControl)
+			Message disconnect()
+		}
+		outgoing {
+			Message connected()
+			Message disconnected()
+			Message error()
+		}
+	}
+
+	ProtocolClass PTcpPayload {
+		incoming {
+			Message dataPackage(DTcpPayload)
+		}
+		outgoing {
+			Message dataPackage(DTcpPayload)
+		}
+	}
 
 	ActorClass ATcpServer {
 		Interface {
@@ -21,8 +90,7 @@
 					DTcpPayload_setData(&payloadRecvBuffer, data, size);
 					payloadPort_dataPackage(&payloadRecvBuffer);
 					return ETSOCKET_OK;
-				}
-			'''
+				}'''
 			external Port controlPort
 			external Port payloadPort
 			Attribute lastError: int32
@@ -35,12 +103,10 @@
 				server = etCreateSocketServerData();
 				server->receiver = socketReceiver;
 				server->bufferProvider = bufferProvider;
-				server->userData = self;
-			'''
+				server->userData = self;'''
 			dtor '''
 				etCleanupSockets();
-				etFreeSocketServerData(server);
-			'''
+				etFreeSocketServerData(server);'''
 
 //			Operation stopUser() {
 //				"/* stop user: close socket */"
@@ -57,8 +123,7 @@
 						/* send payload to connection */
 						setErrorCode(etWriteServerSocket(server, transitionData->connectionId, transitionData->length, transitionData->data));
 						if(hasError())
-							controlPort.error();
-					'''
+							controlPort.error();'''
 				}
 				Transition tr6: connected -> unconnected {
 					triggers {
@@ -69,8 +134,7 @@
 						etCloseAllServerSockets(server);
 						etStopSocketServer(server);
 						
-						controlPort.disconnected();
-					'''
+						controlPort.disconnected();'''
 				}
 				Transition tr7: unconnected -> cp cp1 {
 					triggers {
@@ -78,8 +142,7 @@
 					}
 					action '''
 						/* start accept thread */
-						setErrorCode(etStartListening(server, transitionData->TcpPort));
-					'''
+						setErrorCode(etStartListening(server, transitionData->TcpPort));'''
 				}
 				Transition tr4: cp cp1 -> connected {
 					action '''controlPort.connected();'''
@@ -208,58 +271,4 @@
 			}
 		}
 	}
-
-	ProtocolClass PTcpControl {
-		incoming {
-			Message connect(DTcpControl)
-			Message disconnect()
-		}
-		outgoing {
-			Message connected()
-			Message disconnected()
-			Message error()
-		}
-	}
-
-	ProtocolClass PTcpPayload {
-		incoming {
-			Message dataPackage(DTcpPayload)
-		}
-		outgoing {
-			Message dataPackage(DTcpPayload)
-		}
-	}
-
-	DataClass DTcpControl {
-		Attribute IPAddr: string
-		Attribute TcpPort: int32
-	}
-
-	DataClass DTcpPayload {
-		Attribute connectionId: int32
-		Attribute length: int32
-		Attribute data [32]: int8
-
-		Operation getMaxLength(): int32 '''return 32;'''
-
-		Operation setAsString(value: charPtr) '''
-			/* used macros: data, length */
-			int valLength = (strlen(value)+1 > 32)? 32 : strlen(value) + 1;
-			memcpy(data, value, valLength);
-			data[31] = '\0';
-			length = valLength;'''
-
-		Operation setData(value: int8 ref, size: int32) '''
-			/* used macros: data, length */
-			strncpy(data, value, ((size>32)?32:size));
-			length = size;'''
-
-		Operation getAsString(): charPtr '''
-			/* used macros: data */
-			data[31] = '\0';
-			return data;'''
-	}
-
-	ExternalType etSocketServerData -> "etSocketServerData"
-	ExternalType etSocketConnectionData -> "etSocketConnectionData"
 }
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/Tests.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/testcontrol.room
similarity index 74%
rename from runtime/org.eclipse.etrice.modellib.c/model/Tests.room
rename to runtime/org.eclipse.etrice.modellib.c/model/etrice/api/testcontrol.room
index b503022..488e10c 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/Tests.room
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/testcontrol.room
@@ -1,23 +1,48 @@
-RoomModel room.basic.test {
+/*******************************************************************************
+ * Copyright (c) 2019 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+ 
+RoomModel etrice.api.testcontrol {
 
-	import room.basic.service.timing.* from "TimingService.room"
-	import room.basic.types.* from "Types.room"
+	import etrice.api.types.boolean
+	import etrice.api.types.int16
 
 	/**
-	 * A SubSystemClass or ActorClass having this annotation is construed as an instance.<br>
-	 * During generation the necessary instantiation (LogicalSystem, SubSystemRef etc.) and mapping will be created. 
-	 * <p>
-	 * Must not have LogicalThreads. Globally only once allowed. Runtime execution on DefaultThread of given PhysicalSystem.
-	 * </p>
+	 * Simple protocol to start or stop tests.
 	 */
-	AnnotationType TestInstance {
-		target = { SubSystemClass, ActorClass
+	ProtocolClass PTestControl {
+		incoming {
+
+			/**
+			 *  Start test execution.
+			 */
+			Message start()
+
+			/**
+			 *  Abort test execution.
+			 */
+			Message abort()
 		}
+		outgoing {
+
+			/**
+			 *  Reply after test execution is done. Status is true if all tests have passed.
+			 */
+			Message done(boolean)
+		}
+//		semantics {
+//			in:start -> out:done
+//			in:abort -> out:done
+//		}
 	}
 
-	/**
-	 * SequentialTestExecutor that can started/aborted via exeControl.
-	 */
 	ActorClass ControllableSequentialTestExecutor {
 		Interface {
 
@@ -66,7 +91,7 @@
 						<done: control>
 					}
 					action '''
-						overallSuccess &= success;
+						overallSuccess &= transitionData;
 						current++;'''
 				}
 				Transition tr3: cp cp0 -> idle {
@@ -103,9 +128,7 @@
 			conjugated Port control[*]: PTestControl
 		}
 		Structure {
-			usercode3 {
-				"#include \"etUnit/etUnit.h\""
-			}
+			usercode3 '''#include "etUnit/etUnit.h"'''
 			external Port control
 			Attribute current: int16
 		}
@@ -137,29 +160,4 @@
 		}
 	}
 
-	ProtocolClass PTestControl {
-		incoming {
-
-			/**
-			 *  Start test execution.
-			 */
-			Message start()
-
-			/**
-			 *  Abort test execution.
-			 */
-			Message abort()
-		}
-		outgoing {
-
-			/**
-			 *  Test execution finished or aborted.
-			 */
-			Message done(success: boolean)
-		}
-//		semantics {
-//			in:start -> out:done
-//			in:abort -> out:done
-//		}
-	}
 }
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/TimingService.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room
similarity index 61%
rename from runtime/org.eclipse.etrice.modellib.c/model/TimingService.room
rename to runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room
index 0ab7293..b36c042 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/TimingService.room
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/timer.room
@@ -1,28 +1,98 @@
-RoomModel room.basic.service.timing {
+/*******************************************************************************
+ * Copyright (c) 2019 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+ 
+RoomModel etrice.api.timer {
 
-	import room.basic.types.* from "Types.room"
+	import etrice.api.types.boolean
+	import etrice.api.types.int8
+	import etrice.api.types.int32
+	import etrice.api.types.uint32
 
-	async ActorClass ATimingService {
+	ProtocolClass PTimer {
+		usercode3 '''
+			#define ET_TIMER_RUNNING	0x01
+			#define ET_TIMER_PERIODIC	0x02'''
+		incoming {
+			Message startTimer(uint32)
+			Message startTimeout(uint32)
+			Message kill()
+		}
+		outgoing {
+			Message timeout()
+		}
+		conjugated PortClass
+		{
+			handle incoming startTimer '''
+				if (status==0){
+					status=ET_TIMER_RUNNING | ET_TIMER_PERIODIC;
+					etPort_sendMessage(self, PTimer_IN_startTimer, sizeof(int32), &data__et);
+				}'''
+			handle incoming startTimeout '''
+				if (status==0){
+					status = ET_TIMER_RUNNING;
+					etPort_sendMessage(self, PTimer_IN_startTimeout, sizeof(int32), &data__et);
+				}'''
+			handle outgoing timeout '''
+				/* TODO: clear active bit in case of single shot timer */
+				if (status!=0){
+					if (status==ET_TIMER_RUNNING){
+						/* single shot timer */
+						status=0;
+						}
+					/* msg to fsm */
+					(*receiveMessageFunc)(actor, self, msg);
+				}'''
+			handle incoming kill '''
+				if (status!=0){
+					status=0;
+					etPort_sendMessage(self, PTimer_IN_kill, 0,NULL);
+				}'''
+			Attribute status: int8 = "0"
+		}
+	}
+
+	ProtocolClass PTimerSupervisionControl {
+		incoming {
+			Message restTimerDeviationHighWaterMark()
+			Message getTimerDeviationHighWaterMark()
+		}
+		outgoing {
+			Message timerDeviationHighWaterMark(uint32)
+		}
+	}
+
+	async ActorClass ATimerService {
 		Interface {
 			SPP timer: PTimer
+			SPP supervisionControl: PTimerSupervisionControl
 		}
 		Structure {
 			usercode1 '''
 				#include "osal/etTime.h" 
-				#define ET_NB_OF_TCBS 30
+				#define ET_NB_OF_TCBS 70
 				typedef struct etTCB etTimerControlBlock; 
 				struct etTCB {
 					etTime expTime;
 					etTime pTime;
 					int32 portIdx;
 					etTimerControlBlock* next;
-					};'''
-			usercode2 '''/*uc2*/'''
-			usercode3 '''/*uc3*/'''
+					};
+			'''
 			ServiceImplementation of timer
-			Attribute tcbs [30]: tcb
+			ServiceImplementation of supervisionControl
+
+			Attribute tcbs [70]: tcb
 			Attribute usedTcbsRoot: tcb ref
 			Attribute freeTcbsRoot: tcb ref
+			Attribute timerDeviationHighWaterMark: targetTime
 		}
 		Behavior {
 			Operation getTcb(): tcb ref '''
@@ -95,12 +165,29 @@
 						return;
 					}
 				}'''
+
 			Operation isTimeGreater(t1: targetTime ref, t2: targetTime ref): boolean '''
 				if (t1->sec > t2->sec) return ET_TRUE;
 				if (t1->sec < t2->sec) return ET_FALSE;
 				if (t1->nSec > t2->nSec) return ET_TRUE;
 				return ET_FALSE;'''
 
+			Operation subTime(t1: targetTime ref, t2: targetTime ref) '''
+				t1->sec -= t2->sec;
+				
+				while(t2->nSec > t1->nSec){
+					t1->sec--;
+					t1->nSec += 1000000000L;
+				}
+				
+				t1->nSec -= t2->nSec;
+				
+				while(t1->nSec >= 1000000000L){
+					t1->sec++;
+					t1->nSec-=1000000000L;
+				}
+			'''
+
 			Operation addTime(t1: targetTime ref, t2: targetTime ref) '''
 				t1->sec += t2->sec;
 				t1->nSec += t2->nSec;
@@ -126,25 +213,29 @@
 						freeTcbsRoot=&tcbs[0];
 						tcbs[ET_NB_OF_TCBS-1].next=0;
 						for (i=0;i<ET_NB_OF_TCBS-1;i++){
-							tcbs[i].next=&tcbs[i+1];
-							}'''
+						    tcbs[i].next=&tcbs[i+1];
+						    }
+						    
+						timerDeviationHighWaterMark.sec = 0;
+						timerDeviationHighWaterMark.nSec = 0;
+					'''
 				}
 				Transition tr1: Operational -> Operational {
 					triggers {
 						<startTimeout: timer>
 					}
 					action '''
-						etTimerControlBlock* transitionDatar = getTcb();
+						etTimerControlBlock* timer = getTcb();
 						etTime t;
-						if (transitionDatar!= 0){
+						if (timer!= 0){
 							t.sec=transitionData/1000;
 							t.nSec=(transitionData%1000)*1000000L;
-							transitionDatar->pTime.sec = 0;
-							transitionDatar->pTime.nSec = 0;
-							transitionDatar->portIdx=((etReplSubPort*)ifitem)->index;
-							getTimeFromTarget(&(transitionDatar->expTime));
-							addTime(&(transitionDatar->expTime),&t);
-							putTcbToUsedList(transitionDatar);
+							timer->pTime.sec = 0;
+							timer->pTime.nSec = 0;
+							timer->portIdx=((etReplSubPort*)ifitem)->index;
+							getTimeFromTarget(&(timer->expTime));
+							addTime(&(timer->expTime),&t);
+							putTcbToUsedList(timer);
 							}'''
 				}
 				Transition tr3: Operational -> Operational {
@@ -152,16 +243,16 @@
 						<startTimer: timer>
 					}
 					action '''
-						etTimerControlBlock* transitionDatar = getTcb();
+						etTimerControlBlock* timer = getTcb();
 						etTime t;
-						if (transitionDatar!= 0){
+						if (timer!= 0){
 							t.sec=transitionData/1000;
 							t.nSec=(transitionData%1000)*1000000L;
-							transitionDatar->pTime = t;
-							transitionDatar->portIdx=((etReplSubPort*)ifitem)->index;
-							getTimeFromTarget(&(transitionDatar->expTime));
-							addTime(&(transitionDatar->expTime),&t);
-							putTcbToUsedList(transitionDatar);
+							timer->pTime = t;
+							timer->portIdx=((etReplSubPort*)ifitem)->index;
+							getTimeFromTarget(&(timer->expTime));
+							addTime(&(timer->expTime),&t);
+							putTcbToUsedList(timer);
 							}'''
 				}
 				Transition tr4: Operational -> Operational {
@@ -180,6 +271,11 @@
 						getTimeFromTarget(&t);
 						while (usedTcbsRoot !=0 ){
 							if (isTimeGreater(&t,&(usedTcbsRoot->expTime))){
+								// maintain deviation hig water mark
+								subTime(&t, &(usedTcbsRoot->expTime));
+								if (isTimeGreater(&t,&timerDeviationHighWaterMark)){
+									timerDeviationHighWaterMark = t; 
+								} 
 								timer[usedTcbsRoot->portIdx].timeout();
 								temp=usedTcbsRoot;
 								usedTcbsRoot=usedTcbsRoot->next;
@@ -196,60 +292,37 @@
 									}
 							}'''
 				}
+				Transition tr2: Operational -> Operational {
+					triggers {
+						<getTimerDeviationHighWaterMark: supervisionControl>
+					}
+					action '''
+						uint32 dt;
+						
+						dt = timerDeviationHighWaterMark.nSec / 1000 + timerDeviationHighWaterMark.sec * 1000000;
+						supervisionControl[((etReplSubPort*)ifitem)->index].timerDeviationHighWaterMark(dt);'''
+				}
+				Transition tr5: Operational -> Operational {
+					triggers {
+						<restTimerDeviationHighWaterMark: supervisionControl>
+					}
+					action '''
+						timerDeviationHighWaterMark.sec = 0;
+						timerDeviationHighWaterMark.nSec = 0;'''
+				}
 			}
 		}
 	}
 
-	/*
-	 * Protocol for periodic timers and single shot timeouts
-	 */
-	ProtocolClass PTimer {
-		usercode1 '''
-			#define ET_TIMER_RUNNING	0x01
-			#define ET_TIMER_PERIODIC	0x02'''
-		usercode2 '''/*uc2*/'''
-		incoming {
-			/* starts a periodic timer (time in milliseconds) */
-			Message startTimer(uint32)
-			/* starts a single shot timeout (time in milliseconds) */
-			Message startTimeout(uint32)
-			/* kills single shot timeouts and periodic timers */
-			Message kill()
-		}
-		outgoing {
-			/* fires when timeout or timer has expired */			
-			Message timeout()
-		}
-		conjugated PortClass
-		{
-			handle incoming startTimer '''
-				if (status==0){
-					status=ET_TIMER_RUNNING | ET_TIMER_PERIODIC;
-					etPort_sendMessage(self, PTimer_IN_startTimer, sizeof(int32), &data__et);
-				}'''
-			handle incoming startTimeout '''
-				if (status==0){
-					status = ET_TIMER_RUNNING;
-					etPort_sendMessage(self, PTimer_IN_startTimeout, sizeof(int32), &data__et);
-				}'''
-			handle outgoing timeout '''
-				/* TODO: clear active bit in case of single shot timer */
-				if (status!=0){
-					if (status==ET_TIMER_RUNNING){
-						/* single shot timer */
-						status=0;
-						}
-					/* msg to fsm */
-					(*receiveMessageFunc)(actor, self, msg);
-				}'''
-			handle incoming kill '''
-				if (status!=0){
-					status=0;
-					etPort_sendMessage(self, PTimer_IN_kill, 0,NULL);
-				}'''
-			Attribute status: int8 = "0"
-		}
-	}
+//	ProtocolClass PTimerSupervisionControl {
+//		incoming {
+//			Message startSupervision(uint32) ["send the time threshold in us! "]
+//			Message stopSupervision()
+//		}
+//		outgoing {
+//			Message timerAccuracyFault(uint32) ["will be sent when the threshold is reached for one single timer. The parameter can be checked by the receiver to verify that it is the own limit"]
+//		}
+//	}
 	ExternalType tcb -> "etTimerControlBlock" default "{{0,0},{0,0},0,NULL}"
 	ExternalType targetTime -> "etTime" default "{0,0}"
-}
+}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/types.room b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/types.room
new file mode 100644
index 0000000..5521ad2
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/model/etrice/api/types.room
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2019 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+ 
+RoomModel etrice.api.types {
+
+	PrimitiveType boolean: ptBoolean -> 'bool' default 'false'
+	PrimitiveType char: ptCharacter -> 'char' default '0'
+	PrimitiveType int8: ptInteger -> 'int8' default '0'
+	PrimitiveType int16: ptInteger -> 'int16' default '0'
+	PrimitiveType int32: ptInteger -> 'int32' default '0'
+	PrimitiveType int64: ptInteger -> 'int64' default '0'
+
+	PrimitiveType uint8: ptInteger -> 'uint8' default '0'
+	PrimitiveType uint16: ptInteger -> 'uint16' default '0'
+	PrimitiveType uint32: ptInteger -> 'uint32' default '0'
+	PrimitiveType uint64: ptInteger -> 'uint64' default '0'
+
+	PrimitiveType float32: ptReal -> 'float32' default '0'
+	PrimitiveType float64: ptReal -> 'float64' default '0'
+
+	// TODO: define strings for C
+	PrimitiveType charPtr: ptCharacter -> 'charPtr' default '0'
+	PrimitiveType string: ptCharacter -> 'charPtr' default '0'
+
+	// et-datatypes for the model
+	PrimitiveType etAddressId: ptInteger -> 'etAddressId' default '0'
+
+	ExternalType voidType -> 'void' default 'NULL'
+}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.c
new file mode 100644
index 0000000..85cdca5
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.c
@@ -0,0 +1,199 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ActorClass AContractMonitorBase
+ *
+ */
+
+#include "AContractMonitorBase.h"
+
+#include "modelbase/etActor.h"
+#include "debugging/etLogger.h"
+#include "debugging/etMSCLogger.h"
+#include "etUnit/etUnit.h"
+#include "base/etMemory.h"
+
+#include "etrice/api/contracts/monitors/PContractMonitorControl.h"
+
+#include "AContractMonitorBase_Utils.h"
+
+
+/* interface item IDs */
+enum interface_items {
+	IFITEM_monitor_ctrl = 1
+};
+
+/* state IDs */
+enum state_ids {
+	NO_STATE = 0,
+	STATE_TOP = 1,
+	STATE_MAX = 2
+};
+
+/* transition chains */
+enum ChainIDs {
+	CHAIN_TRANS__trStatus_FROM__trBase_TO__trBase_BY_getAndResetStatusmonitor_ctrl__trStatus = 1,
+	CHAIN_TRANS__trForward_FROM__trBase_TO__trBase_BY_setForwardInvalidMessagesmonitor_ctrl__trForward = 2
+};
+
+/* triggers */
+enum triggers {
+	POLLING = 0,
+	TRIG_monitor_ctrl__getAndResetStatus = IFITEM_monitor_ctrl + EVT_SHIFT*PContractMonitorControl_IN_getAndResetStatus,
+	TRIG_monitor_ctrl__setForwardInvalidMessages = IFITEM_monitor_ctrl + EVT_SHIFT*PContractMonitorControl_IN_setForwardInvalidMessages
+};
+
+/* state names */
+static const char* stateStrings[] = {"<no state>","<top>",};
+
+static void setState(AContractMonitorBase* self, etInt16 new_state) {
+	self->state = new_state;
+	ET_MSC_LOGGER_CHANGE_STATE(self->constData->instName, stateStrings[new_state]);
+}
+
+static etInt16 getState(AContractMonitorBase* self) {
+	return self->state;
+}
+
+/* Entry and Exit Codes */
+
+/* Action Codes */
+static void action_TRANS__trStatus_FROM__trBase_TO__trBase_BY_getAndResetStatusmonitor_ctrl__trStatus(AContractMonitorBase* self, const InterfaceItemBase* ifitem) {
+    monitor_ctrl_violationStatus(_violation);
+    _violation = false;
+}
+static void action_TRANS__trForward_FROM__trBase_TO__trBase_BY_setForwardInvalidMessagesmonitor_ctrl__trForward(AContractMonitorBase* self, const InterfaceItemBase* ifitem, bool transitionData) {
+    forwardInvalidMessages = transitionData;
+}
+
+/* State Switch Methods */
+/**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current__et - the current state
+ * @param to - the final parent state
+* @param handler__et - entry and exit codes are called only if not handler (for handler TransitionPoints)
+ */
+static void exitTo(AContractMonitorBase* self, etInt16 current__et, etInt16 to, etBool handler__et) {
+	while (current__et!=to) {
+		switch (current__et) {
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+}
+
+/**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain__et - the chain ID
+ * @param generic_data__et - the generic data pointer
+ * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
+ */
+static etInt16 executeTransitionChain(AContractMonitorBase* self, int chain__et, const InterfaceItemBase* ifitem, void* generic_data__et) {
+	switch (chain__et) {
+		case CHAIN_TRANS__trForward_FROM__trBase_TO__trBase_BY_setForwardInvalidMessagesmonitor_ctrl__trForward:
+		{
+			bool transitionData = *((bool*) generic_data__et);
+			action_TRANS__trForward_FROM__trBase_TO__trBase_BY_setForwardInvalidMessagesmonitor_ctrl__trForward(self, ifitem, transitionData);
+			return STATE_TOP + STATE_MAX;
+		}
+		case CHAIN_TRANS__trStatus_FROM__trBase_TO__trBase_BY_getAndResetStatusmonitor_ctrl__trStatus:
+		{
+			action_TRANS__trStatus_FROM__trBase_TO__trBase_BY_getAndResetStatusmonitor_ctrl__trStatus(self, ifitem);
+			return STATE_TOP + STATE_MAX;
+		}
+			default:
+				/* should not occur */
+				break;
+	}
+	return NO_STATE;
+}
+
+/**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state__et - the state which is entered
+* @param handler__et - entry code is executed if not handler
+ * @return - the ID of the final leaf state
+ */
+static etInt16 enterHistory(AContractMonitorBase* self, etInt16 state__et, etBool handler__et) {
+	if (state__et >= STATE_MAX) {
+		state__et = (etInt16) (state__et - STATE_MAX);
+	}
+	while (ET_TRUE) {
+		switch (state__et) {
+			case STATE_TOP:
+				state__et = self->history[STATE_TOP];
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+	/* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
+}
+
+static void AContractMonitorBase_executeInitTransition(AContractMonitorBase* self) {
+	/* no initial transition allowed for abstract actor class */
+}
+
+/* receiveEvent contains the main implementation of the FSM */
+static void AContractMonitorBase_receiveEventInternal(AContractMonitorBase* self, InterfaceItemBase* ifitem, int localId, int evt, void* generic_data__et) {
+	int trigger__et = localId + EVT_SHIFT*evt;
+	int chain__et = NOT_CAUGHT;
+	etInt16 catching_state__et = NO_STATE;
+	etBool is_handler__et = ET_FALSE;
+	((void)trigger__et);	/* avoids unused warning */
+
+	if (!handleSystemEvent(ifitem, evt, generic_data__et)) {
+		switch (getState(self)) {
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+	if (chain__et != NOT_CAUGHT) {
+		exitTo(self, getState(self), catching_state__et, is_handler__et);
+		{
+			etInt16 next__et = executeTransitionChain(self, chain__et, ifitem, generic_data__et);
+			next__et = enterHistory(self, next__et, is_handler__et);
+			setState(self, next__et);
+		}
+	}
+}
+static void AContractMonitorBase_receiveEvent(AContractMonitorBase* self, InterfaceItemBase* ifitem, int evt, void* generic_data__et) {
+	int localId = (ifitem==NULL)? 0 : ifitem->localId;
+	AContractMonitorBase_receiveEventInternal(self, ifitem, localId, evt, generic_data__et);
+}
+
+void AContractMonitorBase_init(AContractMonitorBase* self){
+	ET_MSC_LOGGER_SYNC_ENTRY("AContractMonitorBase", "init")
+	self->state = STATE_TOP;
+	{
+		int i;
+		for (i=0; i<ACONTRACTMONITORBASE_HISTORY_SIZE; ++i)
+			self->history[i] = NO_STATE;
+	}
+	AContractMonitorBase_executeInitTransition(self);
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void AContractMonitorBase_receiveMessage(void* self, const void* ifitem, const etMessage* msg){
+	ET_MSC_LOGGER_SYNC_ENTRY("AContractMonitorBase", "_receiveMessage")
+	AContractMonitorBase_receiveEvent((AContractMonitorBase*) self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+/*--------------------- user constructor/destructor ---------------------*/
+
+/*--------------------- operations ---------------------*/
+ void AContractMonitorBase_onViolation(AContractMonitorBase* self, charPtr comment) {
+	_violation = true;
+	ET_MSC_LOGGER_VISIBLE_COMMENT(comment);
+	monitor_ctrl_violationOccured();
+}
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.h
new file mode 100644
index 0000000..439b5f4
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.h
@@ -0,0 +1,68 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ActorClass AContractMonitorBase
+ *
+ */
+
+#ifndef _ETRICE_API_CONTRACTS_MONITORS_ACONTRACTMONITORBASE_H_
+#define _ETRICE_API_CONTRACTS_MONITORS_ACONTRACTMONITORBASE_H_
+
+#include "etDatatypes.h"
+#include "messaging/etMessage.h"
+
+/* include all referenced room classes */
+#include "etrice/api/contracts/monitors/PContractMonitorControl.h"
+
+
+typedef struct AContractMonitorBase AContractMonitorBase;
+
+/* const part of ActorClass (ROM) */
+typedef struct AContractMonitorBase_const {
+	const char* instName;
+
+	/* simple ports */
+	const PContractMonitorControlPort monitor_ctrl;
+
+	/* data receive ports */
+
+	/* saps */
+
+	/* replicated ports */
+
+	/* services */
+} AContractMonitorBase_const;
+
+
+/* constant for state machine data */
+#define ACONTRACTMONITORBASE_HISTORY_SIZE 2
+
+/* variable part of ActorClass (RAM) */
+struct AContractMonitorBase {
+	const AContractMonitorBase_const* ET_CONST_MEMBER constData;
+
+	/* data send ports */
+
+	/*--------------------- attributes ---------------------*/
+	 bool _violation;
+	 bool forwardInvalidMessages;
+
+
+	/* state machine variables */
+	etInt16 state;
+	etInt16 history[ACONTRACTMONITORBASE_HISTORY_SIZE];
+};
+
+void AContractMonitorBase_init(AContractMonitorBase* self);
+
+void AContractMonitorBase_receiveMessage(void* self, const void* ifitem, const etMessage* msg);
+
+
+/*--------------------- user constructor/destructor ---------------------*/
+
+/*--------------------- operations ---------------------*/
+ void AContractMonitorBase_onViolation(AContractMonitorBase* self, charPtr comment);
+
+
+#endif /* _ETRICE_API_CONTRACTS_MONITORS_ACONTRACTMONITORBASE_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase_Utils.h
new file mode 100644
index 0000000..122712a
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/AContractMonitorBase_Utils.h
@@ -0,0 +1,41 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ActorClass AContractMonitorBase
+ *
+ */
+
+#ifndef _ETRICE_API_CONTRACTS_MONITORS_ACONTRACTMONITORBASE_UTILS_H_
+#define _ETRICE_API_CONTRACTS_MONITORS_ACONTRACTMONITORBASE_UTILS_H_
+
+#include "etrice/api/contracts/monitors/AContractMonitorBase.h"
+
+/*
+ * access macros for ports, operations and attributes
+*/
+
+/* simple event ports */
+#define monitor_ctrl_violationStatus(data) PContractMonitorControlPort_violationStatus(&self->constData->monitor_ctrl, data)
+#define monitor_ctrl_violationOccured() PContractMonitorControlPort_violationOccured(&self->constData->monitor_ctrl)
+
+/* data receive ports */
+
+/* data send ports */
+
+/* saps */
+
+/* replicated event ports */
+
+/* services */
+
+/* operations */
+#define onViolation(comment) AContractMonitorBase_onViolation(self, comment)
+
+/* attributes */
+#define _violation (self->_violation)
+#define forwardInvalidMessages (self->forwardInvalidMessages)
+
+/* port operations */
+
+#endif /* _ETRICE_API_CONTRACTS_MONITORS_ACONTRACTMONITORBASE_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.c
new file mode 100644
index 0000000..04d7ab1
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.c
@@ -0,0 +1,146 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ProtocolClass PContractMonitorControl
+ * 
+ */
+
+#include "PContractMonitorControl.h"
+#include "debugging/etMSCLogger.h"
+#include "PContractMonitorControl_Utils.h"
+
+
+/*--------------------- port methods */
+
+void PContractMonitorControlPort_violationStatus(const PContractMonitorControlPort* self, bool data__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlPort", "violationStatus")
+		etPort_sendMessage(self, PContractMonitorControl_OUT_violationStatus, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "violationStatus", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PContractMonitorControlReplPort_violationStatus_broadcast(const PContractMonitorControlReplPort* self, bool data__et) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlReplPort", "violationStatus")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PContractMonitorControl_OUT_violationStatus, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "violationStatus", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PContractMonitorControlReplPort_violationStatus(const PContractMonitorControlReplPort* self, int idx__et, bool data__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlReplPort", "violationStatus")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PContractMonitorControl_OUT_violationStatus, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "violationStatus", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void PContractMonitorControlPort_violationOccured(const PContractMonitorControlPort* self) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlPort", "violationOccured")
+		etPort_sendMessage(self, PContractMonitorControl_OUT_violationOccured, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "violationOccured", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PContractMonitorControlReplPort_violationOccured_broadcast(const PContractMonitorControlReplPort* self) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlReplPort", "violationOccured")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PContractMonitorControl_OUT_violationOccured, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "violationOccured", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PContractMonitorControlReplPort_violationOccured(const PContractMonitorControlReplPort* self, int idx__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlReplPort", "violationOccured")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PContractMonitorControl_OUT_violationOccured, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "violationOccured", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+etInt32 PContractMonitorControlReplPort_getReplication(const PContractMonitorControlReplPort* self) {
+	return ((etReplPort*)self)->size;
+}
+
+
+
+void PContractMonitorControlConjPort_getAndResetStatus(const PContractMonitorControlConjPort* self) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlConjPort", "getAndResetStatus")
+		etPort_sendMessage(self, PContractMonitorControl_IN_getAndResetStatus, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "getAndResetStatus", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PContractMonitorControlConjReplPort_getAndResetStatus_broadcast(const PContractMonitorControlConjReplPort* self) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlConjReplPort", "getAndResetStatus")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PContractMonitorControl_IN_getAndResetStatus, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "getAndResetStatus", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PContractMonitorControlConjReplPort_getAndResetStatus(const PContractMonitorControlConjReplPort* self, int idx__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlConjReplPort", "getAndResetStatus")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PContractMonitorControl_IN_getAndResetStatus, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "getAndResetStatus", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void PContractMonitorControlConjPort_setForwardInvalidMessages(const PContractMonitorControlConjPort* self, bool data__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlConjPort", "setForwardInvalidMessages")
+		etPort_sendMessage(self, PContractMonitorControl_IN_setForwardInvalidMessages, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "setForwardInvalidMessages", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PContractMonitorControlConjReplPort_setForwardInvalidMessages_broadcast(const PContractMonitorControlConjReplPort* self, bool data__et) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlConjReplPort", "setForwardInvalidMessages")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PContractMonitorControl_IN_setForwardInvalidMessages, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "setForwardInvalidMessages", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PContractMonitorControlConjReplPort_setForwardInvalidMessages(const PContractMonitorControlConjReplPort* self, int idx__et, bool data__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PContractMonitorControlConjReplPort", "setForwardInvalidMessages")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PContractMonitorControl_IN_setForwardInvalidMessages, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "setForwardInvalidMessages", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+etInt32 PContractMonitorControlConjReplPort_getReplication(const PContractMonitorControlConjReplPort* self) {
+	return ((etReplPort*)self)->size;
+}
+
+
+
+/*--------------------- debug helpers */
+
+/* message names as strings for debugging (generate MSC) */
+static const char* const PContractMonitorControl_messageStrings[] = {"MIN", "violationStatus","violationOccured","getAndResetStatus", "setForwardInvalidMessages", "MAX"};
+
+const char* PContractMonitorControl_getMessageString(int msg_id) {
+	if (msg_id<PContractMonitorControl_MSG_MIN || msg_id>PContractMonitorControl_MSG_MAX+1){
+		/* id out of range */
+		return "Message ID out of range";
+	}
+	else{
+		return PContractMonitorControl_messageStrings[msg_id];
+	}
+}
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.h
new file mode 100644
index 0000000..ce68207
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.h
@@ -0,0 +1,63 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ProtocolClass PContractMonitorControl
+ * 
+ */
+
+#ifndef _ETRICE_API_CONTRACTS_MONITORS_PCONTRACTMONITORCONTROL_H_
+#define _ETRICE_API_CONTRACTS_MONITORS_PCONTRACTMONITORCONTROL_H_
+
+#include "etDatatypes.h"
+#include "modelbase/etPort.h"
+
+
+/* include all referenced room classes */
+
+
+/* message IDs */
+enum PContractMonitorControl_msg_ids {
+	PContractMonitorControl_MSG_MIN = 0,
+	PContractMonitorControl_OUT_violationStatus = 1,
+	PContractMonitorControl_OUT_violationOccured = 2,
+	PContractMonitorControl_IN_getAndResetStatus = 3,
+	PContractMonitorControl_IN_setForwardInvalidMessages = 4,
+	PContractMonitorControl_MSG_MAX = 5
+};
+
+/*--------------------- port structs and methods */
+typedef etPort PContractMonitorControlPort;
+typedef etReplPort PContractMonitorControlReplPort;
+
+
+void PContractMonitorControlPort_violationStatus(const PContractMonitorControlPort* self, bool data);
+void PContractMonitorControlReplPort_violationStatus_broadcast(const PContractMonitorControlReplPort* self, bool data);
+void PContractMonitorControlReplPort_violationStatus(const PContractMonitorControlReplPort* self, int idx, bool data);
+void PContractMonitorControlPort_violationOccured(const PContractMonitorControlPort* self);
+void PContractMonitorControlReplPort_violationOccured_broadcast(const PContractMonitorControlReplPort* self);
+void PContractMonitorControlReplPort_violationOccured(const PContractMonitorControlReplPort* self, int idx);
+
+
+etInt32 PContractMonitorControlReplPort_getReplication(const PContractMonitorControlReplPort* self);
+typedef etPort PContractMonitorControlConjPort;
+typedef etReplPort PContractMonitorControlConjReplPort;
+
+
+void PContractMonitorControlConjPort_getAndResetStatus(const PContractMonitorControlConjPort* self);
+void PContractMonitorControlConjReplPort_getAndResetStatus_broadcast(const PContractMonitorControlConjReplPort* self);
+void PContractMonitorControlConjReplPort_getAndResetStatus(const PContractMonitorControlConjReplPort* self, int idx);
+void PContractMonitorControlConjPort_setForwardInvalidMessages(const PContractMonitorControlConjPort* self, bool data);
+void PContractMonitorControlConjReplPort_setForwardInvalidMessages_broadcast(const PContractMonitorControlConjReplPort* self, bool data);
+void PContractMonitorControlConjReplPort_setForwardInvalidMessages(const PContractMonitorControlConjReplPort* self, int idx, bool data);
+
+
+etInt32 PContractMonitorControlConjReplPort_getReplication(const PContractMonitorControlConjReplPort* self);
+
+/*--------------------- debug helpers */
+
+/* get message string for message id */
+const char* PContractMonitorControl_getMessageString(int msg_id);
+
+
+#endif /* _ETRICE_API_CONTRACTS_MONITORS_PCONTRACTMONITORCONTROL_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl_Utils.h
new file mode 100644
index 0000000..3c45ace
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/contracts/monitors/PContractMonitorControl_Utils.h
@@ -0,0 +1,19 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ProtocolClass PContractMonitorControl
+ * 
+ */
+
+#ifndef _ETRICE_API_CONTRACTS_MONITORS_PCONTRACTMONITORCONTROL_UTILS_H_
+#define _ETRICE_API_CONTRACTS_MONITORS_PCONTRACTMONITORCONTROL_UTILS_H_
+
+#include "etrice/api/contracts/monitors/PContractMonitorControl.h"
+
+/*
+ * access macros for operations and attributes
+*/
+
+
+#endif /* _ETRICE_API_CONTRACTS_MONITORS_PCONTRACTMONITORCONTROL_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/pinterrupt/PInterrupt.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/interrupt/PInterrupt.c
similarity index 100%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/pinterrupt/PInterrupt.c
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/interrupt/PInterrupt.c
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/pinterrupt/PInterrupt.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/interrupt/PInterrupt.h
similarity index 90%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/pinterrupt/PInterrupt.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/interrupt/PInterrupt.h
index 340b806..6395987 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/pinterrupt/PInterrupt.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/interrupt/PInterrupt.h
@@ -5,8 +5,8 @@
  * 
  */
 
-#ifndef _ROOM_BASIC_SERVICE_PINTERRUPT_PINTERRUPT_H_
-#define _ROOM_BASIC_SERVICE_PINTERRUPT_PINTERRUPT_H_
+#ifndef _ETRICE_API_INTERRUPT_PINTERRUPT_H_
+#define _ETRICE_API_INTERRUPT_PINTERRUPT_H_
 
 #include "etDatatypes.h"
 #include "modelbase/etPort.h"
@@ -59,5 +59,5 @@
 const char* PInterrupt_getMessageString(int msg_id);
 
 
-#endif /* _ROOM_BASIC_SERVICE_PINTERRUPT_PINTERRUPT_H_ */
+#endif /* _ETRICE_API_INTERRUPT_PINTERRUPT_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/pinterrupt/PInterrupt_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/interrupt/PInterrupt_Utils.h
similarity index 70%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/pinterrupt/PInterrupt_Utils.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/interrupt/PInterrupt_Utils.h
index edca92e..d84d781 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/pinterrupt/PInterrupt_Utils.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/interrupt/PInterrupt_Utils.h
@@ -5,10 +5,10 @@
  * 
  */
 
-#ifndef _ROOM_BASIC_SERVICE_PINTERRUPT_PINTERRUPT_UTILS_H_
-#define _ROOM_BASIC_SERVICE_PINTERRUPT_PINTERRUPT_UTILS_H_
+#ifndef _ETRICE_API_INTERRUPT_PINTERRUPT_UTILS_H_
+#define _ETRICE_API_INTERRUPT_PINTERRUPT_UTILS_H_
 
-#include "room/basic/service/pinterrupt/PInterrupt.h"
+#include "etrice/api/interrupt/PInterrupt.h"
 
 /*
  * access macros for operations and attributes
@@ -26,5 +26,5 @@
 #define callback (((PInterruptConjPort_var*)(self->varData))->callback)
 #define enable (((PInterruptConjPort_var*)(self->varData))->enable)
 
-#endif /* _ROOM_BASIC_SERVICE_PINTERRUPT_PINTERRUPT_UTILS_H_ */
+#endif /* _ETRICE_API_INTERRUPT_PINTERRUPT_UTILS_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger.c
new file mode 100644
index 0000000..98bc95c
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger.c
@@ -0,0 +1,58 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ProtocolClass PLogger
+ * 
+ */
+
+#include "PLogger.h"
+#include "debugging/etMSCLogger.h"
+#include "PLogger_Utils.h"
+
+/*--------------------- begin user code ---------------------*/
+#include <stdarg.h>
+extern void PLogging_internal_logF();
+
+/*--------------------- end user code ---------------------*/
+
+/*--------------------- port methods */
+etInt32 PLoggerReplPort_getReplication(const PLoggerReplPort* self) {
+	return ((etReplPort*)self)->size;
+}
+
+
+/* begin PLoggerConjPort specific (including base classes) */
+
+/*--------------------- operations ---------------------*/
+ void PLoggerConjPort_log(PLoggerConjPort* self, char* message) {
+	logF(message, NULL);
+}
+ void PLoggerConjPort_logF(PLoggerConjPort* self, char* format, ...) {
+	va_list argptr;
+	va_start(argptr, format);
+	// TODO call etLogger
+	PLogger_internal_logF(format, argptr);
+	va_end(argptr);
+}
+/* end PLoggerConjPort specific (including base classes) */
+
+etInt32 PLoggerConjReplPort_getReplication(const PLoggerConjReplPort* self) {
+	return ((etReplPort*)self)->size;
+}
+
+
+
+/*--------------------- debug helpers */
+
+/* message names as strings for debugging (generate MSC) */
+static const char* const PLogger_messageStrings[] = {"MIN", "MAX"};
+
+const char* PLogger_getMessageString(int msg_id) {
+	if (msg_id<PLogger_MSG_MIN || msg_id>PLogger_MSG_MAX+1){
+		/* id out of range */
+		return "Message ID out of range";
+	}
+	else{
+		return PLogger_messageStrings[msg_id];
+	}
+}
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger.h
new file mode 100644
index 0000000..042b7b2
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger.h
@@ -0,0 +1,50 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ProtocolClass PLogger
+ * 
+ */
+
+#ifndef _ETRICE_API_LOGGER_PLOGGER_H_
+#define _ETRICE_API_LOGGER_PLOGGER_H_
+
+#include "etDatatypes.h"
+#include "modelbase/etPort.h"
+
+
+/* include all referenced room classes */
+
+
+/* message IDs */
+enum PLogger_msg_ids {
+	PLogger_MSG_MIN = 0,
+	PLogger_MSG_MAX = 1
+};
+
+/*--------------------- port structs and methods */
+typedef etPort PLoggerPort;
+typedef etReplPort PLoggerReplPort;
+
+
+
+
+etInt32 PLoggerReplPort_getReplication(const PLoggerReplPort* self);
+typedef etPort PLoggerConjPort;
+typedef etReplPort PLoggerConjReplPort;
+
+
+
+/*--------------------- operations ---------------------*/
+ void PLoggerConjPort_log(PLoggerConjPort* self, char* message);
+ void PLoggerConjPort_logF(PLoggerConjPort* self, char* format, ...);
+
+etInt32 PLoggerConjReplPort_getReplication(const PLoggerConjReplPort* self);
+
+/*--------------------- debug helpers */
+
+/* get message string for message id */
+const char* PLogger_getMessageString(int msg_id);
+
+
+#endif /* _ETRICE_API_LOGGER_PLOGGER_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger_Utils.h
new file mode 100644
index 0000000..bdf8546
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/logger/PLogger_Utils.h
@@ -0,0 +1,26 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ProtocolClass PLogger
+ * 
+ */
+
+#ifndef _ETRICE_API_LOGGER_PLOGGER_UTILS_H_
+#define _ETRICE_API_LOGGER_PLOGGER_UTILS_H_
+
+#include "etrice/api/logger/PLogger.h"
+
+/*
+ * access macros for operations and attributes
+*/
+
+/* conjugate port class */
+
+/* operations */
+#define log(message) PLoggerConjPort_log(self, message)
+#define logF(format, ...) PLoggerConjPort_logF(self, format, __VA_ARGS__)
+
+/* attributes */
+
+#endif /* _ETRICE_API_LOGGER_PLOGGER_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient.c
similarity index 97%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient.c
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient.c
index 7896aa2..c3aba11 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient.c
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient.c
@@ -13,8 +13,8 @@
 #include "etUnit/etUnit.h"
 #include "base/etMemory.h"
 
-#include "room/basic/service/tcp/PTcpControl.h"
-#include "room/basic/service/tcp/PTcpPayload.h"
+#include "etrice/api/tcp/PTcpControl.h"
+#include "etrice/api/tcp/PTcpPayload.h"
 
 #include "ATcpClient_Utils.h"
 
@@ -67,7 +67,7 @@
 };
 
 /* state names */
-static char* stateStrings[] = {"<no state>","<top>","unconnected",
+static const char* stateStrings[] = {"<no state>","<top>","unconnected",
 "connected",
 "initError"
 };
@@ -322,7 +322,7 @@
 
 void ATcpClient_receiveMessage(void* self, const void* ifitem, const etMessage* msg){
 	ET_MSC_LOGGER_SYNC_ENTRY("ATcpClient", "_receiveMessage")
-	ATcpClient_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+	ATcpClient_receiveEvent((ATcpClient*) self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
 
 	ET_MSC_LOGGER_SYNC_EXIT
 }
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient.h
similarity index 80%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient.h
index a814e21..0d64981 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient.h
@@ -5,16 +5,16 @@
  *
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_ATCPCLIENT_H_
-#define _ROOM_BASIC_SERVICE_TCP_ATCPCLIENT_H_
+#ifndef _ETRICE_API_TCP_ATCPCLIENT_H_
+#define _ETRICE_API_TCP_ATCPCLIENT_H_
 
 #include "etDatatypes.h"
 #include "messaging/etMessage.h"
 
 /* include all referenced room classes */
-#include "room/basic/service/tcp/DTcpPayload.h"
-#include "room/basic/service/tcp/PTcpControl.h"
-#include "room/basic/service/tcp/PTcpPayload.h"
+#include "etrice/api/tcp/DTcpPayload.h"
+#include "etrice/api/tcp/PTcpControl.h"
+#include "etrice/api/tcp/PTcpPayload.h"
 
 /*--------------------- begin user code ---------------------*/
 #include "osal/etTcpSockets.h"
@@ -41,11 +41,11 @@
 
 
 /* constant for state machine data */
-#define ATCPCLIENT_HISTORY_SIZE 5
+#define ATCPCLIENT_HISTORY_SIZE 2
 
 /* variable part of ActorClass (RAM) */
 struct ATcpClient {
-	const ATcpClient_const* const constData;
+	const ATcpClient_const* ET_CONST_MEMBER constData;
 
 	/* data send ports */
 
@@ -74,5 +74,5 @@
  void ATcpClient_setErrorCode(ATcpClient* self, int32 value);
 
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_ATCPCLIENT_H_ */
+#endif /* _ETRICE_API_TCP_ATCPCLIENT_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient_Utils.h
similarity index 81%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient_Utils.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient_Utils.h
index c834893..fd463e3 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpClient_Utils.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpClient_Utils.h
@@ -5,10 +5,10 @@
  *
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_ATCPCLIENT_UTILS_H_
-#define _ROOM_BASIC_SERVICE_TCP_ATCPCLIENT_UTILS_H_
+#ifndef _ETRICE_API_TCP_ATCPCLIENT_UTILS_H_
+#define _ETRICE_API_TCP_ATCPCLIENT_UTILS_H_
 
-#include "room/basic/service/tcp/ATcpClient.h"
+#include "etrice/api/tcp/ATcpClient.h"
 
 /*
  * access macros for ports, operations and attributes
@@ -41,5 +41,5 @@
 
 /* port operations */
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_ATCPCLIENT_UTILS_H_ */
+#endif /* _ETRICE_API_TCP_ATCPCLIENT_UTILS_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer.c
similarity index 97%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer.c
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer.c
index 098797e..c5f6a63 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer.c
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer.c
@@ -13,8 +13,8 @@
 #include "etUnit/etUnit.h"
 #include "base/etMemory.h"
 
-#include "room/basic/service/tcp/PTcpControl.h"
-#include "room/basic/service/tcp/PTcpPayload.h"
+#include "etrice/api/tcp/PTcpControl.h"
+#include "etrice/api/tcp/PTcpPayload.h"
 
 #include "ATcpServer_Utils.h"
 
@@ -31,7 +31,6 @@
 	payloadPort_dataPackage(&payloadRecvBuffer);
 	return ETSOCKET_OK;
 }
-
 /*--------------------- end user code ---------------------*/
 
 /* interface item IDs */
@@ -68,7 +67,7 @@
 };
 
 /* state names */
-static char* stateStrings[] = {"<no state>","<top>","connected",
+static const char* stateStrings[] = {"<no state>","<top>","connected",
 "unconnected",
 "initError"
 };
@@ -321,7 +320,7 @@
 
 void ATcpServer_receiveMessage(void* self, const void* ifitem, const etMessage* msg){
 	ET_MSC_LOGGER_SYNC_ENTRY("ATcpServer", "_receiveMessage")
-	ATcpServer_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+	ATcpServer_receiveEvent((ATcpServer*) self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
 
 	ET_MSC_LOGGER_SYNC_EXIT
 }
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer.h
similarity index 80%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer.h
index 39e4c75..3f2d475 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer.h
@@ -5,16 +5,16 @@
  *
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_ATCPSERVER_H_
-#define _ROOM_BASIC_SERVICE_TCP_ATCPSERVER_H_
+#ifndef _ETRICE_API_TCP_ATCPSERVER_H_
+#define _ETRICE_API_TCP_ATCPSERVER_H_
 
 #include "etDatatypes.h"
 #include "messaging/etMessage.h"
 
 /* include all referenced room classes */
-#include "room/basic/service/tcp/DTcpPayload.h"
-#include "room/basic/service/tcp/PTcpControl.h"
-#include "room/basic/service/tcp/PTcpPayload.h"
+#include "etrice/api/tcp/DTcpPayload.h"
+#include "etrice/api/tcp/PTcpControl.h"
+#include "etrice/api/tcp/PTcpPayload.h"
 
 /*--------------------- begin user code ---------------------*/
 #include "osal/etTcpSockets.h"
@@ -41,11 +41,11 @@
 
 
 /* constant for state machine data */
-#define ATCPSERVER_HISTORY_SIZE 5
+#define ATCPSERVER_HISTORY_SIZE 2
 
 /* variable part of ActorClass (RAM) */
 struct ATcpServer {
-	const ATcpServer_const* const constData;
+	const ATcpServer_const* ET_CONST_MEMBER constData;
 
 	/* data send ports */
 
@@ -74,5 +74,5 @@
  void ATcpServer_setErrorCode(ATcpServer* self, int32 value);
 
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_ATCPSERVER_H_ */
+#endif /* _ETRICE_API_TCP_ATCPSERVER_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer_Utils.h
similarity index 81%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer_Utils.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer_Utils.h
index 6406376..41ba8d8 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/ATcpServer_Utils.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/ATcpServer_Utils.h
@@ -5,10 +5,10 @@
  *
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_ATCPSERVER_UTILS_H_
-#define _ROOM_BASIC_SERVICE_TCP_ATCPSERVER_UTILS_H_
+#ifndef _ETRICE_API_TCP_ATCPSERVER_UTILS_H_
+#define _ETRICE_API_TCP_ATCPSERVER_UTILS_H_
 
-#include "room/basic/service/tcp/ATcpServer.h"
+#include "etrice/api/tcp/ATcpServer.h"
 
 /*
  * access macros for ports, operations and attributes
@@ -41,5 +41,5 @@
 
 /* port operations */
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_ATCPSERVER_UTILS_H_ */
+#endif /* _ETRICE_API_TCP_ATCPSERVER_UTILS_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl.c
similarity index 99%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl.c
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl.c
index 10dc9c9..d512f44 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl.c
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl.c
@@ -18,4 +18,3 @@
 	memcpy(target, source, sizeof(DTcpControl));
 }
 
-
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl.h
similarity index 74%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl.h
index ed7edcd..d8ad8b5 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl.h
@@ -5,8 +5,8 @@
  * 
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_DTCPCONTROL_H_
-#define _ROOM_BASIC_SERVICE_TCP_DTCPCONTROL_H_
+#ifndef _ETRICE_API_TCP_DTCPCONTROL_H_
+#define _ETRICE_API_TCP_DTCPCONTROL_H_
 
 #include "etDatatypes.h"
 
@@ -27,5 +27,5 @@
 void DTcpControl_deepCopy(DTcpControl* source, DTcpControl* target);
 
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_DTCPCONTROL_H_ */
+#endif /* _ETRICE_API_TCP_DTCPCONTROL_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl_Utils.h
new file mode 100644
index 0000000..5ec6289
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpControl_Utils.h
@@ -0,0 +1,24 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of DataClass DTcpControl
+ * 
+ */
+
+#ifndef _ETRICE_API_TCP_DTCPCONTROL_UTILS_H_
+#define _ETRICE_API_TCP_DTCPCONTROL_UTILS_H_
+
+#include "etrice/api/tcp/DTcpControl.h"
+
+/*
+ * access macros for operations and attributes
+*/
+
+/* operations */
+
+/* attributes */
+#define IPAddr (self->IPAddr)
+#define TcpPort (self->TcpPort)
+
+#endif /* _ETRICE_API_TCP_DTCPCONTROL_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload.c
similarity index 99%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload.c
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload.c
index 3b10701..2b41345 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload.c
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload.c
@@ -16,13 +16,6 @@
  int32 DTcpPayload_getMaxLength(DTcpPayload* self) {
 	return 32;
 }
- void DTcpPayload_setAsString(DTcpPayload* self, charPtr value) {
-	/* used macros: data, length */
-	int valLength = (strlen(value)+1 > 32)? 32 : strlen(value) + 1;
-	memcpy(data, value, valLength);
-	data[31] = '\0';
-	length = valLength;
-}
  void DTcpPayload_setData(DTcpPayload* self, int8* value, int32 size) {
 	/* used macros: data, length */
 	strncpy(data, value, ((size>32)?32:size));
@@ -33,9 +26,15 @@
 	data[31] = '\0';
 	return data;
 }
+ void DTcpPayload_setAsString(DTcpPayload* self, charPtr value) {
+	/* used macros: data, length */
+	int valLength = (strlen(value)+1 > 32)? 32 : strlen(value) + 1;
+	memcpy(data, value, valLength);
+	data[31] = '\0';
+	length = valLength;
+}
 
 void DTcpPayload_deepCopy(DTcpPayload* source, DTcpPayload* target) {
 	memcpy(target, source, sizeof(DTcpPayload));
 }
 
-
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload.h
similarity index 82%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload.h
index 99fc0cf..641d84d 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload.h
@@ -5,8 +5,8 @@
  * 
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_DTCPPAYLOAD_H_
-#define _ROOM_BASIC_SERVICE_TCP_DTCPPAYLOAD_H_
+#ifndef _ETRICE_API_TCP_DTCPPAYLOAD_H_
+#define _ETRICE_API_TCP_DTCPPAYLOAD_H_
 
 #include "etDatatypes.h"
 
@@ -25,13 +25,13 @@
 
 /*--------------------- operations ---------------------*/
  int32 DTcpPayload_getMaxLength(DTcpPayload* self);
- void DTcpPayload_setAsString(DTcpPayload* self, charPtr value);
  void DTcpPayload_setData(DTcpPayload* self, int8* value, int32 size);
  charPtr DTcpPayload_getAsString(DTcpPayload* self);
+ void DTcpPayload_setAsString(DTcpPayload* self, charPtr value);
 
 /* deep copy */
 void DTcpPayload_deepCopy(DTcpPayload* source, DTcpPayload* target);
 
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_DTCPPAYLOAD_H_ */
+#endif /* _ETRICE_API_TCP_DTCPPAYLOAD_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload_Utils.h
similarity index 70%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload_Utils.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload_Utils.h
index d25b6bf..ab6fccf 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpPayload_Utils.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/DTcpPayload_Utils.h
@@ -5,10 +5,10 @@
  * 
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_DTCPPAYLOAD_UTILS_H_
-#define _ROOM_BASIC_SERVICE_TCP_DTCPPAYLOAD_UTILS_H_
+#ifndef _ETRICE_API_TCP_DTCPPAYLOAD_UTILS_H_
+#define _ETRICE_API_TCP_DTCPPAYLOAD_UTILS_H_
 
-#include "room/basic/service/tcp/DTcpPayload.h"
+#include "etrice/api/tcp/DTcpPayload.h"
 
 /*
  * access macros for operations and attributes
@@ -25,5 +25,5 @@
 #define length (self->length)
 #define data (self->data)
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_DTCPPAYLOAD_UTILS_H_ */
+#endif /* _ETRICE_API_TCP_DTCPPAYLOAD_UTILS_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpControl.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpControl.c
similarity index 100%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpControl.c
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpControl.c
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpControl.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpControl.h
similarity index 91%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpControl.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpControl.h
index d0e7819..ec63ef1 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpControl.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpControl.h
@@ -5,15 +5,15 @@
  * 
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_PTCPCONTROL_H_
-#define _ROOM_BASIC_SERVICE_TCP_PTCPCONTROL_H_
+#ifndef _ETRICE_API_TCP_PTCPCONTROL_H_
+#define _ETRICE_API_TCP_PTCPCONTROL_H_
 
 #include "etDatatypes.h"
 #include "modelbase/etPort.h"
 
 
 /* include all referenced room classes */
-#include "room/basic/service/tcp/DTcpControl.h"
+#include "etrice/api/tcp/DTcpControl.h"
 
 
 /* message IDs */
@@ -64,5 +64,5 @@
 const char* PTcpControl_getMessageString(int msg_id);
 
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_PTCPCONTROL_H_ */
+#endif /* _ETRICE_API_TCP_PTCPCONTROL_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpControl_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpControl_Utils.h
new file mode 100644
index 0000000..6485bcb
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpControl_Utils.h
@@ -0,0 +1,19 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ProtocolClass PTcpControl
+ * 
+ */
+
+#ifndef _ETRICE_API_TCP_PTCPCONTROL_UTILS_H_
+#define _ETRICE_API_TCP_PTCPCONTROL_UTILS_H_
+
+#include "etrice/api/tcp/PTcpControl.h"
+
+/*
+ * access macros for operations and attributes
+*/
+
+
+#endif /* _ETRICE_API_TCP_PTCPCONTROL_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpPayload.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpPayload.c
similarity index 100%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpPayload.c
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpPayload.c
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpPayload.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpPayload.h
similarity index 88%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpPayload.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpPayload.h
index 9a30653..e875120 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpPayload.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpPayload.h
@@ -5,15 +5,15 @@
  * 
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TCP_PTCPPAYLOAD_H_
-#define _ROOM_BASIC_SERVICE_TCP_PTCPPAYLOAD_H_
+#ifndef _ETRICE_API_TCP_PTCPPAYLOAD_H_
+#define _ETRICE_API_TCP_PTCPPAYLOAD_H_
 
 #include "etDatatypes.h"
 #include "modelbase/etPort.h"
 
 
 /* include all referenced room classes */
-#include "room/basic/service/tcp/DTcpPayload.h"
+#include "etrice/api/tcp/DTcpPayload.h"
 
 
 /* message IDs */
@@ -52,5 +52,5 @@
 const char* PTcpPayload_getMessageString(int msg_id);
 
 
-#endif /* _ROOM_BASIC_SERVICE_TCP_PTCPPAYLOAD_H_ */
+#endif /* _ETRICE_API_TCP_PTCPPAYLOAD_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpPayload_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpPayload_Utils.h
new file mode 100644
index 0000000..944b80c
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/tcp/PTcpPayload_Utils.h
@@ -0,0 +1,19 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ProtocolClass PTcpPayload
+ * 
+ */
+
+#ifndef _ETRICE_API_TCP_PTCPPAYLOAD_UTILS_H_
+#define _ETRICE_API_TCP_PTCPPAYLOAD_UTILS_H_
+
+#include "etrice/api/tcp/PTcpPayload.h"
+
+/*
+ * access macros for operations and attributes
+*/
+
+
+#endif /* _ETRICE_API_TCP_PTCPPAYLOAD_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor.c
new file mode 100644
index 0000000..3197570
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor.c
@@ -0,0 +1,318 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ActorClass ControllableSequentialTestExecutor
+ *
+ */
+
+#include "ControllableSequentialTestExecutor.h"
+
+#include "modelbase/etActor.h"
+#include "debugging/etLogger.h"
+#include "debugging/etMSCLogger.h"
+#include "etUnit/etUnit.h"
+#include "base/etMemory.h"
+
+#include "etrice/api/testcontrol/PTestControl.h"
+
+#include "ControllableSequentialTestExecutor_Utils.h"
+
+
+/* interface item IDs */
+enum interface_items {
+	IFITEM_exeControl = 1,
+	IFITEM_control = 2
+};
+
+/* state IDs */
+enum state_ids {
+	NO_STATE = 0,
+	STATE_TOP = 1,
+	STATE_execute = 2,
+	STATE_idle = 3,
+	STATE_aborted = 4,
+	STATE_MAX = 5
+};
+
+/* transition chains */
+enum ChainIDs {
+	CHAIN_TRANS_INITIAL_TO__idle = 1,
+	CHAIN_TRANS_tr0_FROM_idle_TO_cp1_BY_startexeControl = 2,
+	CHAIN_TRANS_tr1_FROM_execute_TO_aborted_BY_abortexeControl = 3,
+	CHAIN_TRANS_tr2_FROM_execute_TO_cp0_BY_donecontrol = 4,
+	CHAIN_TRANS_tr7_FROM_aborted_TO_idle_BY_donecontrol = 5
+};
+
+/* triggers */
+enum triggers {
+	POLLING = 0,
+	TRIG_exeControl__start = IFITEM_exeControl + EVT_SHIFT*PTestControl_IN_start,
+	TRIG_exeControl__abort = IFITEM_exeControl + EVT_SHIFT*PTestControl_IN_abort,
+	TRIG_control__done = IFITEM_control + EVT_SHIFT*PTestControl_OUT_done
+};
+
+/* state names */
+static const char* stateStrings[] = {"<no state>","<top>","execute",
+"idle",
+"aborted"
+};
+
+static void setState(ControllableSequentialTestExecutor* self, etInt16 new_state) {
+	self->state = new_state;
+	ET_MSC_LOGGER_CHANGE_STATE(self->constData->instName, stateStrings[new_state]);
+}
+
+static etInt16 getState(ControllableSequentialTestExecutor* self) {
+	return self->state;
+}
+
+/* Entry and Exit Codes */
+static void entry_idle(ControllableSequentialTestExecutor* self) {
+	current = 0;
+	overallSuccess = true;
+}
+
+/* Action Codes */
+static void action_TRANS_tr1_FROM_execute_TO_aborted_BY_abortexeControl(ControllableSequentialTestExecutor* self, const InterfaceItemBase* ifitem) {
+    control_abort(current);
+}
+static void action_TRANS_tr2_FROM_execute_TO_cp0_BY_donecontrol(ControllableSequentialTestExecutor* self, const InterfaceItemBase* ifitem, bool transitionData) {
+    overallSuccess &= transitionData;
+    current++;
+}
+static void action_TRANS_tr3_FROM_cp0_TO_idle(ControllableSequentialTestExecutor* self, const InterfaceItemBase* ifitem, bool transitionData) {
+    exeControl_done(overallSuccess);
+}
+static void action_TRANS_tr4_FROM_cp0_TO_execute_COND_tr4(ControllableSequentialTestExecutor* self, const InterfaceItemBase* ifitem, bool transitionData) {
+    control_start(current);
+}
+static void action_TRANS_tr5_FROM_cp1_TO_idle(ControllableSequentialTestExecutor* self, const InterfaceItemBase* ifitem) {
+    exeControl_done(overallSuccess);
+}
+static void action_TRANS_tr6_FROM_cp1_TO_execute_COND_tr6(ControllableSequentialTestExecutor* self, const InterfaceItemBase* ifitem) {
+    control_start(current);
+}
+static void action_TRANS_tr7_FROM_aborted_TO_idle_BY_donecontrol(ControllableSequentialTestExecutor* self, const InterfaceItemBase* ifitem, bool transitionData) {
+    exeControl_done(false);
+}
+
+/* State Switch Methods */
+/**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current__et - the current state
+ * @param to - the final parent state
+ */
+static void exitTo(ControllableSequentialTestExecutor* self, etInt16 current__et, etInt16 to) {
+	while (current__et!=to) {
+		switch (current__et) {
+			case STATE_aborted:
+				self->history[STATE_TOP] = STATE_aborted;
+				current__et = STATE_TOP;
+				break;
+			case STATE_execute:
+				self->history[STATE_TOP] = STATE_execute;
+				current__et = STATE_TOP;
+				break;
+			case STATE_idle:
+				self->history[STATE_TOP] = STATE_idle;
+				current__et = STATE_TOP;
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+}
+
+/**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain__et - the chain ID
+ * @param generic_data__et - the generic data pointer
+ * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
+ */
+static etInt16 executeTransitionChain(ControllableSequentialTestExecutor* self, int chain__et, const InterfaceItemBase* ifitem, void* generic_data__et) {
+	switch (chain__et) {
+		case CHAIN_TRANS_INITIAL_TO__idle:
+		{
+			return STATE_idle;
+		}
+		case CHAIN_TRANS_tr0_FROM_idle_TO_cp1_BY_startexeControl:
+		{
+			if (current < self->constData->control.size) {
+			action_TRANS_tr6_FROM_cp1_TO_execute_COND_tr6(self, ifitem);
+			return STATE_execute;}
+			else {
+			action_TRANS_tr5_FROM_cp1_TO_idle(self, ifitem);
+			return STATE_idle;}
+		}
+		case CHAIN_TRANS_tr1_FROM_execute_TO_aborted_BY_abortexeControl:
+		{
+			action_TRANS_tr1_FROM_execute_TO_aborted_BY_abortexeControl(self, ifitem);
+			return STATE_aborted;
+		}
+		case CHAIN_TRANS_tr2_FROM_execute_TO_cp0_BY_donecontrol:
+		{
+			bool transitionData = *((bool*) generic_data__et);
+			action_TRANS_tr2_FROM_execute_TO_cp0_BY_donecontrol(self, ifitem, transitionData);
+			if (current < self->constData->control.size) {
+			action_TRANS_tr4_FROM_cp0_TO_execute_COND_tr4(self, ifitem, transitionData);
+			return STATE_execute;}
+			else {
+			action_TRANS_tr3_FROM_cp0_TO_idle(self, ifitem, transitionData);
+			return STATE_idle;}
+		}
+		case CHAIN_TRANS_tr7_FROM_aborted_TO_idle_BY_donecontrol:
+		{
+			bool transitionData = *((bool*) generic_data__et);
+			action_TRANS_tr7_FROM_aborted_TO_idle_BY_donecontrol(self, ifitem, transitionData);
+			return STATE_idle;
+		}
+			default:
+				/* should not occur */
+				break;
+	}
+	return NO_STATE;
+}
+
+/**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state__et - the state which is entered
+ * @return - the ID of the final leaf state
+ */
+static etInt16 enterHistory(ControllableSequentialTestExecutor* self, etInt16 state__et) {
+	etBool skip_entry__et = ET_FALSE;
+	if (state__et >= STATE_MAX) {
+		state__et = (etInt16) (state__et - STATE_MAX);
+		skip_entry__et = ET_TRUE;
+	}
+	while (ET_TRUE) {
+		switch (state__et) {
+			case STATE_aborted:
+				/* in leaf state: return state id */
+				return STATE_aborted;
+			case STATE_execute:
+				/* in leaf state: return state id */
+				return STATE_execute;
+			case STATE_idle:
+				if (!(skip_entry__et)) entry_idle(self);
+				/* in leaf state: return state id */
+				return STATE_idle;
+			case STATE_TOP:
+				state__et = self->history[STATE_TOP];
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+		skip_entry__et = ET_FALSE;
+	}
+	/* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
+}
+
+static void ControllableSequentialTestExecutor_executeInitTransition(ControllableSequentialTestExecutor* self) {
+	int chain__et = CHAIN_TRANS_INITIAL_TO__idle;
+	etInt16 next__et = executeTransitionChain(self, chain__et, NULL, NULL);
+	next__et = enterHistory(self, next__et);
+	setState(self, next__et);
+}
+
+/* receiveEvent contains the main implementation of the FSM */
+static void ControllableSequentialTestExecutor_receiveEventInternal(ControllableSequentialTestExecutor* self, InterfaceItemBase* ifitem, int localId, int evt, void* generic_data__et) {
+	int trigger__et = localId + EVT_SHIFT*evt;
+	int chain__et = NOT_CAUGHT;
+	etInt16 catching_state__et = NO_STATE;
+	((void)trigger__et);	/* avoids unused warning */
+
+	if (!handleSystemEvent(ifitem, evt, generic_data__et)) {
+		switch (getState(self)) {
+			case STATE_aborted:
+				switch(trigger__et) {
+					case TRIG_control__done:
+						{
+							chain__et = CHAIN_TRANS_tr7_FROM_aborted_TO_idle_BY_donecontrol;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					default:
+						/* should not occur */
+						break;
+				}
+				break;
+			case STATE_execute:
+				switch(trigger__et) {
+					case TRIG_control__done:
+						{
+							chain__et = CHAIN_TRANS_tr2_FROM_execute_TO_cp0_BY_donecontrol;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					case TRIG_exeControl__abort:
+						{
+							chain__et = CHAIN_TRANS_tr1_FROM_execute_TO_aborted_BY_abortexeControl;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					default:
+						/* should not occur */
+						break;
+				}
+				break;
+			case STATE_idle:
+				switch(trigger__et) {
+					case TRIG_exeControl__start:
+						{
+							chain__et = CHAIN_TRANS_tr0_FROM_idle_TO_cp1_BY_startexeControl;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					default:
+						/* should not occur */
+						break;
+				}
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+	if (chain__et != NOT_CAUGHT) {
+		exitTo(self, getState(self), catching_state__et);
+		{
+			etInt16 next__et = executeTransitionChain(self, chain__et, ifitem, generic_data__et);
+			next__et = enterHistory(self, next__et);
+			setState(self, next__et);
+		}
+	}
+}
+static void ControllableSequentialTestExecutor_receiveEvent(ControllableSequentialTestExecutor* self, InterfaceItemBase* ifitem, int evt, void* generic_data__et) {
+	int localId = (ifitem==NULL)? 0 : ifitem->localId;
+	ControllableSequentialTestExecutor_receiveEventInternal(self, ifitem, localId, evt, generic_data__et);
+}
+
+void ControllableSequentialTestExecutor_init(ControllableSequentialTestExecutor* self){
+	ET_MSC_LOGGER_SYNC_ENTRY("ControllableSequentialTestExecutor", "init")
+	self->state = STATE_TOP;
+	{
+		int i;
+		for (i=0; i<CONTROLLABLESEQUENTIALTESTEXECUTOR_HISTORY_SIZE; ++i)
+			self->history[i] = NO_STATE;
+	}
+	ControllableSequentialTestExecutor_executeInitTransition(self);
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void ControllableSequentialTestExecutor_receiveMessage(void* self, const void* ifitem, const etMessage* msg){
+	ET_MSC_LOGGER_SYNC_ENTRY("ControllableSequentialTestExecutor", "_receiveMessage")
+	ControllableSequentialTestExecutor_receiveEvent((ControllableSequentialTestExecutor*) self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+/*--------------------- user constructor/destructor ---------------------*/
+
+/*--------------------- operations ---------------------*/
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor.h
new file mode 100644
index 0000000..5dc9029
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor.h
@@ -0,0 +1,68 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ActorClass ControllableSequentialTestExecutor
+ *
+ */
+
+#ifndef _ETRICE_API_TESTCONTROL_CONTROLLABLESEQUENTIALTESTEXECUTOR_H_
+#define _ETRICE_API_TESTCONTROL_CONTROLLABLESEQUENTIALTESTEXECUTOR_H_
+
+#include "etDatatypes.h"
+#include "messaging/etMessage.h"
+
+/* include all referenced room classes */
+#include "etrice/api/testcontrol/PTestControl.h"
+
+
+typedef struct ControllableSequentialTestExecutor ControllableSequentialTestExecutor;
+
+/* const part of ActorClass (ROM) */
+typedef struct ControllableSequentialTestExecutor_const {
+	const char* instName;
+
+	/* simple ports */
+	const PTestControlPort exeControl;
+
+	/* data receive ports */
+
+	/* saps */
+
+	/* replicated ports */
+	const etReplPort control;
+
+	/* services */
+} ControllableSequentialTestExecutor_const;
+
+
+/* constant for state machine data */
+#define CONTROLLABLESEQUENTIALTESTEXECUTOR_HISTORY_SIZE 2
+
+/* variable part of ActorClass (RAM) */
+struct ControllableSequentialTestExecutor {
+	const ControllableSequentialTestExecutor_const* ET_CONST_MEMBER constData;
+
+	/* data send ports */
+
+	/*--------------------- attributes ---------------------*/
+	 int16 current;
+	 bool overallSuccess;
+
+
+	/* state machine variables */
+	etInt16 state;
+	etInt16 history[CONTROLLABLESEQUENTIALTESTEXECUTOR_HISTORY_SIZE];
+};
+
+void ControllableSequentialTestExecutor_init(ControllableSequentialTestExecutor* self);
+
+void ControllableSequentialTestExecutor_receiveMessage(void* self, const void* ifitem, const etMessage* msg);
+
+
+/*--------------------- user constructor/destructor ---------------------*/
+
+/*--------------------- operations ---------------------*/
+
+
+#endif /* _ETRICE_API_TESTCONTROL_CONTROLLABLESEQUENTIALTESTEXECUTOR_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor_Utils.h
new file mode 100644
index 0000000..5bb4da7
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/ControllableSequentialTestExecutor_Utils.h
@@ -0,0 +1,44 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ActorClass ControllableSequentialTestExecutor
+ *
+ */
+
+#ifndef _ETRICE_API_TESTCONTROL_CONTROLLABLESEQUENTIALTESTEXECUTOR_UTILS_H_
+#define _ETRICE_API_TESTCONTROL_CONTROLLABLESEQUENTIALTESTEXECUTOR_UTILS_H_
+
+#include "etrice/api/testcontrol/ControllableSequentialTestExecutor.h"
+
+/*
+ * access macros for ports, operations and attributes
+*/
+
+/* simple event ports */
+#define exeControl_done(data) PTestControlPort_done(&self->constData->exeControl, data)
+
+/* data receive ports */
+
+/* data send ports */
+
+/* saps */
+
+/* replicated event ports */
+#define ifitem_index (((etReplSubPort*)ifitem)->index)
+#define control_start_broadcast() PTestControlConjReplPort_start_broadcast(&self->constData->control)
+#define control_start(idx) PTestControlConjReplPort_start(&self->constData->control, idx)
+#define control_abort_broadcast() PTestControlConjReplPort_abort_broadcast(&self->constData->control)
+#define control_abort(idx) PTestControlConjReplPort_abort(&self->constData->control, idx)
+
+/* services */
+
+/* operations */
+
+/* attributes */
+#define current (self->current)
+#define overallSuccess (self->overallSuccess)
+
+/* port operations */
+
+#endif /* _ETRICE_API_TESTCONTROL_CONTROLLABLESEQUENTIALTESTEXECUTOR_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl.c
new file mode 100644
index 0000000..7d5c5db
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl.c
@@ -0,0 +1,119 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ProtocolClass PTestControl
+ * 
+ */
+
+#include "PTestControl.h"
+#include "debugging/etMSCLogger.h"
+#include "PTestControl_Utils.h"
+
+
+/*--------------------- port methods */
+
+void PTestControlPort_done(const PTestControlPort* self, bool data__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlPort", "done")
+		etPort_sendMessage(self, PTestControl_OUT_done, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "done", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTestControlReplPort_done_broadcast(const PTestControlReplPort* self, bool data__et) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlReplPort", "done")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PTestControl_OUT_done, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "done", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTestControlReplPort_done(const PTestControlReplPort* self, int idx__et, bool data__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlReplPort", "done")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PTestControl_OUT_done, sizeof(bool), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "done", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+etInt32 PTestControlReplPort_getReplication(const PTestControlReplPort* self) {
+	return ((etReplPort*)self)->size;
+}
+
+
+
+void PTestControlConjPort_start(const PTestControlConjPort* self) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlConjPort", "start")
+		etPort_sendMessage(self, PTestControl_IN_start, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "start", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTestControlConjReplPort_start_broadcast(const PTestControlConjReplPort* self) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlConjReplPort", "start")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PTestControl_IN_start, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "start", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTestControlConjReplPort_start(const PTestControlConjReplPort* self, int idx__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlConjReplPort", "start")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PTestControl_IN_start, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "start", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void PTestControlConjPort_abort(const PTestControlConjPort* self) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlConjPort", "abort")
+		etPort_sendMessage(self, PTestControl_IN_abort, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "abort", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTestControlConjReplPort_abort_broadcast(const PTestControlConjReplPort* self) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlConjReplPort", "abort")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PTestControl_IN_abort, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "abort", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTestControlConjReplPort_abort(const PTestControlConjReplPort* self, int idx__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTestControlConjReplPort", "abort")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PTestControl_IN_abort, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "abort", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+etInt32 PTestControlConjReplPort_getReplication(const PTestControlConjReplPort* self) {
+	return ((etReplPort*)self)->size;
+}
+
+
+
+/*--------------------- debug helpers */
+
+/* message names as strings for debugging (generate MSC) */
+static const char* const PTestControl_messageStrings[] = {"MIN", "done","start", "abort", "MAX"};
+
+const char* PTestControl_getMessageString(int msg_id) {
+	if (msg_id<PTestControl_MSG_MIN || msg_id>PTestControl_MSG_MAX+1){
+		/* id out of range */
+		return "Message ID out of range";
+	}
+	else{
+		return PTestControl_messageStrings[msg_id];
+	}
+}
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl.h
new file mode 100644
index 0000000..dd9db71
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl.h
@@ -0,0 +1,59 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ProtocolClass PTestControl
+ * 
+ */
+
+#ifndef _ETRICE_API_TESTCONTROL_PTESTCONTROL_H_
+#define _ETRICE_API_TESTCONTROL_PTESTCONTROL_H_
+
+#include "etDatatypes.h"
+#include "modelbase/etPort.h"
+
+
+/* include all referenced room classes */
+
+
+/* message IDs */
+enum PTestControl_msg_ids {
+	PTestControl_MSG_MIN = 0,
+	PTestControl_OUT_done = 1,
+	PTestControl_IN_start = 2,
+	PTestControl_IN_abort = 3,
+	PTestControl_MSG_MAX = 4
+};
+
+/*--------------------- port structs and methods */
+typedef etPort PTestControlPort;
+typedef etReplPort PTestControlReplPort;
+
+
+void PTestControlPort_done(const PTestControlPort* self, bool data);
+void PTestControlReplPort_done_broadcast(const PTestControlReplPort* self, bool data);
+void PTestControlReplPort_done(const PTestControlReplPort* self, int idx, bool data);
+
+
+etInt32 PTestControlReplPort_getReplication(const PTestControlReplPort* self);
+typedef etPort PTestControlConjPort;
+typedef etReplPort PTestControlConjReplPort;
+
+
+void PTestControlConjPort_start(const PTestControlConjPort* self);
+void PTestControlConjReplPort_start_broadcast(const PTestControlConjReplPort* self);
+void PTestControlConjReplPort_start(const PTestControlConjReplPort* self, int idx);
+void PTestControlConjPort_abort(const PTestControlConjPort* self);
+void PTestControlConjReplPort_abort_broadcast(const PTestControlConjReplPort* self);
+void PTestControlConjReplPort_abort(const PTestControlConjReplPort* self, int idx);
+
+
+etInt32 PTestControlConjReplPort_getReplication(const PTestControlConjReplPort* self);
+
+/*--------------------- debug helpers */
+
+/* get message string for message id */
+const char* PTestControl_getMessageString(int msg_id);
+
+
+#endif /* _ETRICE_API_TESTCONTROL_PTESTCONTROL_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl_Utils.h
new file mode 100644
index 0000000..0a8a3bd
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/PTestControl_Utils.h
@@ -0,0 +1,19 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ProtocolClass PTestControl
+ * 
+ */
+
+#ifndef _ETRICE_API_TESTCONTROL_PTESTCONTROL_UTILS_H_
+#define _ETRICE_API_TESTCONTROL_PTESTCONTROL_UTILS_H_
+
+#include "etrice/api/testcontrol/PTestControl.h"
+
+/*
+ * access macros for operations and attributes
+*/
+
+
+#endif /* _ETRICE_API_TESTCONTROL_PTESTCONTROL_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor.c
new file mode 100644
index 0000000..3784ed4
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor.c
@@ -0,0 +1,230 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ActorClass SequentialTestExecutor
+ *
+ */
+
+#include "SequentialTestExecutor.h"
+
+#include "modelbase/etActor.h"
+#include "debugging/etLogger.h"
+#include "debugging/etMSCLogger.h"
+#include "etUnit/etUnit.h"
+#include "base/etMemory.h"
+
+#include "etrice/api/testcontrol/PTestControl.h"
+
+#include "SequentialTestExecutor_Utils.h"
+
+/*--------------------- begin user code ---------------------*/
+#include "etUnit/etUnit.h"
+/*--------------------- end user code ---------------------*/
+
+/* interface item IDs */
+enum interface_items {
+	IFITEM_control = 1
+};
+
+/* state IDs */
+enum state_ids {
+	NO_STATE = 0,
+	STATE_TOP = 1,
+	STATE_execute = 2,
+	STATE_MAX = 3
+};
+
+/* transition chains */
+enum ChainIDs {
+	CHAIN_TRANS_INITIAL_TO__execute = 1,
+	CHAIN_TRANS_tr0_FROM_execute_TO_execute_BY_donecontrol_tr0 = 2
+};
+
+/* triggers */
+enum triggers {
+	POLLING = 0,
+	TRIG_control__done = IFITEM_control + EVT_SHIFT*PTestControl_OUT_done
+};
+
+/* state names */
+static const char* stateStrings[] = {"<no state>","<top>","execute"
+};
+
+static void setState(SequentialTestExecutor* self, etInt16 new_state) {
+	self->state = new_state;
+	ET_MSC_LOGGER_CHANGE_STATE(self->constData->instName, stateStrings[new_state]);
+}
+
+static etInt16 getState(SequentialTestExecutor* self) {
+	return self->state;
+}
+
+/* Entry and Exit Codes */
+static void entry_execute(SequentialTestExecutor* self) {
+	if(current < self->constData->control.size){
+		control_start(current);
+	} else {
+		etUnit_close();
+		etUnit_testFinished(0);
+	}
+}
+
+/* Action Codes */
+static void action_TRANS_INITIAL_TO__execute(SequentialTestExecutor* self) {
+    current = 0;
+    etUnit_open("log", "results");
+}
+static void action_TRANS_tr0_FROM_execute_TO_execute_BY_donecontrol_tr0(SequentialTestExecutor* self, const InterfaceItemBase* ifitem, bool transitionData) {
+    current++;
+}
+
+/* State Switch Methods */
+/**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current__et - the current state
+ * @param to - the final parent state
+ */
+static void exitTo(SequentialTestExecutor* self, etInt16 current__et, etInt16 to) {
+	while (current__et!=to) {
+		switch (current__et) {
+			case STATE_execute:
+				self->history[STATE_TOP] = STATE_execute;
+				current__et = STATE_TOP;
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+}
+
+/**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain__et - the chain ID
+ * @param generic_data__et - the generic data pointer
+ * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
+ */
+static etInt16 executeTransitionChain(SequentialTestExecutor* self, int chain__et, const InterfaceItemBase* ifitem, void* generic_data__et) {
+	switch (chain__et) {
+		case CHAIN_TRANS_INITIAL_TO__execute:
+		{
+			action_TRANS_INITIAL_TO__execute(self);
+			return STATE_execute;
+		}
+		case CHAIN_TRANS_tr0_FROM_execute_TO_execute_BY_donecontrol_tr0:
+		{
+			bool transitionData = *((bool*) generic_data__et);
+			action_TRANS_tr0_FROM_execute_TO_execute_BY_donecontrol_tr0(self, ifitem, transitionData);
+			return STATE_execute;
+		}
+			default:
+				/* should not occur */
+				break;
+	}
+	return NO_STATE;
+}
+
+/**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state__et - the state which is entered
+ * @return - the ID of the final leaf state
+ */
+static etInt16 enterHistory(SequentialTestExecutor* self, etInt16 state__et) {
+	etBool skip_entry__et = ET_FALSE;
+	if (state__et >= STATE_MAX) {
+		state__et = (etInt16) (state__et - STATE_MAX);
+		skip_entry__et = ET_TRUE;
+	}
+	while (ET_TRUE) {
+		switch (state__et) {
+			case STATE_execute:
+				if (!(skip_entry__et)) entry_execute(self);
+				/* in leaf state: return state id */
+				return STATE_execute;
+			case STATE_TOP:
+				state__et = self->history[STATE_TOP];
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+		skip_entry__et = ET_FALSE;
+	}
+	/* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
+}
+
+static void SequentialTestExecutor_executeInitTransition(SequentialTestExecutor* self) {
+	int chain__et = CHAIN_TRANS_INITIAL_TO__execute;
+	etInt16 next__et = executeTransitionChain(self, chain__et, NULL, NULL);
+	next__et = enterHistory(self, next__et);
+	setState(self, next__et);
+}
+
+/* receiveEvent contains the main implementation of the FSM */
+static void SequentialTestExecutor_receiveEventInternal(SequentialTestExecutor* self, InterfaceItemBase* ifitem, int localId, int evt, void* generic_data__et) {
+	int trigger__et = localId + EVT_SHIFT*evt;
+	int chain__et = NOT_CAUGHT;
+	etInt16 catching_state__et = NO_STATE;
+	((void)trigger__et);	/* avoids unused warning */
+
+	if (!handleSystemEvent(ifitem, evt, generic_data__et)) {
+		switch (getState(self)) {
+			case STATE_execute:
+				switch(trigger__et) {
+					case TRIG_control__done:
+						{
+							chain__et = CHAIN_TRANS_tr0_FROM_execute_TO_execute_BY_donecontrol_tr0;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					default:
+						/* should not occur */
+						break;
+				}
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+	if (chain__et != NOT_CAUGHT) {
+		exitTo(self, getState(self), catching_state__et);
+		{
+			etInt16 next__et = executeTransitionChain(self, chain__et, ifitem, generic_data__et);
+			next__et = enterHistory(self, next__et);
+			setState(self, next__et);
+		}
+	}
+}
+static void SequentialTestExecutor_receiveEvent(SequentialTestExecutor* self, InterfaceItemBase* ifitem, int evt, void* generic_data__et) {
+	int localId = (ifitem==NULL)? 0 : ifitem->localId;
+	SequentialTestExecutor_receiveEventInternal(self, ifitem, localId, evt, generic_data__et);
+}
+
+void SequentialTestExecutor_init(SequentialTestExecutor* self){
+	ET_MSC_LOGGER_SYNC_ENTRY("SequentialTestExecutor", "init")
+	self->state = STATE_TOP;
+	{
+		int i;
+		for (i=0; i<SEQUENTIALTESTEXECUTOR_HISTORY_SIZE; ++i)
+			self->history[i] = NO_STATE;
+	}
+	SequentialTestExecutor_executeInitTransition(self);
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void SequentialTestExecutor_receiveMessage(void* self, const void* ifitem, const etMessage* msg){
+	ET_MSC_LOGGER_SYNC_ENTRY("SequentialTestExecutor", "_receiveMessage")
+	SequentialTestExecutor_receiveEvent((SequentialTestExecutor*) self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+/*--------------------- user constructor/destructor ---------------------*/
+
+/*--------------------- operations ---------------------*/
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor.h
new file mode 100644
index 0000000..516467d
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor.h
@@ -0,0 +1,66 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ActorClass SequentialTestExecutor
+ *
+ */
+
+#ifndef _ETRICE_API_TESTCONTROL_SEQUENTIALTESTEXECUTOR_H_
+#define _ETRICE_API_TESTCONTROL_SEQUENTIALTESTEXECUTOR_H_
+
+#include "etDatatypes.h"
+#include "messaging/etMessage.h"
+
+/* include all referenced room classes */
+#include "etrice/api/testcontrol/PTestControl.h"
+
+
+typedef struct SequentialTestExecutor SequentialTestExecutor;
+
+/* const part of ActorClass (ROM) */
+typedef struct SequentialTestExecutor_const {
+	const char* instName;
+
+	/* simple ports */
+
+	/* data receive ports */
+
+	/* saps */
+
+	/* replicated ports */
+	const etReplPort control;
+
+	/* services */
+} SequentialTestExecutor_const;
+
+
+/* constant for state machine data */
+#define SEQUENTIALTESTEXECUTOR_HISTORY_SIZE 2
+
+/* variable part of ActorClass (RAM) */
+struct SequentialTestExecutor {
+	const SequentialTestExecutor_const* ET_CONST_MEMBER constData;
+
+	/* data send ports */
+
+	/*--------------------- attributes ---------------------*/
+	 int16 current;
+
+
+	/* state machine variables */
+	etInt16 state;
+	etInt16 history[SEQUENTIALTESTEXECUTOR_HISTORY_SIZE];
+};
+
+void SequentialTestExecutor_init(SequentialTestExecutor* self);
+
+void SequentialTestExecutor_receiveMessage(void* self, const void* ifitem, const etMessage* msg);
+
+
+/*--------------------- user constructor/destructor ---------------------*/
+
+/*--------------------- operations ---------------------*/
+
+
+#endif /* _ETRICE_API_TESTCONTROL_SEQUENTIALTESTEXECUTOR_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor_Utils.h
new file mode 100644
index 0000000..3a62331
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/testcontrol/SequentialTestExecutor_Utils.h
@@ -0,0 +1,42 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ActorClass SequentialTestExecutor
+ *
+ */
+
+#ifndef _ETRICE_API_TESTCONTROL_SEQUENTIALTESTEXECUTOR_UTILS_H_
+#define _ETRICE_API_TESTCONTROL_SEQUENTIALTESTEXECUTOR_UTILS_H_
+
+#include "etrice/api/testcontrol/SequentialTestExecutor.h"
+
+/*
+ * access macros for ports, operations and attributes
+*/
+
+/* simple event ports */
+
+/* data receive ports */
+
+/* data send ports */
+
+/* saps */
+
+/* replicated event ports */
+#define ifitem_index (((etReplSubPort*)ifitem)->index)
+#define control_start_broadcast() PTestControlConjReplPort_start_broadcast(&self->constData->control)
+#define control_start(idx) PTestControlConjReplPort_start(&self->constData->control, idx)
+#define control_abort_broadcast() PTestControlConjReplPort_abort_broadcast(&self->constData->control)
+#define control_abort(idx) PTestControlConjReplPort_abort(&self->constData->control, idx)
+
+/* services */
+
+/* operations */
+
+/* attributes */
+#define current (self->current)
+
+/* port operations */
+
+#endif /* _ETRICE_API_TESTCONTROL_SEQUENTIALTESTEXECUTOR_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService.c
new file mode 100644
index 0000000..a9ed08a
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService.c
@@ -0,0 +1,464 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ActorClass ATimerService
+ *
+ */
+
+#include "ATimerService.h"
+
+#include "modelbase/etActor.h"
+#include "debugging/etLogger.h"
+#include "debugging/etMSCLogger.h"
+#include "etUnit/etUnit.h"
+#include "base/etMemory.h"
+
+#include "etrice/api/timer/PTimer.h"
+#include "etrice/api/timer/PTimerSupervisionControl.h"
+
+#include "ATimerService_Utils.h"
+
+
+/* interface item IDs */
+enum interface_items {
+	IFITEM_timer = 1,
+	IFITEM_supervisionControl = 2
+};
+
+/* state IDs */
+enum state_ids {
+	NO_STATE = 0,
+	STATE_TOP = 1,
+	STATE_Operational = 2,
+	STATE_MAX = 3
+};
+
+/* transition chains */
+enum ChainIDs {
+	CHAIN_TRANS_INITIAL_TO__Operational = 1,
+	CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1 = 2,
+	CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3 = 3,
+	CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4 = 4,
+	CHAIN_TRANS_tr2_FROM_Operational_TO_Operational_BY_getTimerDeviationHighWaterMarksupervisionControl_tr2 = 5,
+	CHAIN_TRANS_tr5_FROM_Operational_TO_Operational_BY_restTimerDeviationHighWaterMarksupervisionControl_tr5 = 6
+};
+
+/* triggers */
+enum triggers {
+	POLLING = 0,
+	TRIG_timer__startTimer = IFITEM_timer + EVT_SHIFT*PTimer_IN_startTimer,
+	TRIG_timer__startTimeout = IFITEM_timer + EVT_SHIFT*PTimer_IN_startTimeout,
+	TRIG_timer__kill = IFITEM_timer + EVT_SHIFT*PTimer_IN_kill,
+	TRIG_supervisionControl__restTimerDeviationHighWaterMark = IFITEM_supervisionControl + EVT_SHIFT*PTimerSupervisionControl_IN_restTimerDeviationHighWaterMark,
+	TRIG_supervisionControl__getTimerDeviationHighWaterMark = IFITEM_supervisionControl + EVT_SHIFT*PTimerSupervisionControl_IN_getTimerDeviationHighWaterMark
+};
+
+/* state names */
+static const char* stateStrings[] = {"<no state>","<top>","Operational"
+};
+
+static void setState(ATimerService* self, etInt16 new_state) {
+	self->state = new_state;
+	ET_MSC_LOGGER_CHANGE_STATE(self->constData->instName, stateStrings[new_state]);
+}
+
+static etInt16 getState(ATimerService* self) {
+	return self->state;
+}
+
+/* Entry and Exit Codes */
+static void entry_Operational(ATimerService* self) {
+	/* prepare */
+}
+static  void do_Operational(ATimerService* self) {
+	/* maintain timers */
+	etTimerControlBlock* temp;
+	etTime t;
+	
+	getTimeFromTarget(&t);
+	while (usedTcbsRoot !=0 ){
+		if (isTimeGreater(&t,&(usedTcbsRoot->expTime))){
+			// maintain deviation hig water mark
+			subTime(&t, &(usedTcbsRoot->expTime));
+			if (isTimeGreater(&t,&timerDeviationHighWaterMark)){
+				timerDeviationHighWaterMark = t; 
+			} 
+			timer_timeout(usedTcbsRoot->portIdx);
+			temp=usedTcbsRoot;
+			usedTcbsRoot=usedTcbsRoot->next;
+			if((temp->pTime.sec==0)&&(temp->pTime.nSec==0)){
+				/* single shot timer */
+				returnTcb(temp);
+			}else{
+				/* periodic timer */
+				addTime(&temp->expTime,&temp->pTime);
+				putTcbToUsedList(temp);
+				}
+			}else{
+				break;
+				}
+		}
+}
+
+/* Action Codes */
+static void action_TRANS_INITIAL_TO__Operational(ATimerService* self) {
+    int i;
+    usedTcbsRoot=0;
+    freeTcbsRoot=&tcbs[0];
+    tcbs[ET_NB_OF_TCBS-1].next=0;
+    for (i=0;i<ET_NB_OF_TCBS-1;i++){
+        tcbs[i].next=&tcbs[i+1];
+        }
+        
+    timerDeviationHighWaterMark.sec = 0;
+    timerDeviationHighWaterMark.nSec = 0;
+}
+static void action_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1(ATimerService* self, const InterfaceItemBase* ifitem, uint32 transitionData) {
+    etTimerControlBlock* timer = getTcb();
+    etTime t;
+    if (timer!= 0){
+    	t.sec=transitionData/1000;
+    	t.nSec=(transitionData%1000)*1000000L;
+    	timer->pTime.sec = 0;
+    	timer->pTime.nSec = 0;
+    	timer->portIdx=((etReplSubPort*)ifitem)->index;
+    	getTimeFromTarget(&(timer->expTime));
+    	addTime(&(timer->expTime),&t);
+    	putTcbToUsedList(timer);
+    	}
+}
+static void action_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3(ATimerService* self, const InterfaceItemBase* ifitem, uint32 transitionData) {
+    etTimerControlBlock* timer = getTcb();
+    etTime t;
+    if (timer!= 0){
+    	t.sec=transitionData/1000;
+    	t.nSec=(transitionData%1000)*1000000L;
+    	timer->pTime = t;
+    	timer->portIdx=((etReplSubPort*)ifitem)->index;
+    	getTimeFromTarget(&(timer->expTime));
+    	addTime(&(timer->expTime),&t);
+    	putTcbToUsedList(timer);
+    	}
+}
+static void action_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4(ATimerService* self, const InterfaceItemBase* ifitem) {
+    removeTcbFromUsedList(((etReplSubPort*)ifitem)->index);
+}
+static void action_TRANS_tr2_FROM_Operational_TO_Operational_BY_getTimerDeviationHighWaterMarksupervisionControl_tr2(ATimerService* self, const InterfaceItemBase* ifitem) {
+    uint32 dt;
+    
+    dt = timerDeviationHighWaterMark.nSec / 1000 + timerDeviationHighWaterMark.sec * 1000000;
+    supervisionControl_timerDeviationHighWaterMark(((etReplSubPort*)ifitem)->index, dt);
+}
+static void action_TRANS_tr5_FROM_Operational_TO_Operational_BY_restTimerDeviationHighWaterMarksupervisionControl_tr5(ATimerService* self, const InterfaceItemBase* ifitem) {
+    timerDeviationHighWaterMark.sec = 0;
+    timerDeviationHighWaterMark.nSec = 0;
+}
+
+/* State Switch Methods */
+/**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current__et - the current state
+ * @param to - the final parent state
+ */
+static void exitTo(ATimerService* self, etInt16 current__et, etInt16 to) {
+	while (current__et!=to) {
+		switch (current__et) {
+			case STATE_Operational:
+				self->history[STATE_TOP] = STATE_Operational;
+				current__et = STATE_TOP;
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+}
+
+/**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain__et - the chain ID
+ * @param generic_data__et - the generic data pointer
+ * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
+ */
+static etInt16 executeTransitionChain(ATimerService* self, int chain__et, const InterfaceItemBase* ifitem, void* generic_data__et) {
+	switch (chain__et) {
+		case CHAIN_TRANS_INITIAL_TO__Operational:
+		{
+			action_TRANS_INITIAL_TO__Operational(self);
+			return STATE_Operational;
+		}
+		case CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1:
+		{
+			uint32 transitionData = *((uint32*) generic_data__et);
+			action_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1(self, ifitem, transitionData);
+			return STATE_Operational;
+		}
+		case CHAIN_TRANS_tr2_FROM_Operational_TO_Operational_BY_getTimerDeviationHighWaterMarksupervisionControl_tr2:
+		{
+			action_TRANS_tr2_FROM_Operational_TO_Operational_BY_getTimerDeviationHighWaterMarksupervisionControl_tr2(self, ifitem);
+			return STATE_Operational;
+		}
+		case CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3:
+		{
+			uint32 transitionData = *((uint32*) generic_data__et);
+			action_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3(self, ifitem, transitionData);
+			return STATE_Operational;
+		}
+		case CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4:
+		{
+			action_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4(self, ifitem);
+			return STATE_Operational;
+		}
+		case CHAIN_TRANS_tr5_FROM_Operational_TO_Operational_BY_restTimerDeviationHighWaterMarksupervisionControl_tr5:
+		{
+			action_TRANS_tr5_FROM_Operational_TO_Operational_BY_restTimerDeviationHighWaterMarksupervisionControl_tr5(self, ifitem);
+			return STATE_Operational;
+		}
+			default:
+				/* should not occur */
+				break;
+	}
+	return NO_STATE;
+}
+
+/**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state__et - the state which is entered
+ * @return - the ID of the final leaf state
+ */
+static etInt16 enterHistory(ATimerService* self, etInt16 state__et) {
+	etBool skip_entry__et = ET_FALSE;
+	if (state__et >= STATE_MAX) {
+		state__et = (etInt16) (state__et - STATE_MAX);
+		skip_entry__et = ET_TRUE;
+	}
+	while (ET_TRUE) {
+		switch (state__et) {
+			case STATE_Operational:
+				if (!(skip_entry__et)) entry_Operational(self);
+				/* in leaf state: return state id */
+				return STATE_Operational;
+			case STATE_TOP:
+				state__et = self->history[STATE_TOP];
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+		skip_entry__et = ET_FALSE;
+	}
+	/* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
+}
+
+static void ATimerService_executeInitTransition(ATimerService* self) {
+	int chain__et = CHAIN_TRANS_INITIAL_TO__Operational;
+	etInt16 next__et = executeTransitionChain(self, chain__et, NULL, NULL);
+	next__et = enterHistory(self, next__et);
+	setState(self, next__et);
+}
+
+/* receiveEvent contains the main implementation of the FSM */
+static void ATimerService_receiveEventInternal(ATimerService* self, InterfaceItemBase* ifitem, int localId, int evt, void* generic_data__et) {
+	int trigger__et = (ifitem==NULL)? POLLING : localId + EVT_SHIFT*evt;
+	int chain__et = NOT_CAUGHT;
+	etInt16 catching_state__et = NO_STATE;
+	((void)trigger__et);	/* avoids unused warning */
+
+	if (!handleSystemEvent(ifitem, evt, generic_data__et)) {
+		switch (getState(self)) {
+			case STATE_Operational:
+				switch(trigger__et) {
+					case POLLING:
+						do_Operational(self);
+						break;
+					case TRIG_supervisionControl__getTimerDeviationHighWaterMark:
+						{
+							chain__et = CHAIN_TRANS_tr2_FROM_Operational_TO_Operational_BY_getTimerDeviationHighWaterMarksupervisionControl_tr2;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					case TRIG_supervisionControl__restTimerDeviationHighWaterMark:
+						{
+							chain__et = CHAIN_TRANS_tr5_FROM_Operational_TO_Operational_BY_restTimerDeviationHighWaterMarksupervisionControl_tr5;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					case TRIG_timer__kill:
+						{
+							chain__et = CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					case TRIG_timer__startTimeout:
+						{
+							chain__et = CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					case TRIG_timer__startTimer:
+						{
+							chain__et = CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3;
+							catching_state__et = STATE_TOP;
+						}
+					break;
+					default:
+						/* should not occur */
+						break;
+				}
+				break;
+			default:
+				/* should not occur */
+				break;
+		}
+	}
+	if (chain__et != NOT_CAUGHT) {
+		exitTo(self, getState(self), catching_state__et);
+		{
+			etInt16 next__et = executeTransitionChain(self, chain__et, ifitem, generic_data__et);
+			next__et = enterHistory(self, next__et);
+			setState(self, next__et);
+		}
+	}
+}
+static void ATimerService_receiveEvent(ATimerService* self, InterfaceItemBase* ifitem, int evt, void* generic_data__et) {
+	int localId = (ifitem==NULL)? 0 : ifitem->localId;
+	ATimerService_receiveEventInternal(self, ifitem, localId, evt, generic_data__et);
+}
+
+void ATimerService_init(ATimerService* self){
+	ET_MSC_LOGGER_SYNC_ENTRY("ATimerService", "init")
+	self->state = STATE_TOP;
+	{
+		int i;
+		for (i=0; i<ATIMERSERVICE_HISTORY_SIZE; ++i)
+			self->history[i] = NO_STATE;
+	}
+	ATimerService_executeInitTransition(self);
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void ATimerService_receiveMessage(void* self, const void* ifitem, const etMessage* msg){
+	ET_MSC_LOGGER_SYNC_ENTRY("ATimerService", "_receiveMessage")
+	ATimerService_receiveEvent((ATimerService*) self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void ATimerService_execute(ATimerService* self) {
+	ET_MSC_LOGGER_SYNC_ENTRY("ATimerService", "_execute")
+
+	ATimerService_receiveEvent(self, NULL, 0, NULL);
+
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+/*--------------------- user constructor/destructor ---------------------*/
+
+/*--------------------- operations ---------------------*/
+ void ATimerService_returnTcb(ATimerService* self, etTimerControlBlock* block) {
+	block->next=freeTcbsRoot;
+	freeTcbsRoot=block;
+}
+ void ATimerService_putTcbToUsedList(ATimerService* self, etTimerControlBlock* block) {
+	etTimerControlBlock* temp=usedTcbsRoot;
+	etTimerControlBlock* temp2=usedTcbsRoot;
+	
+	if (temp==0){
+		/* list empty put new block to root */
+		block->next=0;
+		usedTcbsRoot=block;
+		return;
+		}
+	
+	while(1){
+		if (temp != 0){
+			if (isTimeGreater(&block->expTime,&temp->expTime)){
+				/* try next position */
+				temp2=temp;	
+				temp=temp->next;
+				}else{
+				/* right position found */
+				block->next=temp;
+				if(temp==usedTcbsRoot){
+					usedTcbsRoot=block;
+					}else{
+					temp2->next=block;
+					}
+				return;
+				}
+			}else{
+			/* end of list reached */
+			block->next=0;
+			temp2->next=block;
+			return;
+		}
+	}
+}
+ void ATimerService_addTime(ATimerService* self, etTime* t1, etTime* t2) {
+	t1->sec += t2->sec;
+	t1->nSec += t2->nSec;
+	while(t1->nSec >= 1000000000L){
+		t1->sec++;
+		t1->nSec-=1000000000L;
+	}
+}
+ etTimerControlBlock* ATimerService_getTcb(ATimerService* self) {
+	etTimerControlBlock* temp = freeTcbsRoot;
+	
+	if(freeTcbsRoot!=0) {
+		freeTcbsRoot=freeTcbsRoot->next;
+		temp->next=0;
+		}
+	return temp;
+}
+ void ATimerService_removeTcbFromUsedList(ATimerService* self, int32 idx) {
+	etTimerControlBlock* temp=usedTcbsRoot;
+	etTimerControlBlock* temp2=usedTcbsRoot;
+	
+	if (temp==0) return;
+	
+	if (usedTcbsRoot->portIdx == idx){
+		/* element found, the first one */
+		usedTcbsRoot = usedTcbsRoot->next;
+		returnTcb(temp);
+		return;
+	}
+	
+	temp=temp->next;
+	while(temp!=0){
+		if(temp->portIdx==idx){
+			temp2->next=temp->next;
+			returnTcb(temp);
+			return;			
+		}else{
+			/* try next */
+			temp2=temp;
+			temp=temp->next;
+			}
+	}
+}
+ bool ATimerService_isTimeGreater(ATimerService* self, etTime* t1, etTime* t2) {
+	if (t1->sec > t2->sec) return ET_TRUE;
+	if (t1->sec < t2->sec) return ET_FALSE;
+	if (t1->nSec > t2->nSec) return ET_TRUE;
+	return ET_FALSE;
+}
+ void ATimerService_subTime(ATimerService* self, etTime* t1, etTime* t2) {
+	t1->sec -= t2->sec;
+	
+	while(t2->nSec > t1->nSec){
+		t1->sec--;
+		t1->nSec += 1000000000L;
+	}
+	
+	t1->nSec -= t2->nSec;
+	
+	while(t1->nSec >= 1000000000L){
+		t1->sec++;
+		t1->nSec-=1000000000L;
+	}
+}
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService.h
new file mode 100644
index 0000000..16606ae
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService.h
@@ -0,0 +1,92 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ActorClass ATimerService
+ *
+ */
+
+#ifndef _ETRICE_API_TIMER_ATIMERSERVICE_H_
+#define _ETRICE_API_TIMER_ATIMERSERVICE_H_
+
+#include "etDatatypes.h"
+#include "messaging/etMessage.h"
+
+/* include all referenced room classes */
+#include "etrice/api/timer/PTimer.h"
+#include "etrice/api/timer/PTimerSupervisionControl.h"
+
+/*--------------------- begin user code ---------------------*/
+#include "osal/etTime.h" 
+#define ET_NB_OF_TCBS 70
+typedef struct etTCB etTimerControlBlock; 
+struct etTCB {
+	etTime expTime;
+	etTime pTime;
+	int32 portIdx;
+	etTimerControlBlock* next;
+	};
+
+/*--------------------- end user code ---------------------*/
+
+typedef struct ATimerService ATimerService;
+
+/* const part of ActorClass (ROM) */
+typedef struct ATimerService_const {
+	const char* instName;
+
+	/* simple ports */
+
+	/* data receive ports */
+
+	/* saps */
+
+	/* replicated ports */
+
+	/* services */
+	const etReplPort timer;
+	const etReplPort supervisionControl;
+} ATimerService_const;
+
+
+/* constant for state machine data */
+#define ATIMERSERVICE_HISTORY_SIZE 2
+
+/* variable part of ActorClass (RAM) */
+struct ATimerService {
+	const ATimerService_const* ET_CONST_MEMBER constData;
+
+	/* data send ports */
+
+	/*--------------------- attributes ---------------------*/
+	 etTimerControlBlock tcbs[70]
+	;
+	 etTimerControlBlock* usedTcbsRoot;
+	 etTimerControlBlock* freeTcbsRoot;
+	 etTime timerDeviationHighWaterMark;
+
+
+	/* state machine variables */
+	etInt16 state;
+	etInt16 history[ATIMERSERVICE_HISTORY_SIZE];
+};
+
+void ATimerService_init(ATimerService* self);
+
+void ATimerService_receiveMessage(void* self, const void* ifitem, const etMessage* msg);
+
+void ATimerService_execute(ATimerService* self);
+
+/*--------------------- user constructor/destructor ---------------------*/
+
+/*--------------------- operations ---------------------*/
+ void ATimerService_returnTcb(ATimerService* self, etTimerControlBlock* block);
+ void ATimerService_putTcbToUsedList(ATimerService* self, etTimerControlBlock* block);
+ void ATimerService_addTime(ATimerService* self, etTime* t1, etTime* t2);
+ etTimerControlBlock* ATimerService_getTcb(ATimerService* self);
+ void ATimerService_removeTcbFromUsedList(ATimerService* self, int32 idx);
+ bool ATimerService_isTimeGreater(ATimerService* self, etTime* t1, etTime* t2);
+ void ATimerService_subTime(ATimerService* self, etTime* t1, etTime* t2);
+
+
+#endif /* _ETRICE_API_TIMER_ATIMERSERVICE_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService_Utils.h
new file mode 100644
index 0000000..2caa256
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/ATimerService_Utils.h
@@ -0,0 +1,51 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ActorClass ATimerService
+ *
+ */
+
+#ifndef _ETRICE_API_TIMER_ATIMERSERVICE_UTILS_H_
+#define _ETRICE_API_TIMER_ATIMERSERVICE_UTILS_H_
+
+#include "etrice/api/timer/ATimerService.h"
+
+/*
+ * access macros for ports, operations and attributes
+*/
+
+/* simple event ports */
+
+/* data receive ports */
+
+/* data send ports */
+
+/* saps */
+
+/* replicated event ports */
+
+/* services */
+#define timer_timeout_broadcast() PTimerReplPort_timeout_broadcast(&self->constData->timer)
+#define timer_timeout(idx) PTimerReplPort_timeout(&self->constData->timer, idx)
+#define supervisionControl_timerDeviationHighWaterMark_broadcast(data) PTimerSupervisionControlReplPort_timerDeviationHighWaterMark_broadcast(&self->constData->supervisionControl, data)
+#define supervisionControl_timerDeviationHighWaterMark(idx, data) PTimerSupervisionControlReplPort_timerDeviationHighWaterMark(&self->constData->supervisionControl, idx, data)
+
+/* operations */
+#define returnTcb(block) ATimerService_returnTcb(self, block)
+#define putTcbToUsedList(block) ATimerService_putTcbToUsedList(self, block)
+#define addTime(t1, t2) ATimerService_addTime(self, t1, t2)
+#define getTcb() ATimerService_getTcb(self)
+#define removeTcbFromUsedList(idx) ATimerService_removeTcbFromUsedList(self, idx)
+#define isTimeGreater(t1, t2) ATimerService_isTimeGreater(self, t1, t2)
+#define subTime(t1, t2) ATimerService_subTime(self, t1, t2)
+
+/* attributes */
+#define tcbs (self->tcbs)
+#define usedTcbsRoot (self->usedTcbsRoot)
+#define freeTcbsRoot (self->freeTcbsRoot)
+#define timerDeviationHighWaterMark (self->timerDeviationHighWaterMark)
+
+/* port operations */
+
+#endif /* _ETRICE_API_TIMER_ATIMERSERVICE_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer.c
similarity index 95%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer.c
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer.c
index 1f6395e..efea82c 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer.c
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer.c
@@ -9,6 +9,10 @@
 #include "debugging/etMSCLogger.h"
 #include "PTimer_Utils.h"
 
+/*--------------------- begin user code ---------------------*/
+#define ET_TIMER_RUNNING	0x01
+#define ET_TIMER_PERIODIC	0x02
+/*--------------------- end user code ---------------------*/
 
 /*--------------------- port methods */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer.h
similarity index 81%
rename from runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer.h
rename to runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer.h
index faeea09..0652b13 100644
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer.h
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer.h
@@ -5,16 +5,12 @@
  * 
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_
-#define _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_
+#ifndef _ETRICE_API_TIMER_PTIMER_H_
+#define _ETRICE_API_TIMER_PTIMER_H_
 
 #include "etDatatypes.h"
 #include "modelbase/etPort.h"
 
-/*--------------------- begin user code ---------------------*/
-#define ET_TIMER_RUNNING	0x01
-#define ET_TIMER_PERIODIC	0x02
-/*--------------------- end user code ---------------------*/
 
 /* include all referenced room classes */
 
@@ -69,9 +65,6 @@
 /* get message string for message id */
 const char* PTimer_getMessageString(int msg_id);
 
-/*--------------------- begin user code ---------------------*/
-/*uc2*/
-/*--------------------- end user code ---------------------*/
 
-#endif /* _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_ */
+#endif /* _ETRICE_API_TIMER_PTIMER_H_ */
 
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl.c
new file mode 100644
index 0000000..3451f65
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl.c
@@ -0,0 +1,119 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ProtocolClass PTimerSupervisionControl
+ * 
+ */
+
+#include "PTimerSupervisionControl.h"
+#include "debugging/etMSCLogger.h"
+#include "PTimerSupervisionControl_Utils.h"
+
+
+/*--------------------- port methods */
+
+void PTimerSupervisionControlPort_timerDeviationHighWaterMark(const PTimerSupervisionControlPort* self, uint32 data__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlPort", "timerDeviationHighWaterMark")
+		etPort_sendMessage(self, PTimerSupervisionControl_OUT_timerDeviationHighWaterMark, sizeof(uint32), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "timerDeviationHighWaterMark", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTimerSupervisionControlReplPort_timerDeviationHighWaterMark_broadcast(const PTimerSupervisionControlReplPort* self, uint32 data__et) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlReplPort", "timerDeviationHighWaterMark")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PTimerSupervisionControl_OUT_timerDeviationHighWaterMark, sizeof(uint32), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "timerDeviationHighWaterMark", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTimerSupervisionControlReplPort_timerDeviationHighWaterMark(const PTimerSupervisionControlReplPort* self, int idx__et, uint32 data__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlReplPort", "timerDeviationHighWaterMark")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PTimerSupervisionControl_OUT_timerDeviationHighWaterMark, sizeof(uint32), &data__et);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "timerDeviationHighWaterMark", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+etInt32 PTimerSupervisionControlReplPort_getReplication(const PTimerSupervisionControlReplPort* self) {
+	return ((etReplPort*)self)->size;
+}
+
+
+
+void PTimerSupervisionControlConjPort_restTimerDeviationHighWaterMark(const PTimerSupervisionControlConjPort* self) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlConjPort", "restTimerDeviationHighWaterMark")
+		etPort_sendMessage(self, PTimerSupervisionControl_IN_restTimerDeviationHighWaterMark, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "restTimerDeviationHighWaterMark", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTimerSupervisionControlConjReplPort_restTimerDeviationHighWaterMark_broadcast(const PTimerSupervisionControlConjReplPort* self) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlConjReplPort", "restTimerDeviationHighWaterMark")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PTimerSupervisionControl_IN_restTimerDeviationHighWaterMark, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "restTimerDeviationHighWaterMark", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTimerSupervisionControlConjReplPort_restTimerDeviationHighWaterMark(const PTimerSupervisionControlConjReplPort* self, int idx__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlConjReplPort", "restTimerDeviationHighWaterMark")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PTimerSupervisionControl_IN_restTimerDeviationHighWaterMark, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "restTimerDeviationHighWaterMark", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void PTimerSupervisionControlConjPort_getTimerDeviationHighWaterMark(const PTimerSupervisionControlConjPort* self) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlConjPort", "getTimerDeviationHighWaterMark")
+		etPort_sendMessage(self, PTimerSupervisionControl_IN_getTimerDeviationHighWaterMark, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(self->myInstName, "getTimerDeviationHighWaterMark", self->peerInstName)
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTimerSupervisionControlConjReplPort_getTimerDeviationHighWaterMark_broadcast(const PTimerSupervisionControlConjReplPort* self) {
+	int i;
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlConjReplPort", "getTimerDeviationHighWaterMark")
+	for (i=0; i<((etReplPort*)self)->size; ++i) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[i].port), PTimerSupervisionControl_IN_getTimerDeviationHighWaterMark, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[i].port.myInstName, "getTimerDeviationHighWaterMark", ((etReplPort*)self)->ports[i].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void PTimerSupervisionControlConjReplPort_getTimerDeviationHighWaterMark(const PTimerSupervisionControlConjReplPort* self, int idx__et) {
+	ET_MSC_LOGGER_SYNC_ENTRY("PTimerSupervisionControlConjReplPort", "getTimerDeviationHighWaterMark")
+	if (0<=idx__et && idx__et<((etReplPort*)self)->size) {
+		etPort_sendMessage((&((etReplPort*)self)->ports[idx__et].port), PTimerSupervisionControl_IN_getTimerDeviationHighWaterMark, 0, NULL);
+		ET_MSC_LOGGER_ASYNC_OUT(((etReplPort*)self)->ports[idx__et].port.myInstName, "getTimerDeviationHighWaterMark", ((etReplPort*)self)->ports[idx__et].port.peerInstName)
+	}
+	ET_MSC_LOGGER_SYNC_EXIT
+}
+
+etInt32 PTimerSupervisionControlConjReplPort_getReplication(const PTimerSupervisionControlConjReplPort* self) {
+	return ((etReplPort*)self)->size;
+}
+
+
+
+/*--------------------- debug helpers */
+
+/* message names as strings for debugging (generate MSC) */
+static const char* const PTimerSupervisionControl_messageStrings[] = {"MIN", "timerDeviationHighWaterMark","restTimerDeviationHighWaterMark", "getTimerDeviationHighWaterMark", "MAX"};
+
+const char* PTimerSupervisionControl_getMessageString(int msg_id) {
+	if (msg_id<PTimerSupervisionControl_MSG_MIN || msg_id>PTimerSupervisionControl_MSG_MAX+1){
+		/* id out of range */
+		return "Message ID out of range";
+	}
+	else{
+		return PTimerSupervisionControl_messageStrings[msg_id];
+	}
+}
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl.h
new file mode 100644
index 0000000..7e15d1d
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl.h
@@ -0,0 +1,59 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ProtocolClass PTimerSupervisionControl
+ * 
+ */
+
+#ifndef _ETRICE_API_TIMER_PTIMERSUPERVISIONCONTROL_H_
+#define _ETRICE_API_TIMER_PTIMERSUPERVISIONCONTROL_H_
+
+#include "etDatatypes.h"
+#include "modelbase/etPort.h"
+
+
+/* include all referenced room classes */
+
+
+/* message IDs */
+enum PTimerSupervisionControl_msg_ids {
+	PTimerSupervisionControl_MSG_MIN = 0,
+	PTimerSupervisionControl_OUT_timerDeviationHighWaterMark = 1,
+	PTimerSupervisionControl_IN_restTimerDeviationHighWaterMark = 2,
+	PTimerSupervisionControl_IN_getTimerDeviationHighWaterMark = 3,
+	PTimerSupervisionControl_MSG_MAX = 4
+};
+
+/*--------------------- port structs and methods */
+typedef etPort PTimerSupervisionControlPort;
+typedef etReplPort PTimerSupervisionControlReplPort;
+
+
+void PTimerSupervisionControlPort_timerDeviationHighWaterMark(const PTimerSupervisionControlPort* self, uint32 data);
+void PTimerSupervisionControlReplPort_timerDeviationHighWaterMark_broadcast(const PTimerSupervisionControlReplPort* self, uint32 data);
+void PTimerSupervisionControlReplPort_timerDeviationHighWaterMark(const PTimerSupervisionControlReplPort* self, int idx, uint32 data);
+
+
+etInt32 PTimerSupervisionControlReplPort_getReplication(const PTimerSupervisionControlReplPort* self);
+typedef etPort PTimerSupervisionControlConjPort;
+typedef etReplPort PTimerSupervisionControlConjReplPort;
+
+
+void PTimerSupervisionControlConjPort_restTimerDeviationHighWaterMark(const PTimerSupervisionControlConjPort* self);
+void PTimerSupervisionControlConjReplPort_restTimerDeviationHighWaterMark_broadcast(const PTimerSupervisionControlConjReplPort* self);
+void PTimerSupervisionControlConjReplPort_restTimerDeviationHighWaterMark(const PTimerSupervisionControlConjReplPort* self, int idx);
+void PTimerSupervisionControlConjPort_getTimerDeviationHighWaterMark(const PTimerSupervisionControlConjPort* self);
+void PTimerSupervisionControlConjReplPort_getTimerDeviationHighWaterMark_broadcast(const PTimerSupervisionControlConjReplPort* self);
+void PTimerSupervisionControlConjReplPort_getTimerDeviationHighWaterMark(const PTimerSupervisionControlConjReplPort* self, int idx);
+
+
+etInt32 PTimerSupervisionControlConjReplPort_getReplication(const PTimerSupervisionControlConjReplPort* self);
+
+/*--------------------- debug helpers */
+
+/* get message string for message id */
+const char* PTimerSupervisionControl_getMessageString(int msg_id);
+
+
+#endif /* _ETRICE_API_TIMER_PTIMERSUPERVISIONCONTROL_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl_Utils.h
new file mode 100644
index 0000000..ba89378
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimerSupervisionControl_Utils.h
@@ -0,0 +1,19 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ProtocolClass PTimerSupervisionControl
+ * 
+ */
+
+#ifndef _ETRICE_API_TIMER_PTIMERSUPERVISIONCONTROL_UTILS_H_
+#define _ETRICE_API_TIMER_PTIMERSUPERVISIONCONTROL_UTILS_H_
+
+#include "etrice/api/timer/PTimerSupervisionControl.h"
+
+/*
+ * access macros for operations and attributes
+*/
+
+
+#endif /* _ETRICE_API_TIMER_PTIMERSUPERVISIONCONTROL_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer_Utils.h
new file mode 100644
index 0000000..c287a9f
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.c/src-gen/etrice/api/timer/PTimer_Utils.h
@@ -0,0 +1,25 @@
+/**
+ * @author generated by eTrice
+ *
+ * Utils File of ProtocolClass PTimer
+ * 
+ */
+
+#ifndef _ETRICE_API_TIMER_PTIMER_UTILS_H_
+#define _ETRICE_API_TIMER_PTIMER_UTILS_H_
+
+#include "etrice/api/timer/PTimer.h"
+
+/*
+ * access macros for operations and attributes
+*/
+
+/* conjugate port class */
+
+/* operations */
+
+/* attributes */
+#define status (((PTimerConjPort_var*)(self->varData))->status)
+
+#endif /* _ETRICE_API_TIMER_PTIMER_UTILS_H_ */
+
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl_Utils.h
deleted file mode 100644
index 72ec2d8..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/DTcpControl_Utils.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Utils File of DataClass DTcpControl
- * 
- */
-
-#ifndef _ROOM_BASIC_SERVICE_TCP_DTCPCONTROL_UTILS_H_
-#define _ROOM_BASIC_SERVICE_TCP_DTCPCONTROL_UTILS_H_
-
-#include "room/basic/service/tcp/DTcpControl.h"
-
-/*
- * access macros for operations and attributes
-*/
-
-/* operations */
-
-/* attributes */
-#define IPAddr (self->IPAddr)
-#define TcpPort (self->TcpPort)
-
-#endif /* _ROOM_BASIC_SERVICE_TCP_DTCPCONTROL_UTILS_H_ */
-
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpControl_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpControl_Utils.h
deleted file mode 100644
index 06b3b77..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpControl_Utils.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Utils File of ProtocolClass PTcpControl
- * 
- */
-
-#ifndef _ROOM_BASIC_SERVICE_TCP_PTCPCONTROL_UTILS_H_
-#define _ROOM_BASIC_SERVICE_TCP_PTCPCONTROL_UTILS_H_
-
-#include "room/basic/service/tcp/PTcpControl.h"
-
-/*
- * access macros for operations and attributes
-*/
-
-
-#endif /* _ROOM_BASIC_SERVICE_TCP_PTCPCONTROL_UTILS_H_ */
-
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpPayload_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpPayload_Utils.h
deleted file mode 100644
index 260b9e6..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/tcp/PTcpPayload_Utils.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Utils File of ProtocolClass PTcpPayload
- * 
- */
-
-#ifndef _ROOM_BASIC_SERVICE_TCP_PTCPPAYLOAD_UTILS_H_
-#define _ROOM_BASIC_SERVICE_TCP_PTCPPAYLOAD_UTILS_H_
-
-#include "room/basic/service/tcp/PTcpPayload.h"
-
-/*
- * access macros for operations and attributes
-*/
-
-
-#endif /* _ROOM_BASIC_SERVICE_TCP_PTCPPAYLOAD_UTILS_H_ */
-
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService.c b/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService.c
deleted file mode 100644
index d164a2c..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService.c
+++ /dev/null
@@ -1,406 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Source File of ActorClass ATimingService
- *
- */
-
-#include "ATimingService.h"
-
-#include "modelbase/etActor.h"
-#include "debugging/etLogger.h"
-#include "debugging/etMSCLogger.h"
-#include "etUnit/etUnit.h"
-#include "base/etMemory.h"
-
-#include "room/basic/service/timing/PTimer.h"
-
-#include "ATimingService_Utils.h"
-
-/*--------------------- begin user code ---------------------*/
-/*uc3*/
-/*--------------------- end user code ---------------------*/
-
-/* interface item IDs */
-enum interface_items {
-	IFITEM_timer = 1
-};
-
-/* state IDs */
-enum state_ids {
-	NO_STATE = 0,
-	STATE_TOP = 1,
-	STATE_Operational = 2,
-	STATE_MAX = 3
-};
-
-/* transition chains */
-enum ChainIDs {
-	CHAIN_TRANS_INITIAL_TO__Operational = 1,
-	CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1 = 2,
-	CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3 = 3,
-	CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4 = 4
-};
-
-/* triggers */
-enum triggers {
-	POLLING = 0,
-	TRIG_timer__startTimer = IFITEM_timer + EVT_SHIFT*PTimer_IN_startTimer,
-	TRIG_timer__startTimeout = IFITEM_timer + EVT_SHIFT*PTimer_IN_startTimeout,
-	TRIG_timer__kill = IFITEM_timer + EVT_SHIFT*PTimer_IN_kill
-};
-
-/* state names */
-static char* stateStrings[] = {"<no state>","<top>","Operational"
-};
-
-static void setState(ATimingService* self, etInt16 new_state) {
-	self->state = new_state;
-	ET_MSC_LOGGER_CHANGE_STATE(self->constData->instName, stateStrings[new_state]);
-}
-
-static etInt16 getState(ATimingService* self) {
-	return self->state;
-}
-
-/* Entry and Exit Codes */
-static void entry_Operational(ATimingService* self) {
-	/* prepare */
-}
-static  void do_Operational(ATimingService* self) {
-	/* maintain timers */
-	etTimerControlBlock* temp;
-	etTime t;
-	
-	getTimeFromTarget(&t);
-	while (usedTcbsRoot !=0 ){
-		if (isTimeGreater(&t,&(usedTcbsRoot->expTime))){
-			timer_timeout(usedTcbsRoot->portIdx);
-			temp=usedTcbsRoot;
-			usedTcbsRoot=usedTcbsRoot->next;
-			if((temp->pTime.sec==0)&&(temp->pTime.nSec==0)){
-				/* single shot timer */
-				returnTcb(temp);
-			}else{
-				/* periodic timer */
-				addTime(&temp->expTime,&temp->pTime);
-				putTcbToUsedList(temp);
-				}
-			}else{
-				break;
-				}
-		}
-}
-
-/* Action Codes */
-static void action_TRANS_INITIAL_TO__Operational(ATimingService* self) {
-    int i;
-    usedTcbsRoot=0;
-    freeTcbsRoot=&tcbs[0];
-    tcbs[ET_NB_OF_TCBS-1].next=0;
-    for (i=0;i<ET_NB_OF_TCBS-1;i++){
-    	tcbs[i].next=&tcbs[i+1];
-    	}
-}
-static void action_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1(ATimingService* self, const InterfaceItemBase* ifitem, uint32 transitionData) {
-    etTimerControlBlock* transitionDatar = getTcb();
-    etTime t;
-    if (transitionDatar!= 0){
-    	t.sec=transitionData/1000;
-    	t.nSec=(transitionData%1000)*1000000L;
-    	transitionDatar->pTime.sec = 0;
-    	transitionDatar->pTime.nSec = 0;
-    	transitionDatar->portIdx=((etReplSubPort*)ifitem)->index;
-    	getTimeFromTarget(&(transitionDatar->expTime));
-    	addTime(&(transitionDatar->expTime),&t);
-    	putTcbToUsedList(transitionDatar);
-    	}
-}
-static void action_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3(ATimingService* self, const InterfaceItemBase* ifitem, uint32 transitionData) {
-    etTimerControlBlock* transitionDatar = getTcb();
-    etTime t;
-    if (transitionDatar!= 0){
-    	t.sec=transitionData/1000;
-    	t.nSec=(transitionData%1000)*1000000L;
-    	transitionDatar->pTime = t;
-    	transitionDatar->portIdx=((etReplSubPort*)ifitem)->index;
-    	getTimeFromTarget(&(transitionDatar->expTime));
-    	addTime(&(transitionDatar->expTime),&t);
-    	putTcbToUsedList(transitionDatar);
-    	}
-}
-static void action_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4(ATimingService* self, const InterfaceItemBase* ifitem) {
-    removeTcbFromUsedList(((etReplSubPort*)ifitem)->index);
-}
-
-/* State Switch Methods */
-/**
- * calls exit codes while exiting from the current state to one of its
- * parent states while remembering the history
- * @param current__et - the current state
- * @param to - the final parent state
- */
-static void exitTo(ATimingService* self, etInt16 current__et, etInt16 to) {
-	while (current__et!=to) {
-		switch (current__et) {
-			case STATE_Operational:
-				self->history[STATE_TOP] = STATE_Operational;
-				current__et = STATE_TOP;
-				break;
-			default:
-				/* should not occur */
-				break;
-		}
-	}
-}
-
-/**
- * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
- * matching the trigger of this chain. The ID of the final state is returned
- * @param chain__et - the chain ID
- * @param generic_data__et - the generic data pointer
- * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
- */
-static etInt16 executeTransitionChain(ATimingService* self, int chain__et, const InterfaceItemBase* ifitem, void* generic_data__et) {
-	switch (chain__et) {
-		case CHAIN_TRANS_INITIAL_TO__Operational:
-		{
-			action_TRANS_INITIAL_TO__Operational(self);
-			return STATE_Operational;
-		}
-		case CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1:
-		{
-			uint32 transitionData = *((uint32*) generic_data__et);
-			action_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1(self, ifitem, transitionData);
-			return STATE_Operational;
-		}
-		case CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3:
-		{
-			uint32 transitionData = *((uint32*) generic_data__et);
-			action_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3(self, ifitem, transitionData);
-			return STATE_Operational;
-		}
-		case CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4:
-		{
-			action_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4(self, ifitem);
-			return STATE_Operational;
-		}
-			default:
-				/* should not occur */
-				break;
-	}
-	return NO_STATE;
-}
-
-/**
- * calls entry codes while entering a state's history. The ID of the final leaf state is returned
- * @param state__et - the state which is entered
- * @return - the ID of the final leaf state
- */
-static etInt16 enterHistory(ATimingService* self, etInt16 state__et) {
-	etBool skip_entry__et = ET_FALSE;
-	if (state__et >= STATE_MAX) {
-		state__et = (etInt16) (state__et - STATE_MAX);
-		skip_entry__et = ET_TRUE;
-	}
-	while (ET_TRUE) {
-		switch (state__et) {
-			case STATE_Operational:
-				if (!(skip_entry__et)) entry_Operational(self);
-				/* in leaf state: return state id */
-				return STATE_Operational;
-			case STATE_TOP:
-				state__et = self->history[STATE_TOP];
-				break;
-			default:
-				/* should not occur */
-				break;
-		}
-		skip_entry__et = ET_FALSE;
-	}
-	/* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
-}
-
-static void ATimingService_executeInitTransition(ATimingService* self) {
-	int chain__et = CHAIN_TRANS_INITIAL_TO__Operational;
-	etInt16 next__et = executeTransitionChain(self, chain__et, NULL, NULL);
-	next__et = enterHistory(self, next__et);
-	setState(self, next__et);
-}
-
-/* receiveEvent contains the main implementation of the FSM */
-static void ATimingService_receiveEventInternal(ATimingService* self, InterfaceItemBase* ifitem, int localId, int evt, void* generic_data__et) {
-	int trigger__et = (ifitem==NULL)? POLLING : localId + EVT_SHIFT*evt;
-	int chain__et = NOT_CAUGHT;
-	etInt16 catching_state__et = NO_STATE;
-	((void)trigger__et);	/* avoids unused warning */
-
-	if (!handleSystemEvent(ifitem, evt, generic_data__et)) {
-		switch (getState(self)) {
-			case STATE_Operational:
-				switch(trigger__et) {
-					case POLLING:
-						do_Operational(self);
-						break;
-					case TRIG_timer__kill:
-						{
-							chain__et = CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4;
-							catching_state__et = STATE_TOP;
-						}
-					break;
-					case TRIG_timer__startTimeout:
-						{
-							chain__et = CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1;
-							catching_state__et = STATE_TOP;
-						}
-					break;
-					case TRIG_timer__startTimer:
-						{
-							chain__et = CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3;
-							catching_state__et = STATE_TOP;
-						}
-					break;
-					default:
-						/* should not occur */
-						break;
-				}
-				break;
-			default:
-				/* should not occur */
-				break;
-		}
-	}
-	if (chain__et != NOT_CAUGHT) {
-		exitTo(self, getState(self), catching_state__et);
-		{
-			etInt16 next__et = executeTransitionChain(self, chain__et, ifitem, generic_data__et);
-			next__et = enterHistory(self, next__et);
-			setState(self, next__et);
-		}
-	}
-}
-static void ATimingService_receiveEvent(ATimingService* self, InterfaceItemBase* ifitem, int evt, void* generic_data__et) {
-	int localId = (ifitem==NULL)? 0 : ifitem->localId;
-	ATimingService_receiveEventInternal(self, ifitem, localId, evt, generic_data__et);
-}
-
-void ATimingService_init(ATimingService* self){
-	ET_MSC_LOGGER_SYNC_ENTRY("ATimingService", "init")
-	self->state = STATE_TOP;
-	{
-		int i;
-		for (i=0; i<ATIMINGSERVICE_HISTORY_SIZE; ++i)
-			self->history[i] = NO_STATE;
-	}
-	ATimingService_executeInitTransition(self);
-	ET_MSC_LOGGER_SYNC_EXIT
-}
-
-
-void ATimingService_receiveMessage(void* self, const void* ifitem, const etMessage* msg){
-	ET_MSC_LOGGER_SYNC_ENTRY("ATimingService", "_receiveMessage")
-	ATimingService_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
-
-	ET_MSC_LOGGER_SYNC_EXIT
-}
-
-void ATimingService_execute(ATimingService* self) {
-	ET_MSC_LOGGER_SYNC_ENTRY("ATimingService", "_execute")
-
-	ATimingService_receiveEvent(self, NULL, 0, NULL);
-
-	ET_MSC_LOGGER_SYNC_EXIT
-}
-
-/*--------------------- user constructor/destructor ---------------------*/
-
-/*--------------------- operations ---------------------*/
- void ATimingService_returnTcb(ATimingService* self, etTimerControlBlock* block) {
-	block->next=freeTcbsRoot;
-	freeTcbsRoot=block;
-}
- void ATimingService_putTcbToUsedList(ATimingService* self, etTimerControlBlock* block) {
-	etTimerControlBlock* temp=usedTcbsRoot;
-	etTimerControlBlock* temp2=usedTcbsRoot;
-	
-	if (temp==0){
-		/* list empty put new block to root */
-		block->next=0;
-		usedTcbsRoot=block;
-		return;
-		}
-	
-	while(1){
-		if (temp != 0){
-			if (isTimeGreater(&block->expTime,&temp->expTime)){
-				/* try next position */
-				temp2=temp;	
-				temp=temp->next;
-				}else{
-				/* right position found */
-				block->next=temp;
-				if(temp==usedTcbsRoot){
-					usedTcbsRoot=block;
-					}else{
-					temp2->next=block;
-					}
-				return;
-				}
-			}else{
-			/* end of list reached */
-			block->next=0;
-			temp2->next=block;
-			return;
-		}
-	}
-}
- void ATimingService_addTime(ATimingService* self, etTime* t1, etTime* t2) {
-	t1->sec += t2->sec;
-	t1->nSec += t2->nSec;
-	while(t1->nSec >= 1000000000L){
-		t1->sec++;
-		t1->nSec-=1000000000L;
-	}
-}
- etTimerControlBlock* ATimingService_getTcb(ATimingService* self) {
-	etTimerControlBlock* temp = freeTcbsRoot;
-	
-	if(freeTcbsRoot!=0) {
-		freeTcbsRoot=freeTcbsRoot->next;
-		temp->next=0;
-		}
-	return temp;
-}
- void ATimingService_removeTcbFromUsedList(ATimingService* self, int32 idx) {
-	etTimerControlBlock* temp=usedTcbsRoot;
-	etTimerControlBlock* temp2=usedTcbsRoot;
-	
-	if (temp==0) return;
-	
-	if (usedTcbsRoot->portIdx == idx){
-		/* element found, the first one */
-		usedTcbsRoot = usedTcbsRoot->next;
-		returnTcb(temp);
-		return;
-	}
-	
-	temp=temp->next;
-	while(temp!=0){
-		if(temp->portIdx==idx){
-			temp2->next=temp->next;
-			returnTcb(temp);
-			return;			
-		}else{
-			/* try next */
-			temp2=temp;
-			temp=temp->next;
-			}
-	}
-}
- bool ATimingService_isTimeGreater(ATimingService* self, etTime* t1, etTime* t2) {
-	if (t1->sec > t2->sec) return ET_TRUE;
-	if (t1->sec < t2->sec) return ET_FALSE;
-	if (t1->nSec > t2->nSec) return ET_TRUE;
-	return ET_FALSE;
-}
-
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService.h
deleted file mode 100644
index d8cafad..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Header File of ActorClass ATimingService
- *
- */
-
-#ifndef _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_H_
-#define _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_H_
-
-#include "etDatatypes.h"
-#include "messaging/etMessage.h"
-
-/* include all referenced room classes */
-#include "room/basic/service/timing/PTimer.h"
-
-/*--------------------- begin user code ---------------------*/
-#include "osal/etTime.h" 
-#define ET_NB_OF_TCBS 30
-typedef struct etTCB etTimerControlBlock; 
-struct etTCB {
-	etTime expTime;
-	etTime pTime;
-	int32 portIdx;
-	etTimerControlBlock* next;
-	};
-/*--------------------- end user code ---------------------*/
-
-typedef struct ATimingService ATimingService;
-
-/* const part of ActorClass (ROM) */
-typedef struct ATimingService_const {
-	const char* instName;
-
-	/* simple ports */
-
-	/* data receive ports */
-
-	/* saps */
-
-	/* replicated ports */
-
-	/* services */
-	const etReplPort timer;
-} ATimingService_const;
-
-
-/* constant for state machine data */
-#define ATIMINGSERVICE_HISTORY_SIZE 3
-
-/* variable part of ActorClass (RAM) */
-struct ATimingService {
-	const ATimingService_const* const constData;
-
-	/* data send ports */
-
-	/*--------------------- attributes ---------------------*/
-	 etTimerControlBlock tcbs[30]
-	;
-	 etTimerControlBlock* usedTcbsRoot;
-	 etTimerControlBlock* freeTcbsRoot;
-
-
-	/* state machine variables */
-	etInt16 state;
-	etInt16 history[ATIMINGSERVICE_HISTORY_SIZE];
-};
-
-void ATimingService_init(ATimingService* self);
-
-void ATimingService_receiveMessage(void* self, const void* ifitem, const etMessage* msg);
-
-void ATimingService_execute(ATimingService* self);
-
-/*--------------------- user constructor/destructor ---------------------*/
-
-/*--------------------- operations ---------------------*/
- void ATimingService_returnTcb(ATimingService* self, etTimerControlBlock* block);
- void ATimingService_putTcbToUsedList(ATimingService* self, etTimerControlBlock* block);
- void ATimingService_addTime(ATimingService* self, etTime* t1, etTime* t2);
- etTimerControlBlock* ATimingService_getTcb(ATimingService* self);
- void ATimingService_removeTcbFromUsedList(ATimingService* self, int32 idx);
- bool ATimingService_isTimeGreater(ATimingService* self, etTime* t1, etTime* t2);
-
-/*--------------------- begin user code ---------------------*/
-/*uc2*/
-/*--------------------- end user code ---------------------*/
-
-#endif /* _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_H_ */
-
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService_Utils.h
deleted file mode 100644
index 572eac3..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/ATimingService_Utils.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Utils File of ActorClass ATimingService
- *
- */
-
-#ifndef _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_UTILS_H_
-#define _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_UTILS_H_
-
-#include "room/basic/service/timing/ATimingService.h"
-
-/*
- * access macros for ports, operations and attributes
-*/
-
-/* simple event ports */
-
-/* data receive ports */
-
-/* data send ports */
-
-/* saps */
-
-/* replicated event ports */
-
-/* services */
-#define timer_timeout_broadcast() PTimerReplPort_timeout_broadcast(&self->constData->timer)
-#define timer_timeout(idx) PTimerReplPort_timeout(&self->constData->timer, idx)
-
-/* operations */
-#define returnTcb(block) ATimingService_returnTcb(self, block)
-#define putTcbToUsedList(block) ATimingService_putTcbToUsedList(self, block)
-#define addTime(t1, t2) ATimingService_addTime(self, t1, t2)
-#define getTcb() ATimingService_getTcb(self)
-#define removeTcbFromUsedList(idx) ATimingService_removeTcbFromUsedList(self, idx)
-#define isTimeGreater(t1, t2) ATimingService_isTimeGreater(self, t1, t2)
-
-/* attributes */
-#define tcbs (self->tcbs)
-#define usedTcbsRoot (self->usedTcbsRoot)
-#define freeTcbsRoot (self->freeTcbsRoot)
-
-/* port operations */
-
-#endif /* _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_UTILS_H_ */
-
diff --git a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer_Utils.h b/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer_Utils.h
deleted file mode 100644
index fe7e4ff..0000000
--- a/runtime/org.eclipse.etrice.modellib.c/src-gen/room/basic/service/timing/PTimer_Utils.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Utils File of ProtocolClass PTimer
- * 
- */
-
-#ifndef _ROOM_BASIC_SERVICE_TIMING_PTIMER_UTILS_H_
-#define _ROOM_BASIC_SERVICE_TIMING_PTIMER_UTILS_H_
-
-#include "room/basic/service/timing/PTimer.h"
-
-/*
- * access macros for operations and attributes
-*/
-
-/* conjugate port class */
-
-/* operations */
-
-/* attributes */
-#define status (((PTimerConjPort_var*)(self->varData))->status)
-
-#endif /* _ROOM_BASIC_SERVICE_TIMING_PTIMER_UTILS_H_ */
-
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/build.gradle b/runtime/org.eclipse.etrice.modellib.cpp/build.gradle
index abb7bf8..ef446f9 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/build.gradle
+++ b/runtime/org.eclipse.etrice.modellib.cpp/build.gradle
@@ -7,7 +7,7 @@
 }
 
 def models = [
-	'model/TimingService.room'
+	'model/etrice/api/timer.room'
 ]
 
 createGeneratorTask('generate', 'cpp', models, 'src-gen', '-lib')
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/gen_modellib.launch b/runtime/org.eclipse.etrice.modellib.cpp/gen_modellib.launch
index 2b4e6e9..816ca23 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/gen_modellib.launch
+++ b/runtime/org.eclipse.etrice.modellib.cpp/gen_modellib.launch
@@ -5,12 +5,17 @@
 <booleanAttribute key="GenDocumentation" value="false"/>
 <booleanAttribute key="GenInstanceDiagram" value="false"/>
 <stringAttribute key="GenModelPath" value=""/>
+<booleanAttribute key="GenerateDepsWithinProject" value="true"/>
 <booleanAttribute key="Lib" value="true"/>
 <booleanAttribute key="MSC" value="true"/>
+<stringAttribute key="MainMethodName" value="main"/>
 <listAttribute key="ModelFiles">
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.cpp/model/TimingService.room}"/>
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.cpp/model/Tests.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.cpp/model/etrice/api/annotations.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.cpp/model/etrice/api/language.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.cpp/model/etrice/api/timer.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.cpp/model/etrice/api/types.room}"/>
 </listAttribute>
+<booleanAttribute key="OldStyleTransitionData" value="false"/>
 <booleanAttribute key="OverrideDirectories" value="false"/>
 <booleanAttribute key="SaveGenModel" value="false"/>
 <booleanAttribute key="UseTranslation" value="true"/>
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/Annotations.room b/runtime/org.eclipse.etrice.modellib.cpp/model/Annotations.room
deleted file mode 100644
index 88a595d..0000000
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/Annotations.room
+++ /dev/null
@@ -1,8 +0,0 @@
-RoomModel room.basic.annotations {
-	
-	AnnotationType ImplementationSubclass {
-        target = ActorClass
-        mandatory attribute fqnClassName: ptCharacter
-        optional attribute includePath: ptCharacter
-	}
-}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/GenericPhysical.etphys b/runtime/org.eclipse.etrice.modellib.cpp/model/GenericPhysical.etphys
index 27f442b..25d6537 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/GenericPhysical.etphys
+++ b/runtime/org.eclipse.etrice.modellib.cpp/model/GenericPhysical.etphys
@@ -1,4 +1,4 @@
-PhysicalModel room.generic.physical {
+PhysicalModel GenericPhysical {
 	
 	PhysicalSystem GenericPhysicalSystem {
 		NodeRef node : GenericNodeClass
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/Language.room b/runtime/org.eclipse.etrice.modellib.cpp/model/Language.room
deleted file mode 100644
index 7de780b..0000000
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/Language.room
+++ /dev/null
@@ -1,3 +0,0 @@
-RoomModel room.basic.language {
-	PrimitiveType languageIndicator: ptInteger -> 'int8' default '2'
-}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/diagrams/room.basic.service.timing.ATimingService.behavior b/runtime/org.eclipse.etrice.modellib.cpp/model/diagrams/room.basic.service.timing.ATimingService.behavior
deleted file mode 100644
index bb4cfad..0000000
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/diagrams/room.basic.service.timing.ATimingService.behavior
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATimingService" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link" verticalGridUnit="10" version="0.11.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="sg"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="858" height="381" x="37" y="33">
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="778" height="301" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="778" height="301" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TimingService.room#StateGraph:ATimingService$sg"/>
-    </link>
-    <children visible="true">
-      <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="778" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#StateGraph:ATimingService$sg"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="435" height="216" x="237" y="52">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="375" height="156" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="350" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="187" y="150">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="187" y="150">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="187" y="150">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#SimpleState:ATimingService$Operational"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1 //@connections.2 //@connections.3" incomingConnections="//@connections.0 //@connections.1 //@connections.2 //@connections.3"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="375" height="156" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Operational"/>
-      </children>
-    </children>
-  </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#InitialTransition:ATimingService$initial"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr1"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;startTimeout:t..."/>
-    </connectionDecorators>
-    <bendpoints x="679" y="253"/>
-    <bendpoints x="707" y="253"/>
-    <bendpoints x="707" y="206"/>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr3"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="-36" y="13" font="//@fonts.0" value="tr3: &lt;startTimer:tim..."/>
-    </connectionDecorators>
-    <bendpoints x="490" y="305"/>
-    <bendpoints x="591" y="305"/>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr4"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" y="12" font="//@fonts.0" value="tr4: &lt;kill:timer>"/>
-    </connectionDecorators>
-    <bendpoints x="321" y="271"/>
-    <bendpoints x="321" y="300"/>
-    <bendpoints x="392" y="300"/>
-  </connections>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <colors red="200" green="200" blue="200"/>
-  <fonts name="Arial" size="8"/>
-  <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/diagrams/room.basic.service.timing.ATimingService.structure b/runtime/org.eclipse.etrice.modellib.cpp/model/diagrams/room.basic.service.timing.ATimingService.structure
deleted file mode 100644
index 068747c..0000000
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/diagrams/room.basic.service.timing.ATimingService.structure
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of ATimingService" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.11.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="cls"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="571" height="294" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="491" height="214" x="40" y="40"/>
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="491" height="214" x="40" y="40"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-    </link>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="inherited" value="false"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="245">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#SPP:ATimingService$timer"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" value="timer"/>
-      </children>
-    </children>
-  </children>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <fonts name="Arial" size="8"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/Tests.room b/runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/annotations.room
similarity index 66%
rename from runtime/org.eclipse.etrice.modellib.cpp/model/Tests.room
rename to runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/annotations.room
index 097b72e..c841c1f 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/Tests.room
+++ b/runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/annotations.room
@@ -1,8 +1,11 @@
-RoomModel room.basic.test {
+RoomModel etrice.api.annotations {
 	
-	import room.basic.service.timing.* from "TimingService.room"
-	import room.basic.types.* from "Types.room"	
-
+	AnnotationType ImplementationSubclass {
+        target = ActorClass
+        mandatory attribute fqnClassName: ptCharacter
+        optional attribute includePath: ptCharacter
+	}
+	
 	/**
 	 * A SubSystemClass or ActorClass having this annotation is construed as an instance.<br>
 	 * During generation the necessary instantiation (LogicalSystem, SubSystemRef etc.) and mapping will be created. 
@@ -13,5 +16,5 @@
 	AnnotationType TestInstance {
 		target = { SubSystemClass, ActorClass }
 	}
-
+	
 }
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.c/model/Language.room b/runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/language.room
similarity index 67%
copy from runtime/org.eclipse.etrice.modellib.c/model/Language.room
copy to runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/language.room
index 7de780b..3b67525 100644
--- a/runtime/org.eclipse.etrice.modellib.c/model/Language.room
+++ b/runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/language.room
@@ -1,3 +1,3 @@
-RoomModel room.basic.language {
+RoomModel etrice.api.language {
 	PrimitiveType languageIndicator: ptInteger -> 'int8' default '2'
 }
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/TimingService.room b/runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/timer.room
similarity index 96%
rename from runtime/org.eclipse.etrice.modellib.cpp/model/TimingService.room
rename to runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/timer.room
index ede7642..d61228f 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/TimingService.room
+++ b/runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/timer.room
@@ -1,8 +1,11 @@
-RoomModel room.basic.service.timing {
+RoomModel etrice.api.timer {
 
-	import room.basic.types.* from "Types.room"
+	import etrice.api.types.boolean
+	import etrice.api.types.int8
+	import etrice.api.types.int32
+	import etrice.api.types.uint32
 
-	async ActorClass ATimingService {
+	async ActorClass ATimerService {
 		Interface {
 			SPP timer: PTimer
 		}
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/Types.room b/runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/types.room
similarity index 96%
rename from runtime/org.eclipse.etrice.modellib.cpp/model/Types.room
rename to runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/types.room
index 8e40980..07989af 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/Types.room
+++ b/runtime/org.eclipse.etrice.modellib.cpp/model/etrice/api/types.room
@@ -1,4 +1,4 @@
-RoomModel room.basic.types {
+RoomModel etrice.api.types {
 
 	PrimitiveType boolean: ptBoolean -> 'bool' default 'false'
 	PrimitiveType char: ptCharacter -> 'char' default '0'
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/src-gen-info/readme.txt b/runtime/org.eclipse.etrice.modellib.cpp/src-gen-info/readme.txt
deleted file mode 100644
index 1dc2b35..0000000
--- a/runtime/org.eclipse.etrice.modellib.cpp/src-gen-info/readme.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This directory is an eTrice code generation target.
-It will be erased every time the generator is executed.
-
-DO NOT PLACE OTHER FILES HERE!
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/ATimingService.cpp b/runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/ATimerService.cpp
similarity index 72%
rename from runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/ATimingService.cpp
rename to runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/ATimerService.cpp
index 08a07e5..93c5afe 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/ATimingService.cpp
+++ b/runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/ATimerService.cpp
@@ -1,11 +1,11 @@
 /**
  * @author generated by eTrice
  *
- * Source File of ActorClass ATimingService
+ * Source File of ActorClass ATimerService
  *
  */
 
-#include "ATimingService.h"
+#include "ATimerService.h"
 
 #include "common/messaging/RTObject.h"
 #include "common/messaging/RTServices.h"
@@ -19,7 +19,7 @@
 // uc3
 /*--------------------- end user code ---------------------*/
 
-ATimingService::ATimingService(etRuntime::IRTObject* parent, const String& name)
+ATimerService::ATimerService(etRuntime::IRTObject* parent, const String& name)
 		: ActorClassBase(parent, name)
 		, timer(this, "timer", IFITEM_timer)
 		, tcbs()
@@ -31,7 +31,7 @@
 	for (int i = 0; i < s_numberOfStates; i++) {
 		history[i] = NO_STATE;
 	}
-	setClassName("ATimingService");
+	setClassName("ATimerService");
 
 	// sub actors
 
@@ -39,7 +39,7 @@
 	memset(tcbs.getData(), sizeof(tcbs), 0);
 }
 
-void ATimingService::initialize() {
+void ATimerService::initialize() {
 	MSCFunctionObject mscFunctionObject(getInstancePathName(), "initialize()");
 	
 	ActorClassBase::initialize();
@@ -51,13 +51,13 @@
 	RTServices::getInstance().getMsgSvcCtrl().getMsgSvc(getThread())->addPollingMessageReceiver(*this);
 }
 
-void ATimingService::setProbesActive(bool recursive, bool active) {
+void ATimerService::setProbesActive(bool recursive, bool active) {
 	DebuggingService::getInstance().addPortInstance(m_RTSystemPort);
 	for(int i = 0; i < timer.getNInterfaceItems(); i++)
 			DebuggingService::getInstance().addPortInstance(*(timer.getInterfaceItem(i)));
 }
 
-void ATimingService::destroy(){
+void ATimerService::destroy(){
 	MSCFunctionObject mscFunctionObject(getInstancePathName(), "destroy()");
 	
 	/* user defined destructor body */
@@ -67,7 +67,7 @@
 }
 
 /*--------------------- operations ---------------------*/
- etTimerControlBlock* ATimingService::getTcb() {
+ etTimerControlBlock* ATimerService::getTcb() {
 	etTimerControlBlock* temp = freeTcbsRoot;
 	
 	if (freeTcbsRoot != 0) {
@@ -76,11 +76,11 @@
 	}
 	return temp;
 }
- void ATimingService::returnTcb(etTimerControlBlock* block) {
+ void ATimerService::returnTcb(etTimerControlBlock* block) {
 	block->next = freeTcbsRoot;
 	freeTcbsRoot = block;
 }
- void ATimingService::removeTcbFromUsedList(int32 idx) {
+ void ATimerService::removeTcbFromUsedList(int32 idx) {
 	etTimerControlBlock* temp = usedTcbsRoot;
 	etTimerControlBlock* temp2 = usedTcbsRoot;
 	
@@ -107,7 +107,7 @@
 		}
 	}
 }
- void ATimingService::putTcbToUsedList(etTimerControlBlock* block) {
+ void ATimerService::putTcbToUsedList(etTimerControlBlock* block) {
 	etTimerControlBlock* temp = usedTcbsRoot;
 	etTimerControlBlock* temp2 = usedTcbsRoot;
 	
@@ -142,7 +142,7 @@
 		}
 	}
 }
- bool ATimingService::isTimeGreater(etTime* t1, etTime* t2) {
+ bool ATimerService::isTimeGreater(etTime* t1, etTime* t2) {
 	if (t1->sec > t2->sec)
 		return ET_TRUE;
 	if (t1->sec < t2->sec)
@@ -151,7 +151,7 @@
 		return ET_TRUE;
 	return ET_FALSE;
 }
- void ATimingService::addTime(etTime* t1, etTime* t2) {
+ void ATimerService::addTime(etTime* t1, etTime* t2) {
 	t1->sec += t2->sec;
 	t1->nSec += t2->nSec;
 	while (t1->nSec >= 1000000000L) {
@@ -161,23 +161,23 @@
 }
 
 // state names
-const String ATimingService::s_stateStrings[] = {
+const String ATimerService::s_stateStrings[] = {
 	"<no state>",
 	"<top>",
 	"Operational"
 };
-const int ATimingService::s_numberOfStates = 3;
+const int ATimerService::s_numberOfStates = 3;
 
-void ATimingService::setState(int new_state) {
+void ATimerService::setState(int new_state) {
 	DebuggingService::getInstance().addActorState(*this, s_stateStrings[new_state].c_str());
 	m_state = new_state;
 }
 
 /* Entry and Exit Codes */
-void ATimingService::entry_Operational() {
+void ATimerService::entry_Operational() {
 	// prepare
 }
- void ATimingService::do_Operational() {
+ void ATimerService::do_Operational() {
 	// maintain timers
 	etTimerControlBlock* temp;
 	etTime t;
@@ -203,7 +203,7 @@
 }
 
 /* Action Codes */
-void ATimingService::action_TRANS_INITIAL_TO__Operational() {
+void ATimerService::action_TRANS_INITIAL_TO__Operational() {
     int i;
     usedTcbsRoot = 0;
     freeTcbsRoot = &tcbs[0];
@@ -212,7 +212,7 @@
     	tcbs[i].next = &tcbs[i + 1];
     }
 }
-void ATimingService::action_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1(const InterfaceItemBase* ifitem, uint32 transitionData) {
+void ATimerService::action_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1(const InterfaceItemBase* ifitem, uint32 transitionData) {
     etTimerControlBlock* transitionDatar = getTcb();
     etTime t;
     if (transitionDatar != 0) {
@@ -226,7 +226,7 @@
     	putTcbToUsedList(transitionDatar);
     }
 }
-void ATimingService::action_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3(const InterfaceItemBase* ifitem, uint32 transitionData) {
+void ATimerService::action_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3(const InterfaceItemBase* ifitem, uint32 transitionData) {
     etTimerControlBlock* transitionDatar = getTcb();
     etTime t;
     if (transitionDatar != 0) {
@@ -239,7 +239,7 @@
     	putTcbToUsedList(transitionDatar);
     }
 }
-void ATimingService::action_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4(const InterfaceItemBase* ifitem) {
+void ATimerService::action_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4(const InterfaceItemBase* ifitem) {
     removeTcbFromUsedList(ifitem->getIdx());
 }
 
@@ -250,7 +250,7 @@
  * @param current__et - the current state
  * @param to - the final parent state
  */
-void ATimingService::exitTo(etInt16 current__et, etInt16 to) {
+void ATimerService::exitTo(etInt16 current__et, etInt16 to) {
 	while (current__et!=to) {
 		switch (current__et) {
 			case STATE_Operational:
@@ -271,26 +271,26 @@
  * @param generic_data__et - the generic data pointer
  * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
  */
-etInt16 ATimingService::executeTransitionChain(int chain__et, const InterfaceItemBase* ifitem, void* generic_data__et) {
+etInt16 ATimerService::executeTransitionChain(int chain__et, const InterfaceItemBase* ifitem, void* generic_data__et) {
 	switch (chain__et) {
-		case ATimingService::CHAIN_TRANS_INITIAL_TO__Operational:
+		case ATimerService::CHAIN_TRANS_INITIAL_TO__Operational:
 		{
 			action_TRANS_INITIAL_TO__Operational();
 			return STATE_Operational;
 		}
-		case ATimingService::CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1:
+		case ATimerService::CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1:
 		{
 			uint32 transitionData = *(static_cast<uint32*>(generic_data__et));
 			action_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1(ifitem, transitionData);
 			return STATE_Operational;
 		}
-		case ATimingService::CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3:
+		case ATimerService::CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3:
 		{
 			uint32 transitionData = *(static_cast<uint32*>(generic_data__et));
 			action_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3(ifitem, transitionData);
 			return STATE_Operational;
 		}
-		case ATimingService::CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4:
+		case ATimerService::CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4:
 		{
 			action_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4(ifitem);
 			return STATE_Operational;
@@ -307,7 +307,7 @@
  * @param state__et - the state which is entered
  * @return - the ID of the final leaf state
  */
-etInt16 ATimingService::enterHistory(etInt16 state__et) {
+etInt16 ATimerService::enterHistory(etInt16 state__et) {
 	etBool skip_entry__et = false;
 	if (state__et >= STATE_MAX) {
 		state__et =  (state__et - STATE_MAX);
@@ -331,15 +331,15 @@
 	/* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
 }
 
-void ATimingService::executeInitTransition() {
-	int chain__et = ATimingService::CHAIN_TRANS_INITIAL_TO__Operational;
-	etInt16 next__et = ATimingService::executeTransitionChain(chain__et, 0, 0);
-	next__et = ATimingService::enterHistory(next__et);
+void ATimerService::executeInitTransition() {
+	int chain__et = ATimerService::CHAIN_TRANS_INITIAL_TO__Operational;
+	etInt16 next__et = ATimerService::executeTransitionChain(chain__et, 0, 0);
+	next__et = ATimerService::enterHistory(next__et);
 	setState(next__et);
 }
 
 /* receiveEvent contains the main implementation of the FSM */
-void ATimingService::receiveEventInternal(InterfaceItemBase* ifitem, int localId, int evt, void* generic_data__et) {
+void ATimerService::receiveEventInternal(InterfaceItemBase* ifitem, int localId, int evt, void* generic_data__et) {
 	int trigger__et = (ifitem==0)? POLLING : localId + EVT_SHIFT*evt;
 	int chain__et = NOT_CAUGHT;
 	etInt16 catching_state__et = NO_STATE;
@@ -353,19 +353,19 @@
 						break;
 					case TRIG_timer__kill:
 						{
-							chain__et = ATimingService::CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4;
+							chain__et = ATimerService::CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4;
 							catching_state__et = STATE_TOP;
 						}
 					break;
 					case TRIG_timer__startTimeout:
 						{
-							chain__et = ATimingService::CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1;
+							chain__et = ATimerService::CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_startTimeouttimer_tr1;
 							catching_state__et = STATE_TOP;
 						}
 					break;
 					case TRIG_timer__startTimer:
 						{
-							chain__et = ATimingService::CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3;
+							chain__et = ATimerService::CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_startTimertimer_tr3;
 							catching_state__et = STATE_TOP;
 						}
 					break;
@@ -380,19 +380,19 @@
 		}
 	}
 	if (chain__et != NOT_CAUGHT) {
-		ATimingService::exitTo(getState(), catching_state__et);
+		ATimerService::exitTo(getState(), catching_state__et);
 		{
-			etInt16 next__et = ATimingService::executeTransitionChain(chain__et, ifitem, generic_data__et);
-			next__et = ATimingService::enterHistory(next__et);
+			etInt16 next__et = ATimerService::executeTransitionChain(chain__et, ifitem, generic_data__et);
+			next__et = ATimerService::enterHistory(next__et);
 			setState(next__et);
 		}
 	}
 }
-void ATimingService::receiveEvent(InterfaceItemBase* ifitem, int evt, void* generic_data__et) {
+void ATimerService::receiveEvent(InterfaceItemBase* ifitem, int evt, void* generic_data__et) {
 	int localId = (ifitem==0)? 0 : ifitem->getLocalId();
-	ATimingService::receiveEventInternal(ifitem, localId, evt, generic_data__et);
+	ATimerService::receiveEventInternal(ifitem, localId, evt, generic_data__et);
 }
-void ATimingService::receive(const Message* msg) {
+void ATimerService::receive(const Message* msg) {
 	receiveEvent(0, -1, 0);
 }
 
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/ATimingService.h b/runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/ATimerService.h
similarity index 89%
rename from runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/ATimingService.h
rename to runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/ATimerService.h
index 5e80a4e..a1c788e 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/ATimingService.h
+++ b/runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/ATimerService.h
@@ -1,12 +1,12 @@
 /**
  * @author generated by eTrice
  *
- * Header File of ActorClass ATimingService
+ * Header File of ActorClass ATimerService
  *
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_H_
-#define _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_H_
+#ifndef _ETRICE_API_TIMER_ATIMERSERVICE_H_
+#define _ETRICE_API_TIMER_ATIMERSERVICE_H_
 
 #include "common/etDatatypesCpp.hpp"
 #include "common/messaging/IRTObject.h"
@@ -18,7 +18,7 @@
 #include "common/messaging/IMessageReceiver.h"
 #include "common/debugging/DebuggingService.h"
 
-#include "room/basic/service/timing/PTimer.h"
+#include "etrice/api/timer/PTimer.h"
 
 #include "common/modelbase/ActorClassBase.h"
 
@@ -38,7 +38,7 @@
 using namespace etRuntime;
 
 
-class ATimingService : public etRuntime::ActorClassBase {
+class ATimerService : public etRuntime::ActorClassBase {
 
 
 	protected:
@@ -71,7 +71,7 @@
 
 	public:
 		//--------------------- construction
-		ATimingService(etRuntime::IRTObject* parent, const String& name);
+		ATimerService(etRuntime::IRTObject* parent, const String& name);
 		void initialize(void);
 		void setProbesActive(bool recursive, bool active);
 
@@ -162,16 +162,16 @@
 
 };
 
-class ReplicatedATimingService : public ReplicatedActorClassBase {
+class ReplicatedATimerService : public ReplicatedActorClassBase {
 public:
-	ReplicatedATimingService(IRTObject* parent, const String& name) :
+	ReplicatedATimerService(IRTObject* parent, const String& name) :
 		ReplicatedActorClassBase(parent, name) {}
 	
 protected:
 	ActorClassBase* createActor(IRTObject* parent, const String& name) {
-		return new ATimingService(parent, name);
+		return new ATimerService(parent, name);
 	}
 };
 
 
-#endif /* _ROOM_BASIC_SERVICE_TIMING_ATIMINGSERVICE_H_ */
+#endif /* _ETRICE_API_TIMER_ATIMERSERVICE_H_ */
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/PTimer.cpp b/runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/PTimer.cpp
similarity index 100%
rename from runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/PTimer.cpp
rename to runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/PTimer.cpp
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/PTimer.h b/runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/PTimer.h
similarity index 96%
rename from runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/PTimer.h
rename to runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/PTimer.h
index b6c07b9..1e266e7 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/src-gen/room/basic/service/timing/PTimer.h
+++ b/runtime/org.eclipse.etrice.modellib.cpp/src-gen/etrice/api/timer/PTimer.h
@@ -5,8 +5,8 @@
  *
  */
 
-#ifndef _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_
-#define _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_
+#ifndef _ETRICE_API_TIMER_PTIMER_H_
+#define _ETRICE_API_TIMER_PTIMER_H_
 
 #include "common/modelbase/InterfaceItemBase.h"
 #include "common/modelbase/PortBase.h"
@@ -143,4 +143,4 @@
 };
 
 
-#endif /* _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_ */
+#endif /* _ETRICE_API_TIMER_PTIMER_H_ */
diff --git a/runtime/org.eclipse.etrice.modellib.java/build.gradle b/runtime/org.eclipse.etrice.modellib.java/build.gradle
index 4dc88e7..029d0e8 100644
--- a/runtime/org.eclipse.etrice.modellib.java/build.gradle
+++ b/runtime/org.eclipse.etrice.modellib.java/build.gradle
@@ -8,9 +8,9 @@
 }
 
 def models = [
-	'model/ALogService.room',
-	'model/TcpService.room',
-	'model/TimingService.room',
+	'model/etrice/api/logger.room',
+	'model/etrice/api/tcp.room',
+	'model/etrice/api/timer.room',
 	'model/etrice/api/contracts/monitors.room'
 ]
 
diff --git a/runtime/org.eclipse.etrice.modellib.java/gen_modellib.launch b/runtime/org.eclipse.etrice.modellib.java/gen_modellib.launch
index cf281c2..85db434 100644
--- a/runtime/org.eclipse.etrice.modellib.java/gen_modellib.launch
+++ b/runtime/org.eclipse.etrice.modellib.java/gen_modellib.launch
@@ -1,19 +1,30 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.etrice.generator.launch.java.launchConfigurationType">
+<booleanAttribute key="DataLogging" value="false"/>
+<booleanAttribute key="DataObj" value="false"/>
 <booleanAttribute key="Debug" value="false"/>
 <booleanAttribute key="GenDocumentation" value="false"/>
 <booleanAttribute key="GenInstanceDiagram" value="false"/>
 <stringAttribute key="GenModelPath" value=""/>
+<booleanAttribute key="GenerateDepsWithinProject" value="true"/>
 <booleanAttribute key="Lib" value="true"/>
 <booleanAttribute key="MSC" value="true"/>
+<stringAttribute key="MainMethodName" value="main"/>
 <listAttribute key="ModelFiles">
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/TimingService.room}"/>
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/ALogService.room}"/>
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/TcpService.room}"/>
-<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/Tests.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/etrice/api/annotations.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/etrice/api/language.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/etrice/api/logger.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/etrice/api/tcp.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/etrice/api/timer.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/etrice/api/types.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/etrice/api/contracts/definitions.room}"/>
+<listEntry value="${workspace_loc:/org.eclipse.etrice.modellib.java/model/etrice/api/contracts/monitors.room}"/>
 </listAttribute>
+<booleanAttribute key="OldStyleTransitionData" value="false"/>
+<booleanAttribute key="OverrideDirectories" value="false"/>
 <booleanAttribute key="Persist" value="false"/>
 <booleanAttribute key="SaveGenModel" value="false"/>
+<booleanAttribute key="UseTranslation" value="true"/>
 <booleanAttribute key="Verbose" value="false"/>
 <stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
 </launchConfiguration>
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/Annotations.room b/runtime/org.eclipse.etrice.modellib.java/model/Annotations.room
deleted file mode 100644
index 73bc1a3..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/Annotations.room
+++ /dev/null
@@ -1,13 +0,0 @@
-RoomModel room.basic.annotations {
-	
-	AnnotationType BehaviorManual {
-		target = ActorBehavior
-	}
-	
-	AnnotationType ActorBaseClass {
-		target = ActorClass
-		mandatory attribute class: ptCharacter
-		mandatory attribute package: ptCharacter
-	}
-	
-}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/GenericPhysical.etphys b/runtime/org.eclipse.etrice.modellib.java/model/GenericPhysical.etphys
index 9e9a2cc..4fae143 100644
--- a/runtime/org.eclipse.etrice.modellib.java/model/GenericPhysical.etphys
+++ b/runtime/org.eclipse.etrice.modellib.java/model/GenericPhysical.etphys
@@ -1,4 +1,4 @@
-PhysicalModel room.generic.physical {
+PhysicalModel GenericPhysical {
 	
 	PhysicalSystem GenericPhysicalSystem {
 		NodeRef node : GenericNodeClass
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/Tests.room b/runtime/org.eclipse.etrice.modellib.java/model/Tests.room
deleted file mode 100644
index 097b72e..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/Tests.room
+++ /dev/null
@@ -1,17 +0,0 @@
-RoomModel room.basic.test {
-	
-	import room.basic.service.timing.* from "TimingService.room"
-	import room.basic.types.* from "Types.room"	
-
-	/**
-	 * A SubSystemClass or ActorClass having this annotation is construed as an instance.<br>
-	 * During generation the necessary instantiation (LogicalSystem, SubSystemRef etc.) and mapping will be created. 
-	 * <p>
-	 * Must not have LogicalThreads. Globally only once allowed. Runtime execution on DefaultThread of given PhysicalSystem.
-	 * </p>
-	 */
-	AnnotationType TestInstance {
-		target = { SubSystemClass, ActorClass }
-	}
-
-}
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.logging.ALogService.behavior b/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.logging.ALogService.behavior
deleted file mode 100644
index a63b377..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.logging.ALogService.behavior
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ALogService" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link" verticalGridUnit="10" version="0.10.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../ALogService.room#ActorClass:ALogService"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="sg"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../ALogService.room#StateGraph:ALogService$sg"/>
-    </link>
-    <children visible="true">
-      <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../ALogService.room#StateGraph:ALogService$sg"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="206" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../ALogService.room#SimpleState:ALogService$closed"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0 //@connections.2" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="closed"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="472" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../ALogService.room#SimpleState:ALogService$opened"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2 //@connections.3" incomingConnections="//@connections.1 //@connections.3" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="opened"/>
-      </children>
-    </children>
-  </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../ALogService.room#InitialTransition:ALogService$initial"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.3/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../ALogService.room#TriggeredTransition:ALogService$open"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="open: &lt;open:log>"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../ALogService.room#TriggeredTransition:ALogService$tr0"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;close:log>"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.3/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../ALogService.room#TriggeredTransition:ALogService$tr1"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;internalLog:lo..."/>
-    </connectionDecorators>
-    <bendpoints x="572" y="325"/>
-  </connections>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <colors red="200" green="200" blue="200"/>
-  <fonts name="Arial" size="8"/>
-  <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.logging.ALogService.structure b/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.logging.ALogService.structure
deleted file mode 100644
index 106589b..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.logging.ALogService.structure
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of ALogService" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../ALogService.room#ActorClass:ALogService"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="cls"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../ALogService.room#ActorClass:ALogService"/>
-    </link>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="400">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../ALogService.room#SPP:ALogService$log"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" value="log"/>
-      </children>
-    </children>
-  </children>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <fonts name="Arial" size="8"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpClient.behavior b/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpClient.behavior
deleted file mode 100644
index 2067578..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpClient.behavior
+++ /dev/null
@@ -1,249 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATcpClient" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@children.0/@children.4/@link //@children.0/@children.5/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link //@connections.4/@link //@connections.5/@link" verticalGridUnit="10" version="0.10.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TcpService.room#ActorClass:ATcpClient"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="sg"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TcpService.room#StateGraph:ATcpClient$sg"/>
-    </link>
-    <children visible="true">
-      <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#StateGraph:ATcpClient$sg"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="140" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpClient$closed"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0 //@connections.2" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="closed"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="340" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpClient$opened"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2 //@connections.5" incomingConnections="//@connections.3 //@connections.5" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="opened"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="540" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpClient$error"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.4" referencedGraphicsAlgorithm="//@children.0/@children.4/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="error"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="375" y="265">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#ChoicePoint:ATcpClient$cp0"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.3 //@connections.4" incomingConnections="//@connections.1"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
-      </children>
-    </children>
-  </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#InitialTransition:ATcpClient$initial"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.5/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpClient$tr0"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;open:ControlPo..."/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpClient$tr1"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;close:ControlP..."/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.3/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#ContinuationTransition:ATcpClient$tr2"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr2: [else]"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.4/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#CPBranchTransition:ATcpClient$socketError"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="socketError: [lastEr..."/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.3/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpClient$tr3"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr3: &lt;send:PayloadPo..."/>
-    </connectionDecorators>
-    <bendpoints x="440" y="325"/>
-    <bendpoints x="440" y="325"/>
-  </connections>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <colors red="200" green="200" blue="200"/>
-  <fonts name="Arial" size="8"/>
-  <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpClient.structure b/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpClient.structure
deleted file mode 100644
index ebb67ff..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpClient.structure
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of ATcpClient" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.1/@link" verticalGridUnit="10" version="0.10.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TcpService.room#ActorClass:ATcpClient"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="cls"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TcpService.room#ActorClass:ATcpClient"/>
-    </link>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="266">
-        <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#Port:ATcpClient$ControlPort"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="ControlPort"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="532">
-        <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#Port:ATcpClient$PayloadPort"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="PayloadPort"/>
-      </children>
-    </children>
-  </children>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <fonts name="Arial" size="8"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpServer.behavior b/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpServer.behavior
deleted file mode 100644
index 59ad02f..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpServer.behavior
+++ /dev/null
@@ -1,249 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATcpServer" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@children.0/@children.4/@link //@children.0/@children.5/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link //@connections.4/@link //@connections.5/@link" verticalGridUnit="10" version="0.10.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TcpService.room#ActorClass:ATcpServer"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="sg"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TcpService.room#StateGraph:ATcpServer$sg"/>
-    </link>
-    <children visible="true">
-      <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#StateGraph:ATcpServer$sg"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="140" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpServer$closed"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0 //@connections.2" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="closed"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="340" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpServer$opened"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2 //@connections.5" incomingConnections="//@connections.3 //@connections.5" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="opened"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="540" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#SimpleState:ATcpServer$error"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.4" referencedGraphicsAlgorithm="//@children.0/@children.4/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="error"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="375" y="265">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#ChoicePoint:ATcpServer$cp0"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.3 //@connections.4" incomingConnections="//@connections.1"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
-      </children>
-    </children>
-  </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#InitialTransition:ATcpServer$initial"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.5/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpServer$tr0"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;open:ControlPo..."/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpServer$tr1"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;close:ControlP..."/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.3/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#ContinuationTransition:ATcpServer$tr2"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr2: [else]"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@anchors.0" end="//@children.0/@children.4/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#CPBranchTransition:ATcpServer$socketError"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="socketError: [lastEr..."/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.3/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TcpService.room#TriggeredTransition:ATcpServer$tr3"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr3: &lt;send:PayloadPo..."/>
-    </connectionDecorators>
-    <bendpoints x="440" y="325"/>
-    <bendpoints x="440" y="325"/>
-  </connections>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <colors red="200" green="200" blue="200"/>
-  <fonts name="Arial" size="8"/>
-  <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpServer.structure b/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpServer.structure
deleted file mode 100644
index c5ea429..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.tcp.ATcpServer.structure
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of ATcpServer" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.1/@link" verticalGridUnit="10" version="0.10.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TcpService.room#ActorClass:ATcpServer"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="cls"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TcpService.room#ActorClass:ATcpServer"/>
-    </link>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="266">
-        <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#Port:ATcpServer$ControlPort"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="ControlPort"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="532">
-        <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TcpService.room#Port:ATcpServer$PayloadPort"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="PayloadPort"/>
-      </children>
-    </children>
-  </children>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <fonts name="Arial" size="8"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.timing.ATimingService.behavior b/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.timing.ATimingService.behavior
deleted file mode 100644
index 3746bcd..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.timing.ATimingService.behavior
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of ATimingService" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link" verticalGridUnit="10" version="0.10.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="sg"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-      <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TimingService.room#StateGraph:ATimingService$sg"/>
-    </link>
-    <children visible="true">
-      <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="trp"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#StateGraph:ATimingService$sg"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
-      </children>
-    </children>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="state"/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="136" height="90" x="332" y="120">
-        <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="76" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
-          <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="51" y="3" cornerHeight="5" cornerWidth="5"/>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="38" y="24">
-            <points x="-3" y="-3"/>
-            <points x="-3" y="3"/>
-            <points x="-11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="38" y="24">
-            <points x="3" y="-3"/>
-            <points x="3" y="3"/>
-            <points x="11" y="3"/>
-          </graphicsAlgorithmChildren>
-          <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="38" y="24">
-            <points x="-2" y="-3"/>
-            <points x="-2" y="3"/>
-            <points x="2" y="3"/>
-            <points x="2" y="-3"/>
-          </graphicsAlgorithmChildren>
-        </graphicsAlgorithmChildren>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#SimpleState:ATimingService$Operational"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1 //@connections.2 //@connections.3" incomingConnections="//@connections.0 //@connections.1 //@connections.2 //@connections.3" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="76" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Operational"/>
-      </children>
-    </children>
-  </children>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#InitialTransition:ATimingService$initial"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
-    </connectionDecorators>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr1"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;internalStartT..."/>
-    </connectionDecorators>
-    <bendpoints x="440" y="325"/>
-    <bendpoints x="440" y="325"/>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr3"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr3: &lt;internalStartT..."/>
-    </connectionDecorators>
-    <bendpoints x="440" y="325"/>
-    <bendpoints x="440" y="325"/>
-  </connections>
-  <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
-    <properties key="obj-type" value="trans"/>
-    <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
-    <link>
-      <businessObjects href="../TimingService.room#TriggeredTransition:ATimingService$tr4"/>
-    </link>
-    <connectionDecorators visible="true" locationRelative="true" location="1.0">
-      <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
-        <points x="-15" y="5"/>
-        <points/>
-        <points x="-15" y="-5"/>
-      </graphicsAlgorithm>
-    </connectionDecorators>
-    <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
-      <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr4: &lt;kill:timer>"/>
-    </connectionDecorators>
-    <bendpoints x="440" y="325"/>
-    <bendpoints x="440" y="325"/>
-  </connections>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <colors red="200" green="200" blue="200"/>
-  <fonts name="Arial" size="8"/>
-  <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.timing.ATimingService.structure b/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.timing.ATimingService.structure
deleted file mode 100644
index a951de9..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/model/diagrams/room.basic.service.timing.ATimingService.structure
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of ATimingService" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
-  <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
-  <link>
-    <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-  </link>
-  <children xsi:type="pi:ContainerShape" visible="true" active="true">
-    <properties key="obj-type" value="cls"/>
-    <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
-      <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
-    </graphicsAlgorithm>
-    <link>
-      <businessObjects href="../TimingService.room#ActorClass:ATimingService"/>
-    </link>
-    <children xsi:type="pi:ContainerShape" visible="true" active="true">
-      <properties key="obj-type" value="port"/>
-      <properties key="item-kind" value=""/>
-      <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="400">
-        <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
-      </graphicsAlgorithm>
-      <link>
-        <businessObjects href="../TimingService.room#SPP:ATimingService$timer"/>
-      </link>
-      <anchors xsi:type="pi:ChopboxAnchor"/>
-      <children visible="true">
-        <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" value="timer"/>
-      </children>
-    </children>
-  </children>
-  <colors red="227" green="238" blue="249"/>
-  <colors red="255" green="255" blue="255"/>
-  <colors/>
-  <fonts name="Arial" size="8"/>
-</pi:Diagram>
diff --git a/runtime/org.eclipse.etrice.modellib.cpp/model/Tests.room b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/annotations.room
similarity index 63%
copy from runtime/org.eclipse.etrice.modellib.cpp/model/Tests.room
copy to runtime/org.eclipse.etrice.modellib.java/model/etrice/api/annotations.room
index 097b72e..ff8ef60 100644
--- a/runtime/org.eclipse.etrice.modellib.cpp/model/Tests.room
+++ b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/annotations.room
@@ -1,8 +1,15 @@
-RoomModel room.basic.test {
+RoomModel etrice.api.annotations {
 	
-	import room.basic.service.timing.* from "TimingService.room"
-	import room.basic.types.* from "Types.room"	
-
+	AnnotationType BehaviorManual {
+		target = ActorBehavior
+	}
+	
+	AnnotationType ActorBaseClass {
+		target = ActorClass
+		mandatory attribute class: ptCharacter
+		mandatory attribute package: ptCharacter
+	}
+	
 	/**
 	 * A SubSystemClass or ActorClass having this annotation is construed as an instance.<br>
 	 * During generation the necessary instantiation (LogicalSystem, SubSystemRef etc.) and mapping will be created. 
@@ -13,5 +20,5 @@
 	AnnotationType TestInstance {
 		target = { SubSystemClass, ActorClass }
 	}
-
+	
 }
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/contracts/monitors.room b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/contracts/monitors.room
index 5923fdd..f61d561 100644
--- a/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/contracts/monitors.room
+++ b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/contracts/monitors.room
@@ -4,7 +4,8 @@
  */
 RoomModel etrice.api.contracts.monitors {
 
-	import room.basic.types.*
+	import etrice.api.types.boolean
+	import etrice.api.types.string
 	
 	/** Protocol to get validation status and control monitor behavior. */
 	ProtocolClass PContractMonitorControl {
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/Language.room b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/language.room
similarity index 69%
rename from runtime/org.eclipse.etrice.modellib.java/model/Language.room
rename to runtime/org.eclipse.etrice.modellib.java/model/etrice/api/language.room
index e243dae..c1b0e02 100644
--- a/runtime/org.eclipse.etrice.modellib.java/model/Language.room
+++ b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/language.room
@@ -1,3 +1,3 @@
-RoomModel room.basic.language {
+RoomModel etrice.api.language {
 	PrimitiveType languageIndicator: ptInteger -> 'byte' (Byte) default '1'
 }
\ No newline at end of file
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/ALogService.room b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/logger.room
similarity index 94%
rename from runtime/org.eclipse.etrice.modellib.java/model/ALogService.room
rename to runtime/org.eclipse.etrice.modellib.java/model/etrice/api/logger.room
index e209342..1b1876c 100644
--- a/runtime/org.eclipse.etrice.modellib.java/model/ALogService.room
+++ b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/logger.room
@@ -1,7 +1,9 @@
-RoomModel room.basic.service.logging {
+RoomModel etrice.api.logger {
 
-	import room.basic.types.* from "Types.room"
-
+	import etrice.api.types.int32
+	import etrice.api.types.int64
+	import etrice.api.types.string
+	
 	ActorClass ALogService {
 		Interface {
 			SPP log: Log
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/TcpService.room b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/tcp.room
similarity index 97%
rename from runtime/org.eclipse.etrice.modellib.java/model/TcpService.room
rename to runtime/org.eclipse.etrice.modellib.java/model/etrice/api/tcp.room
index 4062126..bd3c39e 100644
--- a/runtime/org.eclipse.etrice.modellib.java/model/TcpService.room
+++ b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/tcp.room
@@ -1,6 +1,8 @@
-RoomModel room.basic.service.tcp {
+RoomModel etrice.api.tcp {
 
-	import room.basic.types.* from "Types.room"
+	import etrice.api.types.int8
+	import etrice.api.types.int32
+	import etrice.api.types.string
 
 	ActorClass ATcpServer {
 		Interface {
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/TimingService.room b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/timer.room
similarity index 97%
rename from runtime/org.eclipse.etrice.modellib.java/model/TimingService.room
rename to runtime/org.eclipse.etrice.modellib.java/model/etrice/api/timer.room
index c9eb5c5..1c54b6e 100644
--- a/runtime/org.eclipse.etrice.modellib.java/model/TimingService.room
+++ b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/timer.room
@@ -1,8 +1,8 @@
-RoomModel room.basic.service.timing {
+RoomModel etrice.api.timer {
 
-	import room.basic.types.* from "Types.room"
+	import etrice.api.types.int32
 
-	ActorClass ATimingService {
+	ActorClass ATimerService {
 		Interface {
 			SPP timer: PTimer
 		}
diff --git a/runtime/org.eclipse.etrice.modellib.java/model/Types.room b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/types.room
similarity index 94%
rename from runtime/org.eclipse.etrice.modellib.java/model/Types.room
rename to runtime/org.eclipse.etrice.modellib.java/model/etrice/api/types.room
index 9e9f3c4..69c7505 100644
--- a/runtime/org.eclipse.etrice.modellib.java/model/Types.room
+++ b/runtime/org.eclipse.etrice.modellib.java/model/etrice/api/types.room
@@ -1,4 +1,4 @@
-RoomModel room.basic.types {
+RoomModel etrice.api.types {
 
 	PrimitiveType boolean: ptBoolean -> 'boolean' (Boolean) default 'false'
 	PrimitiveType char: ptCharacter -> 'char' (Character) default ''
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen-info/readme.txt b/runtime/org.eclipse.etrice.modellib.java/src-gen-info/readme.txt
deleted file mode 100644
index 1dc2b35..0000000
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen-info/readme.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This directory is an eTrice code generation target.
-It will be erased every time the generator is executed.
-
-DO NOT PLACE OTHER FILES HERE!
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.java
new file mode 100644
index 0000000..ac6ad4f
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/contracts/monitors/AContractMonitorBase.java
@@ -0,0 +1,233 @@
+package etrice.api.contracts.monitors;
+
+import org.eclipse.etrice.runtime.java.messaging.*;
+import org.eclipse.etrice.runtime.java.modelbase.*;
+import org.eclipse.etrice.runtime.java.debugging.*;
+
+import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
+
+import etrice.api.contracts.monitors.PContractMonitorControl.*;
+
+
+
+public abstract class AContractMonitorBase extends ActorClassBase {
+
+
+	//--------------------- ports
+	protected PContractMonitorControlPort monitor_ctrl = null;
+
+	//--------------------- saps
+
+	//--------------------- services
+
+	//--------------------- optional actors
+
+	//--------------------- interface item IDs
+	public static final int IFITEM_monitor_ctrl = 1;
+
+	/*--------------------- attributes ---------------------*/
+	public  boolean _violation;
+	public  boolean forwardInvalidMessages;
+
+	/*--------------------- operations ---------------------*/
+	public  void onViolation(String comment) {
+		_violation = true;
+		DebuggingService.getInstance().addVisibleComment(comment + " location: " + this.getInstancePath()/* + " : " + ifitem.toString()*/);
+		monitor_ctrl.violationOccured();
+	}
+
+
+	//--------------------- construction
+	public AContractMonitorBase(IRTObject parent, String name) {
+		super(parent, name);
+		setClassName("AContractMonitorBase");
+
+		// initialize attributes
+		this.set_violation(false);
+		this.setForwardInvalidMessages(false);
+
+		// own ports
+		monitor_ctrl = new PContractMonitorControlPort(this, "monitor_ctrl", IFITEM_monitor_ctrl);
+
+		// own saps
+
+		// own service implementations
+
+		// sub actors
+
+		// wiring
+
+
+		/* user defined constructor body */
+
+	}
+
+	/* --------------------- attribute setters and getters */
+	public void set_violation(boolean _violation) {
+		 this._violation = _violation;
+	}
+	public boolean get_violation() {
+		return this._violation;
+	}
+	public void setForwardInvalidMessages(boolean forwardInvalidMessages) {
+		 this.forwardInvalidMessages = forwardInvalidMessages;
+	}
+	public boolean getForwardInvalidMessages() {
+		return this.forwardInvalidMessages;
+	}
+
+
+	//--------------------- port getters
+	public PContractMonitorControlPort getMonitor_ctrl (){
+		return this.monitor_ctrl;
+	}
+
+	//--------------------- lifecycle functions
+	public void stop(){
+		super.stop();
+	}
+
+	public void destroy(){
+		/* user defined destructor body */
+		DebuggingService.getInstance().addMessageActorDestroy(this);
+		super.destroy();
+	}
+
+	/* state IDs */
+	public static final int STATE_MAX = 2;
+	
+	/* transition chains */
+	public static final int CHAIN_TRANS__trStatus_FROM__trBase_TO__trBase_BY_getAndResetStatusmonitor_ctrl__trStatus = 1;
+	public static final int CHAIN_TRANS__trForward_FROM__trBase_TO__trBase_BY_setForwardInvalidMessagesmonitor_ctrl__trForward = 2;
+	
+	/* triggers */
+	public static final int POLLING = 0;
+	public static final int TRIG_monitor_ctrl__getAndResetStatus = IFITEM_monitor_ctrl + EVT_SHIFT*PContractMonitorControl.IN_getAndResetStatus;
+	public static final int TRIG_monitor_ctrl__setForwardInvalidMessages = IFITEM_monitor_ctrl + EVT_SHIFT*PContractMonitorControl.IN_setForwardInvalidMessages;
+	
+	// state names
+	protected static final String stateStrings[] = {
+		"<no state>",
+		"<top>",
+	};
+	
+	// history
+	protected int history[] = {NO_STATE, NO_STATE};
+	
+	private void setState(int new_state) {
+		DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);
+		this.state = new_state;
+	}
+	
+	/* Entry and Exit Codes */
+	
+	/* Action Codes */
+	protected void action_TRANS__trStatus_FROM__trBase_TO__trBase_BY_getAndResetStatusmonitor_ctrl__trStatus(InterfaceItemBase ifitem) {
+	    monitor_ctrl.violationStatus(_violation);
+	    _violation = false;
+	}
+	protected void action_TRANS__trForward_FROM__trBase_TO__trBase_BY_setForwardInvalidMessagesmonitor_ctrl__trForward(InterfaceItemBase ifitem, boolean transitionData) {
+	    forwardInvalidMessages = transitionData;
+	}
+	
+	/* State Switch Methods */
+	/**
+	 * calls exit codes while exiting from the current state to one of its
+	 * parent states while remembering the history
+	 * @param current__et - the current state
+	 * @param to - the final parent state
+	* @param handler__et - entry and exit codes are called only if not handler (for handler TransitionPoints)
+	 */
+	private void exitTo(int current__et, int to, boolean handler__et) {
+		while (current__et!=to) {
+			switch (current__et) {
+				default:
+					/* should not occur */
+					break;
+			}
+		}
+	}
+	
+	/**
+	 * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+	 * matching the trigger of this chain. The ID of the final state is returned
+	 * @param chain__et - the chain ID
+	 * @param generic_data__et - the generic data pointer
+	 * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
+	 */
+	private int executeTransitionChain(int chain__et, InterfaceItemBase ifitem, Object generic_data__et) {
+		switch (chain__et) {
+			case AContractMonitorBase.CHAIN_TRANS__trForward_FROM__trBase_TO__trBase_BY_setForwardInvalidMessagesmonitor_ctrl__trForward:
+			{
+				boolean transitionData = (Boolean) generic_data__et;
+				action_TRANS__trForward_FROM__trBase_TO__trBase_BY_setForwardInvalidMessagesmonitor_ctrl__trForward(ifitem, transitionData);
+				return STATE_TOP + STATE_MAX;
+			}
+			case AContractMonitorBase.CHAIN_TRANS__trStatus_FROM__trBase_TO__trBase_BY_getAndResetStatusmonitor_ctrl__trStatus:
+			{
+				action_TRANS__trStatus_FROM__trBase_TO__trBase_BY_getAndResetStatusmonitor_ctrl__trStatus(ifitem);
+				return STATE_TOP + STATE_MAX;
+			}
+				default:
+					/* should not occur */
+					break;
+		}
+		return NO_STATE;
+	}
+	
+	/**
+	 * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+	 * @param state__et - the state which is entered
+	* @param handler__et - entry code is executed if not handler
+	 * @return - the ID of the final leaf state
+	 */
+	private int enterHistory(int state__et, boolean handler__et) {
+		if (state__et >= STATE_MAX) {
+			state__et =  (state__et - STATE_MAX);
+		}
+		while (true) {
+			switch (state__et) {
+				case STATE_TOP:
+					state__et = this.history[STATE_TOP];
+					break;
+				default:
+					/* should not occur */
+					break;
+			}
+		}
+		/* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
+	}
+	
+	public void executeInitTransition() {
+		/* no initial transition allowed for abstract actor class */
+	}
+	
+	/* receiveEvent contains the main implementation of the FSM */
+	public void receiveEventInternal(InterfaceItemBase ifitem, int localId, int evt, Object generic_data__et) {
+		int trigger__et = localId + EVT_SHIFT*evt;
+		int chain__et = NOT_CAUGHT;
+		int catching_state__et = NO_STATE;
+		boolean is_handler__et = false;
+	
+		if (!handleSystemEvent(ifitem, evt, generic_data__et)) {
+			switch (getState()) {
+				default:
+					/* should not occur */
+					break;
+			}
+		}
+		if (chain__et != NOT_CAUGHT) {
+			exitTo(getState(), catching_state__et, is_handler__et);
+			{
+				int next__et = executeTransitionChain(chain__et, ifitem, generic_data__et);
+				next__et = enterHistory(next__et, is_handler__et);
+				setState(next__et);
+			}
+		}
+	}
+	public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data__et) {
+		int localId = (ifitem==null)? 0 : ifitem.getLocalId();
+		receiveEventInternal(ifitem, localId, evt, generic_data__et);
+	}
+
+};
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.java
new file mode 100644
index 0000000..d74d2b3
--- /dev/null
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/contracts/monitors/PContractMonitorControl.java
@@ -0,0 +1,199 @@
+package etrice.api.contracts.monitors;
+
+import org.eclipse.etrice.runtime.java.messaging.Message;
+import org.eclipse.etrice.runtime.java.modelbase.EventMessage;
+import org.eclipse.etrice.runtime.java.modelbase.EventWithDataMessage;
+import org.eclipse.etrice.runtime.java.modelbase.IInterfaceItemOwner;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.modelbase.PortBase;
+import org.eclipse.etrice.runtime.java.modelbase.ReplicatedPortBase;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
+
+
+
+public class PContractMonitorControl {
+	// message IDs
+	public static final int MSG_MIN = 0;
+	public static final int OUT_violationStatus = 1;
+	public static final int OUT_violationOccured = 2;
+	public static final int IN_getAndResetStatus = 3;
+	public static final int IN_setForwardInvalidMessages = 4;
+	public static final int MSG_MAX = 5;
+
+
+	private static String messageStrings[] = {"MIN", "violationStatus","violationOccured", "getAndResetStatus","setForwardInvalidMessages","MAX"};
+
+	public String getMessageString(int msg_id) {
+		if (msg_id<MSG_MIN || msg_id>MSG_MAX+1){
+			// id out of range
+			return "Message ID out of range";
+		}
+		else{
+			return messageStrings[msg_id];
+		}
+	}
+
+	
+	// port class
+	static public class PContractMonitorControlPort extends PortBase {
+		// constructors
+		public PContractMonitorControlPort(IInterfaceItemOwner actor, String name, int localId) {
+			this(actor, name, localId, 0);
+		}
+		public PContractMonitorControlPort(IInterfaceItemOwner actor, String name, int localId, int idx) {
+			super(actor, name, localId, idx);
+			DebuggingService.getInstance().addPortInstance(this);
+		}
+	
+		public void destroy() {
+			DebuggingService.getInstance().removePortInstance(this);
+			super.destroy();
+		}
+	
+		@Override
+		public void receive(Message m) {
+			if (!(m instanceof EventMessage))
+				return;
+			EventMessage msg = (EventMessage) m;
+			if (0 < msg.getEvtId() && msg.getEvtId() < MSG_MAX) {
+				DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);
+				if (msg instanceof EventWithDataMessage)
+					getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());
+				else
+					getActor().receiveEvent(this, msg.getEvtId(), null);
+			}
+	}
+	
+	
+		// sent messages
+		public void violationStatus(boolean transitionData) {
+			DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[OUT_violationStatus]);
+			if (getPeerAddress()!=null)
+				getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), OUT_violationStatus, transitionData));
+		}
+		public void violationOccured() {
+			DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[OUT_violationOccured]);
+			if (getPeerAddress()!=null)
+				getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), OUT_violationOccured));
+		}
+	}
+	
+	// replicated port class
+	static public class PContractMonitorControlReplPort extends ReplicatedPortBase {
+	
+		public PContractMonitorControlReplPort(IInterfaceItemOwner actor, String name, int localId) {
+			super(actor, name, localId);
+		}
+	
+		public int getReplication() {
+			return getNInterfaceItems();
+		}
+	
+		public int getIndexOf(InterfaceItemBase ifitem){
+				return ifitem.getIdx();
+		}
+	
+		public PContractMonitorControlPort get(int idx) {
+			return (PContractMonitorControlPort) getInterfaceItem(idx);
+		}
+	
+		protected InterfaceItemBase createInterfaceItem(IInterfaceItemOwner rcv, String name, int lid, int idx) {
+			return new PContractMonitorControlPort(rcv, name, lid, idx);
+		}
+	
+		// outgoing messages
+		public void violationStatus(boolean transitionData){
+			for (InterfaceItemBase item : getItems()) {
+				((PContractMonitorControlPort)item).violationStatus( transitionData);
+			}
+		}
+		public void violationOccured(){
+			for (InterfaceItemBase item : getItems()) {
+				((PContractMonitorControlPort)item).violationOccured();
+			}
+		}
+	}
+	
+	
+	// port class
+	static public class PContractMonitorControlConjPort extends PortBase {
+		// constructors
+		public PContractMonitorControlConjPort(IInterfaceItemOwner actor, String name, int localId) {
+			this(actor, name, localId, 0);
+		}
+		public PContractMonitorControlConjPort(IInterfaceItemOwner actor, String name, int localId, int idx) {
+			super(actor, name, localId, idx);
+			DebuggingService.getInstance().addPortInstance(this);
+		}
+	
+		public void destroy() {
+			DebuggingService.getInstance().removePortInstance(this);
+			super.destroy();
+		}
+	
+		@Override
+		public void receive(Message m) {
+			if (!(m instanceof EventMessage))
+				return;
+			EventMessage msg = (EventMessage) m;
+			if (0 < msg.getEvtId() && msg.getEvtId() < MSG_MAX) {
+				DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);
+				if (msg instanceof EventWithDataMessage)
+					getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());
+				else
+					getActor().receiveEvent(this, msg.getEvtId(), null);
+			}
+	}
+	
+	
+		// sent messages
+		public void getAndResetStatus() {
+			DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[IN_getAndResetStatus]);
+			if (getPeerAddress()!=null)
+				getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), IN_getAndResetStatus));
+		}
+		public void setForwardInvalidMessages(boolean transitionData) {
+			DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[IN_setForwardInvalidMessages]);
+			if (getPeerAddress()!=null)
+				getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), IN_setForwardInvalidMessages, transitionData));
+		}
+	}
+	
+	// replicated port class
+	static public class PContractMonitorControlConjReplPort extends ReplicatedPortBase {
+	
+		public PContractMonitorControlConjReplPort(IInterfaceItemOwner actor, String name, int localId) {
+			super(actor, name, localId);
+		}
+	
+		public int getReplication() {
+			return getNInterfaceItems();
+		}
+	
+		public int getIndexOf(InterfaceItemBase ifitem){
+				return ifitem.getIdx();
+		}
+	
+		public PContractMonitorControlConjPort get(int idx) {
+			return (PContractMonitorControlConjPort) getInterfaceItem(idx);
+		}
+	
+		protected InterfaceItemBase createInterfaceItem(IInterfaceItemOwner rcv, String name, int lid, int idx) {
+			return new PContractMonitorControlConjPort(rcv, name, lid, idx);
+		}
+	
+		// incoming messages
+		public void getAndResetStatus(){
+			for (InterfaceItemBase item : getItems()) {
+				((PContractMonitorControlConjPort)item).getAndResetStatus();
+			}
+		}
+		public void setForwardInvalidMessages(boolean transitionData){
+			for (InterfaceItemBase item : getItems()) {
+				((PContractMonitorControlConjPort)item).setForwardInvalidMessages( transitionData);
+			}
+		}
+	}
+	
+}
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/ALogService.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/ALogService.java
similarity index 98%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/ALogService.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/ALogService.java
index 0690a7f..f823eda 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/ALogService.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/ALogService.java
@@ -1,4 +1,4 @@
-package room.basic.service.logging;
+package etrice.api.logger;
 
 import org.eclipse.etrice.runtime.java.messaging.*;
 import org.eclipse.etrice.runtime.java.modelbase.*;
@@ -6,7 +6,7 @@
 
 import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
 
-import room.basic.service.logging.Log.*;
+import etrice.api.logger.Log.*;
 
 /*--------------------- begin user code ---------------------*/
 import java.io.*;
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/InternalLogData.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/InternalLogData.java
similarity index 68%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/InternalLogData.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/InternalLogData.java
index d14c2e3..837419f 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/InternalLogData.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/InternalLogData.java
@@ -1,14 +1,15 @@
-package room.basic.service.logging;
+package etrice.api.logger;
 
 import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
 import java.io.Serializable;
+import java.util.Objects;
 
 
 
 
 public class InternalLogData implements Serializable {
 
-	private static final long serialVersionUID = 463634558L;
+	private static final long serialVersionUID = -628590937L;
 
 
 	/*--------------------- attributes ---------------------*/
@@ -68,4 +69,24 @@
 		copy.timeStamp = timeStamp;
 		return copy;
 	}
+	
+	// deep equals
+	@Override
+	public boolean equals(Object other) {
+		if (this == other) {
+			return true;
+		}
+		if(other == null || this.getClass() != other.getClass()) {
+			return false;
+		}
+	
+		InternalLogData casted = (InternalLogData) other;
+		return Objects.deepEquals(this.userString, casted.userString) && Objects.deepEquals(this.sender, casted.sender) && Objects.deepEquals(this.timeStamp, casted.timeStamp);
+	}
+	
+	// deep hashCode
+	@Override
+	public int hashCode() {
+		return Objects.hash(this.userString, this.sender, this.timeStamp);
+	}
 };
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/Log.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/Log.java
similarity index 99%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/Log.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/Log.java
index ed23fe2..897e63d 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/logging/Log.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/logger/Log.java
@@ -1,4 +1,4 @@
-package room.basic.service.logging;
+package etrice.api.logger;
 
 import org.eclipse.etrice.runtime.java.messaging.Message;
 import org.eclipse.etrice.runtime.java.modelbase.EventMessage;
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/ATcpClient.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/ATcpClient.java
similarity index 98%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/ATcpClient.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/ATcpClient.java
index 9c3c2bb..115bb29 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/ATcpClient.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/ATcpClient.java
@@ -1,4 +1,4 @@
-package room.basic.service.tcp;
+package etrice.api.tcp;
 
 import org.eclipse.etrice.runtime.java.messaging.*;
 import org.eclipse.etrice.runtime.java.modelbase.*;
@@ -6,8 +6,8 @@
 
 import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
 
-import room.basic.service.tcp.PTcpControl.*;
-import room.basic.service.tcp.PTcpPayload.*;
+import etrice.api.tcp.PTcpControl.*;
+import etrice.api.tcp.PTcpPayload.*;
 
 /*--------------------- begin user code ---------------------*/
 import java.net.Socket;
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/ATcpServer.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/ATcpServer.java
similarity index 98%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/ATcpServer.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/ATcpServer.java
index 599fb59..a13aac1 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/ATcpServer.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/ATcpServer.java
@@ -1,4 +1,4 @@
-package room.basic.service.tcp;
+package etrice.api.tcp;
 
 import org.eclipse.etrice.runtime.java.messaging.*;
 import org.eclipse.etrice.runtime.java.modelbase.*;
@@ -6,8 +6,8 @@
 
 import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
 
-import room.basic.service.tcp.PTcpControl.*;
-import room.basic.service.tcp.PTcpPayload.*;
+import etrice.api.tcp.PTcpControl.*;
+import etrice.api.tcp.PTcpPayload.*;
 
 /*--------------------- begin user code ---------------------*/
 import java.net.ServerSocket;
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/DTcpControl.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/DTcpControl.java
similarity index 66%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/DTcpControl.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/DTcpControl.java
index c8fbef7..78927ce 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/DTcpControl.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/DTcpControl.java
@@ -1,14 +1,15 @@
-package room.basic.service.tcp;
+package etrice.api.tcp;
 
 import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
 import java.io.Serializable;
+import java.util.Objects;
 
 
 
 
 public class DTcpControl implements Serializable {
 
-	private static final long serialVersionUID = -156692117L;
+	private static final long serialVersionUID = 1104167705L;
 
 
 	/*--------------------- attributes ---------------------*/
@@ -58,4 +59,24 @@
 		copy.TcpPort = TcpPort;
 		return copy;
 	}
+	
+	// deep equals
+	@Override
+	public boolean equals(Object other) {
+		if (this == other) {
+			return true;
+		}
+		if(other == null || this.getClass() != other.getClass()) {
+			return false;
+		}
+	
+		DTcpControl casted = (DTcpControl) other;
+		return Objects.deepEquals(this.IPAddr, casted.IPAddr) && Objects.deepEquals(this.TcpPort, casted.TcpPort);
+	}
+	
+	// deep hashCode
+	@Override
+	public int hashCode() {
+		return Objects.hash(this.IPAddr, this.TcpPort);
+	}
 };
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/DTcpPayload.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/DTcpPayload.java
similarity index 70%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/DTcpPayload.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/DTcpPayload.java
index c08b663..7b3275b 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/DTcpPayload.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/DTcpPayload.java
@@ -1,14 +1,15 @@
-package room.basic.service.tcp;
+package etrice.api.tcp;
 
 import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
 import java.io.Serializable;
+import java.util.Objects;
 
 
 
 
 public class DTcpPayload implements Serializable {
 
-	private static final long serialVersionUID = -1894937188L;
+	private static final long serialVersionUID = -634077366L;
 
 
 	/*--------------------- attributes ---------------------*/
@@ -75,4 +76,24 @@
 		}
 		return copy;
 	}
+	
+	// deep equals
+	@Override
+	public boolean equals(Object other) {
+		if (this == other) {
+			return true;
+		}
+		if(other == null || this.getClass() != other.getClass()) {
+			return false;
+		}
+	
+		DTcpPayload casted = (DTcpPayload) other;
+		return Objects.deepEquals(this.connectionId, casted.connectionId) && Objects.deepEquals(this.length, casted.length) && Objects.deepEquals(this.data, casted.data);
+	}
+	
+	// deep hashCode
+	@Override
+	public int hashCode() {
+		return Objects.hash(this.connectionId, this.length, this.data);
+	}
 };
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/PTcpControl.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/PTcpControl.java
similarity index 99%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/PTcpControl.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/PTcpControl.java
index 1e6bfec..1f86a80 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/PTcpControl.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/PTcpControl.java
@@ -1,4 +1,4 @@
-package room.basic.service.tcp;
+package etrice.api.tcp;
 
 import org.eclipse.etrice.runtime.java.messaging.Message;
 import org.eclipse.etrice.runtime.java.modelbase.EventMessage;
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/PTcpPayload.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/PTcpPayload.java
similarity index 99%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/PTcpPayload.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/PTcpPayload.java
index 972ab7e..807793c 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/tcp/PTcpPayload.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/tcp/PTcpPayload.java
@@ -1,4 +1,4 @@
-package room.basic.service.tcp;
+package etrice.api.tcp;
 
 import org.eclipse.etrice.runtime.java.messaging.Message;
 import org.eclipse.etrice.runtime.java.modelbase.EventMessage;
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/ATimingService.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/ATimerService.java
similarity index 87%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/ATimingService.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/ATimerService.java
index 879caea..961f7b7 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/ATimingService.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/ATimerService.java
@@ -1,4 +1,4 @@
-package room.basic.service.timing;
+package etrice.api.timer;
 
 import org.eclipse.etrice.runtime.java.messaging.*;
 import org.eclipse.etrice.runtime.java.modelbase.*;
@@ -6,14 +6,14 @@
 
 import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
 
-import room.basic.service.timing.PTimer.*;
+import etrice.api.timer.PTimer.*;
 
 /*--------------------- begin user code ---------------------*/
 import java.util.Timer;
 /*--------------------- end user code ---------------------*/
 
 
-public class ATimingService extends ActorClassBase {
+public class ATimerService extends ActorClassBase {
 
 	/*--------------------- begin user code ---------------------*/
 	private Timer timerService = null;
@@ -36,17 +36,19 @@
 	/*--------------------- attributes ---------------------*/
 
 	/*--------------------- operations ---------------------*/
-	public  void stop() {
-		System.out.println(toString() + "::stop()");
-		timerService.cancel();
-		timerService = null;
+	public  void stopUser() {
+			System.out.println(toString() + "::stop()");
+			if(timerService != null) {
+			timerService.cancel();
+			timerService = null;
+		}
 	}
 
 
 	//--------------------- construction
-	public ATimingService(IRTObject parent, String name) {
+	public ATimerService(IRTObject parent, String name) {
 		super(parent, name);
-		setClassName("ATimingService");
+		setClassName("ATimerService");
 
 		// initialize attributes
 
@@ -75,6 +77,9 @@
 	}
 
 	//--------------------- lifecycle functions
+	public void stop(){
+		super.stop();
+	}
 
 	public void destroy(){
 		/* user defined destructor body */
@@ -169,24 +174,24 @@
 	 */
 	private int executeTransitionChain(int chain__et, InterfaceItemBase ifitem, Object generic_data__et) {
 		switch (chain__et) {
-			case ATimingService.CHAIN_TRANS_INITIAL_TO__Operational:
+			case ATimerService.CHAIN_TRANS_INITIAL_TO__Operational:
 			{
 				action_TRANS_INITIAL_TO__Operational();
 				return STATE_Operational;
 			}
-			case ATimingService.CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_internalStartTimertimer_tr1:
+			case ATimerService.CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_internalStartTimertimer_tr1:
 			{
 				TimerData transitionData = (TimerData) generic_data__et;
 				action_TRANS_tr1_FROM_Operational_TO_Operational_BY_internalStartTimertimer_tr1(ifitem, transitionData);
 				return STATE_Operational;
 			}
-			case ATimingService.CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_internalStartTimeouttimer_tr3:
+			case ATimerService.CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_internalStartTimeouttimer_tr3:
 			{
 				TimerData transitionData = (TimerData) generic_data__et;
 				action_TRANS_tr3_FROM_Operational_TO_Operational_BY_internalStartTimeouttimer_tr3(ifitem, transitionData);
 				return STATE_Operational;
 			}
-			case ATimingService.CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4:
+			case ATimerService.CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4:
 			{
 				action_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4(ifitem);
 				return STATE_Operational;
@@ -228,7 +233,7 @@
 	}
 	
 	public void executeInitTransition() {
-		int chain__et = ATimingService.CHAIN_TRANS_INITIAL_TO__Operational;
+		int chain__et = ATimerService.CHAIN_TRANS_INITIAL_TO__Operational;
 		int next__et = executeTransitionChain(chain__et, null, null);
 		next__et = enterHistory(next__et);
 		setState(next__et);
@@ -246,19 +251,19 @@
 					switch(trigger__et) {
 						case TRIG_timer__internalStartTimeout:
 							{
-								chain__et = ATimingService.CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_internalStartTimeouttimer_tr3;
+								chain__et = ATimerService.CHAIN_TRANS_tr3_FROM_Operational_TO_Operational_BY_internalStartTimeouttimer_tr3;
 								catching_state__et = STATE_TOP;
 							}
 						break;
 						case TRIG_timer__internalStartTimer:
 							{
-								chain__et = ATimingService.CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_internalStartTimertimer_tr1;
+								chain__et = ATimerService.CHAIN_TRANS_tr1_FROM_Operational_TO_Operational_BY_internalStartTimertimer_tr1;
 								catching_state__et = STATE_TOP;
 							}
 						break;
 						case TRIG_timer__kill:
 							{
-								chain__et = ATimingService.CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4;
+								chain__et = ATimerService.CHAIN_TRANS_tr4_FROM_Operational_TO_Operational_BY_killtimer_tr4;
 								catching_state__et = STATE_TOP;
 							}
 						break;
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/PTimer.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/PTimer.java
similarity index 99%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/PTimer.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/PTimer.java
index 155158a..9f66393 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/PTimer.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/PTimer.java
@@ -1,4 +1,4 @@
-package room.basic.service.timing;
+package etrice.api.timer;
 
 import org.eclipse.etrice.runtime.java.messaging.Message;
 import org.eclipse.etrice.runtime.java.modelbase.EventMessage;
diff --git a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/TimerData.java b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/TimerData.java
similarity index 64%
rename from runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/TimerData.java
rename to runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/TimerData.java
index a6a4dc2..576f6c4 100644
--- a/runtime/org.eclipse.etrice.modellib.java/src-gen/room/basic/service/timing/TimerData.java
+++ b/runtime/org.eclipse.etrice.modellib.java/src-gen/etrice/api/timer/TimerData.java
@@ -1,14 +1,15 @@
-package room.basic.service.timing;
+package etrice.api.timer;
 
 import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
 import java.io.Serializable;
+import java.util.Objects;
 
 
 
 
 public class TimerData implements Serializable {
 
-	private static final long serialVersionUID = 633780889L;
+	private static final long serialVersionUID = -1450140988L;
 
 
 	/*--------------------- attributes ---------------------*/
@@ -57,4 +58,24 @@
 		copy.id = id;
 		return copy;
 	}
+	
+	// deep equals
+	@Override
+	public boolean equals(Object other) {
+		if (this == other) {
+			return true;
+		}
+		if(other == null || this.getClass() != other.getClass()) {
+			return false;
+		}
+	
+		TimerData casted = (TimerData) other;
+		return Objects.deepEquals(this.time, casted.time) && Objects.deepEquals(this.id, casted.id);
+	}
+	
+	// deep hashCode
+	@Override
+	public int hashCode() {
+		return Objects.hash(this.time, this.id);
+	}
 };
diff --git a/tests/org.eclipse.etrice.generator.c.tests/models/SendingDataTest.room b/tests/org.eclipse.etrice.generator.c.tests/models/SendingDataTest.room
index b1cb1bc..46df9f6 100644
--- a/tests/org.eclipse.etrice.generator.c.tests/models/SendingDataTest.room
+++ b/tests/org.eclipse.etrice.generator.c.tests/models/SendingDataTest.room
@@ -1,13 +1,13 @@
 RoomModel SendingDataTest {
 	
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.int64
-	import room.basic.types.float32
-	import room.basic.types.float64
-	import room.basic.language.languageIndicator
-	import room.basic.test.TestInstance
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.int64
+	import etrice.api.types.float32
+	import etrice.api.types.float64
+	import etrice.api.language.languageIndicator
+	import etrice.api.annotations.TestInstance
 
 	ActorClass SendingDataTop {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.c.tests/models/StaticConfigTest.etmap b/tests/org.eclipse.etrice.generator.c.tests/models/StaticConfigTest.etmap
index 2fd5a28..b20a3be 100644
--- a/tests/org.eclipse.etrice.generator.c.tests/models/StaticConfigTest.etmap
+++ b/tests/org.eclipse.etrice.generator.c.tests/models/StaticConfigTest.etmap
@@ -1,7 +1,7 @@
 MappingModel StaticConfigTest {
 
 	import StaticConfigTest.System_StaticConfigTest
-	import room.generic.physical.GenericPhysicalSystem
+	import GenericPhysical.GenericPhysicalSystem
 
 	Mapping System_StaticConfigTest -> GenericPhysicalSystem {
 		SubSystemMapping main -> node {
diff --git a/tests/org.eclipse.etrice.generator.c.tests/models/StaticConfigTest.room b/tests/org.eclipse.etrice.generator.c.tests/models/StaticConfigTest.room
index 53151de..fe886ae 100644
--- a/tests/org.eclipse.etrice.generator.c.tests/models/StaticConfigTest.room
+++ b/tests/org.eclipse.etrice.generator.c.tests/models/StaticConfigTest.room
@@ -1,16 +1,16 @@
 RoomModel StaticConfigTest {
 	
-	import room.basic.types.boolean
-	import room.basic.types.char
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.int64
-	import room.basic.types.float32
-	import room.basic.types.float64
-	import room.basic.types.string
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.boolean
+	import etrice.api.types.char
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.int64
+	import etrice.api.types.float32
+	import etrice.api.types.float64
+	import etrice.api.types.string
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem System_StaticConfigTest {
 		SubSystemRef main: SubSystem_StaticConfigTest
@@ -19,7 +19,7 @@
 	SubSystemClass SubSystem_StaticConfigTest {
 		LayerConnection ref top satisfied_by timer.timer
 		ActorRef top: Top_ac
-		ActorRef timer: ATimingService
+		ActorRef timer: ATimerService
 	
 		LogicalThread defaultThread
 	}
diff --git a/tests/org.eclipse.etrice.generator.common.tests/model-gen/ContractMonitor_monitors.room b/tests/org.eclipse.etrice.generator.common.tests/model-gen/ContractMonitor_monitors.room
index 6fe971b..c891f36 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/model-gen/ContractMonitor_monitors.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/model-gen/ContractMonitor_monitors.room
@@ -2,7 +2,7 @@
 
 RoomModel ContractMonitor_monitors {
 
-	import room.basic.types.*
+	import etrice.api.types.*
 	import etrice.api.contracts.definitions.*
 	import ContractMonitor.*
 
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/ActorCommunicationTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/ActorCommunicationTest.room
index 0d624e1..ce65235 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/ActorCommunicationTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/ActorCommunicationTest.room
@@ -1,18 +1,18 @@
 RoomModel ActorCommunicationTest {
 
-	import room.basic.types.boolean
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.boolean
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	ActorClass ActorCommunicationTest_Top {
 		@TestInstance
 		Structure {
 			ActorRef singleThread_Appl: Appl
-			ActorRef timing: ATimingService
+			ActorRef timing: ATimerService
 			LayerConnection ref singleThread_Appl satisfied_by timing.timer
 		}
 	}
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/ChoicePointTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/ChoicePointTest.room
index 5bfaed5..9f92417 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/ChoicePointTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/ChoicePointTest.room
@@ -1,8 +1,8 @@
 RoomModel ChoicePointTest {
 
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
 
 	ActorClass CPTest_Top {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/ChoicePointTestExtended.room b/tests/org.eclipse.etrice.generator.common.tests/models/ChoicePointTestExtended.room
index 9d6e0ff..8e1e7aa 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/ChoicePointTestExtended.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/ChoicePointTestExtended.room
@@ -1,8 +1,8 @@
 RoomModel ChoicePointTestExtended {
 
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
 
 	ActorClass ChoicePointTestExtended_Top {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/CompileTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/CompileTest.room
index 2646da9..560ca46 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/CompileTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/CompileTest.room
@@ -1,7 +1,7 @@
 RoomModel CompileTest {
 
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
 	import DetailExpressionTest.DetailExpressionTest
 	import StatemachineInterfaceTest.StatemachineInterfaceTest
 	import StatemachineInterfaceInheritedTest.StatemachineInterfaceInheritedTest
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/ContinuationTransitionTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/ContinuationTransitionTest.room
index eee0e74..f96afca 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/ContinuationTransitionTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/ContinuationTransitionTest.room
@@ -1,8 +1,8 @@
 RoomModel ContinuationTransitionTest {
 
-	import room.basic.types.boolean
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
+	import etrice.api.types.boolean
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
 
 	ActorClass ContinuationTransitionTest {
 		Structure {
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/ContractMonitor.room b/tests/org.eclipse.etrice.generator.common.tests/models/ContractMonitor.room
index e3d9685..6a84ac6 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/ContractMonitor.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/ContractMonitor.room
@@ -1,6 +1,6 @@
 RoomModel ContractMonitor {
 
-	import room.basic.types.*
+	import etrice.api.types.*
 	import etrice.api.contracts.definitions.*
 
 	ProtocolClass PLoginProtocol {
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/ContractMonitorTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/ContractMonitorTest.room
index 6c518e9..0b46da9 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/ContractMonitorTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/ContractMonitorTest.room
@@ -1,11 +1,11 @@
 RoomModel ContractMonitorTest {
 
-	import room.basic.service.timing.PTimer
-	import room.basic.types.*
-	import room.basic.test.TestInstance
-	import ContractMonitor.*
-	import room.basic.service.timing.ATimingService
+	import etrice.api.timer.PTimer
+	import etrice.api.types.*
+	import etrice.api.annotations.TestInstance
+	import etrice.api.timer.ATimerService
 	import etrice.api.contracts.monitors.PContractMonitorControl
+	import ContractMonitor.*
 	import ContractMonitor_monitors.LoginProtocolMonitor
 
 	ProtocolClass PClientTest {
@@ -22,7 +22,7 @@
 		@TestInstance
 		Structure {
 			ActorRef appl: Appl
-			ActorRef timing: ATimingService
+			ActorRef timing: ATimerService
 			LayerConnection ref appl satisfied_by timing.timer
 		}
 	}
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/DataDrivenTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/DataDrivenTest.room
index 5b99bff..b5889c9 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/DataDrivenTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/DataDrivenTest.room
@@ -1,18 +1,18 @@
 RoomModel DataDrivenTest {
 
-	import room.basic.types.float32
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
-	import room.basic.test.TestInstance
+	import etrice.api.types.float32
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
+	import etrice.api.annotations.TestInstance
 
 	ActorClass DataDrivenTest_Top {
 		@TestInstance
 		Structure {
 			ActorRef appl: Appl
-			ActorRef timing: ATimingService
+			ActorRef timing: ATimerService
 			LayerConnection ref appl satisfied_by timing.timer
 		}
 	}
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/DetailExpressionTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/DetailExpressionTest.room
index 8fa7771..ed01c9b 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/DetailExpressionTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/DetailExpressionTest.room
@@ -1,9 +1,9 @@
 RoomModel DetailExpressionTest {
 
-	import room.basic.types.boolean
-	import room.basic.types.int32
-	import room.basic.types.string
-	import room.basic.test.TestInstance
+	import etrice.api.types.boolean
+	import etrice.api.types.int32
+	import etrice.api.types.string
+	import etrice.api.annotations.TestInstance
 	import DetailExpressionEnum.PEnumProtocol
 	
 	ActorClass DetailExpressionCompileTest {
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/EnumTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/EnumTest.room
index b3dd275..e82f763 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/EnumTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/EnumTest.room
@@ -1,8 +1,8 @@
 RoomModel EnumTest {
 
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
 
 	ActorClass EnumTest_Top {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/HandlerTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/HandlerTest.room
index 0aebcb9..7bf88bd 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/HandlerTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/HandlerTest.room
@@ -1,8 +1,8 @@
 RoomModel HandlerTest {
 
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
 
 	ActorClass HandlerTest_Top {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/OperationInheritanceTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/OperationInheritanceTest.room
index 9520754..43af16a 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/OperationInheritanceTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/OperationInheritanceTest.room
@@ -1,7 +1,7 @@
 RoomModel OperationInheritanceTest {
 
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
 
 	async ActorClass OperationInheritanceTest extends BaseActor {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/PingPongThreadReplPortTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/PingPongThreadReplPortTest.room
index 062ded6..669e232 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/PingPongThreadReplPortTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/PingPongThreadReplPortTest.room
@@ -1,9 +1,9 @@
 RoomModel PingPongThreadReplPortTest {
 
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 	
 
 	LogicalSystem System_PingPongReplPort {
@@ -12,7 +12,7 @@
 
 	SubSystemClass SubSystem_PingPongReplPort {
 		ActorRef application: PingPongTop
-		ActorRef services: ATimingService
+		ActorRef services: ATimerService
 		LayerConnection ref application satisfied_by services.timer
 
 		LogicalThread mrPingThread
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/PingPongThreadTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/PingPongThreadTest.room
index 116664d..343b927 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/PingPongThreadTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/PingPongThreadTest.room
@@ -1,9 +1,9 @@
 RoomModel PingPongThreadTest {
 
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem System_PingPong {
 		SubSystemRef main: SubSystem_PingPong
@@ -11,7 +11,7 @@
 
 	SubSystemClass SubSystem_PingPong {
 		ActorRef application: PingPongTop
-		ActorRef services: ATimingService
+		ActorRef services: ATimerService
 		LayerConnection ref application satisfied_by services.timer
 
 		LogicalThread mrPingThread
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/StatemachineInterfaceTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/StatemachineInterfaceTest.room
index f424be6..f74e1e3 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/StatemachineInterfaceTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/StatemachineInterfaceTest.room
@@ -1,6 +1,6 @@
 RoomModel StatemachineInterfaceTest {
 
-	import room.basic.types.boolean
+	import etrice.api.types.boolean
 
 	ActorClass StatemachineInterfaceTest {
 		Structure {
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/SubSystemUserCodeTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/SubSystemUserCodeTest.room
index 71ff99d..ddf1dc2 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/SubSystemUserCodeTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/SubSystemUserCodeTest.room
@@ -1,7 +1,7 @@
 RoomModel SubSystemUserCodeTest {
 
-	import room.basic.annotations.SubSystemUserCode
-	import room.basic.test.TestInstance
+	import etrice.api.annotations.SubSystemUserCode
+	import etrice.api.annotations.TestInstance
 
 	ActorClass AGeneratedUserCode {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/VarargsTest.room b/tests/org.eclipse.etrice.generator.common.tests/models/VarargsTest.room
index 12933cb..e65593f 100644
--- a/tests/org.eclipse.etrice.generator.common.tests/models/VarargsTest.room
+++ b/tests/org.eclipse.etrice.generator.common.tests/models/VarargsTest.room
@@ -1,9 +1,9 @@
 RoomModel VarargsTest {
 
-	import room.basic.types.boolean
-	import room.basic.types.int32
-	import room.basic.types.string
-	import room.basic.test.TestInstance
+	import etrice.api.types.boolean
+	import etrice.api.types.int32
+	import etrice.api.types.string
+	import etrice.api.annotations.TestInstance
 
 	ActorClass AVarargs {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.cpp.tests/models/InitializationTest.room b/tests/org.eclipse.etrice.generator.cpp.tests/models/InitializationTest.room
index dc3b671..bf59121 100644
--- a/tests/org.eclipse.etrice.generator.cpp.tests/models/InitializationTest.room
+++ b/tests/org.eclipse.etrice.generator.cpp.tests/models/InitializationTest.room
@@ -1,9 +1,9 @@
 RoomModel InitializationTest {
 
-	import room.basic.types.boolean
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.test.TestInstance
+	import etrice.api.types.boolean
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.annotations.TestInstance
 
 	async ActorClass InitializationTest {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.cpp.tests/models/SendingDataTest.room b/tests/org.eclipse.etrice.generator.cpp.tests/models/SendingDataTest.room
index 349fa45..a753f7e 100644
--- a/tests/org.eclipse.etrice.generator.cpp.tests/models/SendingDataTest.room
+++ b/tests/org.eclipse.etrice.generator.cpp.tests/models/SendingDataTest.room
@@ -1,13 +1,13 @@
 RoomModel SendingDataTest {
 	
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.int64
-	import room.basic.types.float32
-	import room.basic.types.float64
-	import room.basic.test.TestInstance
-	import room.basic.language.languageIndicator
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.int64
+	import etrice.api.types.float32
+	import etrice.api.types.float64
+	import etrice.api.annotations.TestInstance
+	import etrice.api.language.languageIndicator
 
 	ActorClass SendingDataTop {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest1.etmap b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest1.etmap
index 70952d3..6e17724 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest1.etmap
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest1.etmap
@@ -1,7 +1,7 @@
 MappingModel DynamicActorTest1 {
 	
 	import DynamicActorTest1.JavaGenTests
-	import room.generic.physical.GenericPhysicalSystem
+	import GenericPhysical.GenericPhysicalSystem
 
 	Mapping JavaGenTests -> GenericPhysicalSystem {
 		SubSystemMapping da1Test -> node {
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest1.room b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest1.room
index fa0c36d..d9343b1 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest1.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest1.room
@@ -1,7 +1,7 @@
 RoomModel DynamicActorTest1 {
 
-	import room.basic.types.int32
-	import room.basic.types.string
+	import etrice.api.types.int32
+	import etrice.api.types.string
 	
 	LogicalSystem JavaGenTests {
 		SubSystemRef da1Test: SubSystem_DynamicActorTest1
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest2.etmap b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest2.etmap
index af042ed..ae1a627 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest2.etmap
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest2.etmap
@@ -1,6 +1,6 @@
 MappingModel DynamicActorTest1 {
 	import DynamicActorTest2.JavaGenTests
-	import room.generic.physical.GenericPhysicalSystem
+	import GenericPhysical.GenericPhysicalSystem
 
 	Mapping JavaGenTests -> GenericPhysicalSystem {
 		SubSystemMapping da2Test -> node {
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest2.room b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest2.room
index a11f065..aa6aad1 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest2.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest2.room
@@ -1,7 +1,7 @@
 RoomModel DynamicActorTest2 {
 
-	import room.basic.types.int32
-	import room.basic.types.string
+	import etrice.api.types.int32
+	import etrice.api.types.string
 	
 	LogicalSystem JavaGenTests {
 		SubSystemRef da2Test: SubSystem_DynamicActorTest2
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest3.room b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest3.room
index 1c39154..9c36bcb 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest3.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest3.room
@@ -1,8 +1,8 @@
 RoomModel DynamicActorTest3 {
 
-	import room.basic.types.int32
-	import room.basic.types.string
-	import room.basic.test.TestInstance
+	import etrice.api.types.int32
+	import etrice.api.types.string
+	import etrice.api.annotations.TestInstance
 
 	ActorClass Appl {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest4.room b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest4.room
index 9f05cef..1314a0c 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest4.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest4.room
@@ -1,8 +1,8 @@
 RoomModel DynamicActorTest4 {
 	
-	import room.basic.types.int32
-	import room.basic.types.string
-	import room.basic.test.TestInstance
+	import etrice.api.types.int32
+	import etrice.api.types.string
+	import etrice.api.annotations.TestInstance
 
 	ActorClass Appl {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest5.room b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest5.room
index 0c642c8..c2558a7 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest5.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest5.room
@@ -1,8 +1,8 @@
 RoomModel DynamicActorTest5 {
 
-	import room.basic.types.int32
-	import room.basic.types.string
-	import room.basic.test.TestInstance
+	import etrice.api.types.int32
+	import etrice.api.types.string
+	import etrice.api.annotations.TestInstance
 
 	ActorClass Appl {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest6.room b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest6.room
index 3a10ce5..fe95b06 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest6.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest6.room
@@ -1,8 +1,8 @@
 RoomModel DynamicActorTest6 {
 
-	import room.basic.types.int32
-	import room.basic.types.string
-	import room.basic.test.TestInstance
+	import etrice.api.types.int32
+	import etrice.api.types.string
+	import etrice.api.annotations.TestInstance
 
 	ActorClass Appl {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest7.etmap b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest7.etmap
index a2738a1..e53423a 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest7.etmap
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest7.etmap
@@ -1,7 +1,7 @@
 MappingModel DynamicActorTest1 {
 	
 	import DynamicActorTest7.JavaGenTests
-	import room.generic.physical.GenericPhysicalSystem
+	import GenericPhysical.GenericPhysicalSystem
 
 	Mapping JavaGenTests -> GenericPhysicalSystem {
 		SubSystemMapping da7Test -> node {
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest7.room b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest7.room
index f57cde4..731adfb 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest7.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicActorTest7.room
@@ -1,13 +1,13 @@
 RoomModel DynamicActorTest7 {
 
-	import room.basic.types.boolean
-	import room.basic.types.char
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.float32
-	import room.basic.types.float64
-	import room.basic.types.string
+	import etrice.api.types.boolean
+	import etrice.api.types.char
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.float32
+	import etrice.api.types.float64
+	import etrice.api.types.string
 
 	LogicalSystem JavaGenTests {
 		SubSystemRef da7Test: SubSystem_DynamicActorTest7
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicConfigTest.etmap b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicConfigTest.etmap
index c6423ca..95f5759 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicConfigTest.etmap
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicConfigTest.etmap
@@ -1,7 +1,7 @@
 MappingModel DynamicConfigTest {
 
 	import DynamicConfigTest.System_DynamicConfigTest
-	import room.generic.physical.GenericPhysicalSystem
+	import GenericPhysical.GenericPhysicalSystem
 
 	Mapping System_DynamicConfigTest -> GenericPhysicalSystem {
 		SubSystemMapping main -> node {
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicConfigTest.room b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicConfigTest.room
index 9fe6321..8ee8927 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/DynamicConfigTest.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/DynamicConfigTest.room
@@ -1,16 +1,16 @@
 RoomModel DynamicConfigTest {
 
-	import room.basic.types.char
-	import room.basic.types.boolean
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.int64
-	import room.basic.types.float32
-	import room.basic.types.float64
-	import room.basic.types.string
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.char
+	import etrice.api.types.boolean
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.int64
+	import etrice.api.types.float32
+	import etrice.api.types.float64
+	import etrice.api.types.string
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem System_DynamicConfigTest {
 		SubSystemRef main: SubSystem_DynamicConfigTest
@@ -18,7 +18,7 @@
 
 	SubSystemClass SubSystem_DynamicConfigTest {
 		ActorRef testee: Testee_ac
-		ActorRef timingService: ATimingService
+		ActorRef timingService: ATimerService
 		LayerConnection ref testee satisfied_by timingService.timer
 	
 		LogicalThread defaultThread
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/SendingDataTest.room b/tests/org.eclipse.etrice.generator.java.tests/models/SendingDataTest.room
index 0e8f5f7..f1726d3 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/SendingDataTest.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/SendingDataTest.room
@@ -1,13 +1,13 @@
 RoomModel SendingDataTest {
 
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.int64
-	import room.basic.types.float32
-	import room.basic.types.float64
-	import room.basic.test.TestInstance
-	import room.basic.language.languageIndicator
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.int64
+	import etrice.api.types.float32
+	import etrice.api.types.float64
+	import etrice.api.annotations.TestInstance
+	import etrice.api.language.languageIndicator
 	
 	ActorClass SendingDataTop {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/StaticConfigTest.etmap b/tests/org.eclipse.etrice.generator.java.tests/models/StaticConfigTest.etmap
index 2fd5a28..b20a3be 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/StaticConfigTest.etmap
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/StaticConfigTest.etmap
@@ -1,7 +1,7 @@
 MappingModel StaticConfigTest {
 
 	import StaticConfigTest.System_StaticConfigTest
-	import room.generic.physical.GenericPhysicalSystem
+	import GenericPhysical.GenericPhysicalSystem
 
 	Mapping System_StaticConfigTest -> GenericPhysicalSystem {
 		SubSystemMapping main -> node {
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/StaticConfigTest.room b/tests/org.eclipse.etrice.generator.java.tests/models/StaticConfigTest.room
index a23ad85..03b26ac 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/StaticConfigTest.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/StaticConfigTest.room
@@ -1,16 +1,16 @@
 RoomModel StaticConfigTest {
 
-	import room.basic.types.boolean
-	import room.basic.types.char
-	import room.basic.types.int8
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.types.int64
-	import room.basic.types.float32
-	import room.basic.types.float64
-	import room.basic.types.string
-	import room.basic.service.timing.PTimer
-	import room.basic.service.timing.ATimingService
+	import etrice.api.types.boolean
+	import etrice.api.types.char
+	import etrice.api.types.int8
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.types.int64
+	import etrice.api.types.float32
+	import etrice.api.types.float64
+	import etrice.api.types.string
+	import etrice.api.timer.PTimer
+	import etrice.api.timer.ATimerService
 
 	LogicalSystem System_StaticConfigTest {
 		SubSystemRef main: SubSystem_StaticConfigTest
@@ -19,7 +19,7 @@
 	SubSystemClass SubSystem_StaticConfigTest {
 		LayerConnection ref top satisfied_by timer.timer
 		ActorRef top: Top_ac
-		ActorRef timer: ATimingService
+		ActorRef timer: ATimerService
 
 		LogicalThread defaultThread
 	}
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/StoreRestoreTest.room b/tests/org.eclipse.etrice.generator.java.tests/models/StoreRestoreTest.room
index e2b90ee..b6db665 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/StoreRestoreTest.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/StoreRestoreTest.room
@@ -1,6 +1,6 @@
 RoomModel StoreRestoreTest {
 
-	import room.basic.test.TestInstance
+	import etrice.api.annotations.TestInstance
 
 	ActorClass StoreRestore_Top {
 		@TestInstance
diff --git a/tests/org.eclipse.etrice.generator.java.tests/models/TCPTest.room b/tests/org.eclipse.etrice.generator.java.tests/models/TCPTest.room
index fa510c5..e9529a8 100644
--- a/tests/org.eclipse.etrice.generator.java.tests/models/TCPTest.room
+++ b/tests/org.eclipse.etrice.generator.java.tests/models/TCPTest.room
@@ -1,14 +1,14 @@
 RoomModel TCPTest {
 
-	import room.basic.types.int16
-	import room.basic.types.int32
-	import room.basic.service.tcp.DTcpPayload
-	import room.basic.service.tcp.DTcpControl
-	import room.basic.service.tcp.PTcpPayload
-	import room.basic.service.tcp.PTcpControl
-	import room.basic.service.tcp.ATcpClient
-	import room.basic.service.tcp.ATcpServer
-	import room.basic.test.TestInstance
+	import etrice.api.types.int16
+	import etrice.api.types.int32
+	import etrice.api.tcp.DTcpPayload
+	import etrice.api.tcp.DTcpControl
+	import etrice.api.tcp.PTcpPayload
+	import etrice.api.tcp.PTcpControl
+	import etrice.api.tcp.ATcpClient
+	import etrice.api.tcp.ATcpServer
+	import etrice.api.annotations.TestInstance
 
 	ActorClass TCPTestTop {
 		@TestInstance