updated doc to commit 7eeb6ef
diff --git a/documentation/nightly/Dave-Integration.html b/documentation/nightly/Dave-Integration.html
index 4b6214b..dc5154e 100644
--- a/documentation/nightly/Dave-Integration.html
+++ b/documentation/nightly/Dave-Integration.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
diff --git a/documentation/nightly/ResourceRequirements.html b/documentation/nightly/ResourceRequirements.html
index 0c06c1d..50f7eaa 100644
--- a/documentation/nightly/ResourceRequirements.html
+++ b/documentation/nightly/ResourceRequirements.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
diff --git a/documentation/nightly/developers-reference.html b/documentation/nightly/developers-reference.html
index 88b3fdb..b55a936 100644
--- a/documentation/nightly/developers-reference.html
+++ b/documentation/nightly/developers-reference.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
diff --git a/documentation/nightly/etrice-features.html b/documentation/nightly/etrice-features.html
index e00d11f..b2cd07c 100644
--- a/documentation/nightly/etrice-features.html
+++ b/documentation/nightly/etrice-features.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -1426,6 +1547,55 @@
 <h3><a href="#the-mapping-model" name="the-mapping-model"></a>The Mapping Model</h3>
 <p>The last model finally combines all this information by mapping logical to physical entities.</p>
 <p>The result of the mapping is also depicted in above <a href="#room-instance-diagram">instance tree diagram</a> of the instances. All actor instances (the white boxes) are mapped to a node and a thread running on this node (shown as @*node* : <em>thread</em>).</p>
+<h2><a href="#interface-contracts" name="interface-contracts"></a>Interface Contracts</h2>
+<p>An interface contract defines the behavioral semantics of an interface. In many languages like Java or C++ this is usually described in form of text comments. Textual descriptions are informal and have a vague expressiveness for complex behavior. Also it is difficult to leverage them for tooling or analysis.<br>eTrice provides a formal description for interface protocols. This is shown by the example of <code>PLoginProtocol</code>. It is a stateful protocol that defines the login procedure of an ATM client and the ATM server back-end. </p>
+<pre><code class="room customHighlighted"><span class="keyword">ProtocolClass</span> PLoginProtocol {
+	<span class="keyword">incoming</span> {
+		<span class="keyword">Message</span> hello()
+		<span class="keyword">Message</span> login(int16)
+		<span class="keyword">Message</span> cancel()
+	}
+	<span class="keyword">outgoing</span> {
+		<span class="keyword">Message</span> hello()
+		<span class="keyword">Message</span> wrong()
+		<span class="keyword">Message</span> attemptsLimitReached()
+		<span class="keyword">Message</span> ok()
+	}
+}
+</code></pre>
+<img style="width: 100%;" src="images/050-InterfaceContractExample.png">
+<p>The implementing parties for this protocol must obey strict rules due security and compatibility reasons. For example, the client must initiate any interaction by sending the message <code>hello</code>. The server must then response in turn by <code>hello</code>. After that the client can <code>login</code> with an ID, which can be <code>wrong</code> (maximum 3 times) or <code>ok</code>. Also there are rules for <code>cancel</code> or <code>attemptsLimitReached</code> and the restart.<br>In eTrice, these semantics can be expressed using a state machine. The full contract for <code>PLoginProtocol</code> is shown in the screenshot below.</p>
+<img style="width: 100%;" src="images/050-InterfaceContractFSM.png">
+<h3><a href="#defining-contracts" name="defining-contracts"></a>Defining Contracts</h3>
+<p>The contract is defined using a regular state machine, which requires first an ActorClass. This actor must be annotated with <code>@InterfaceContractDefinition</code> including the attribute <code>protocol</code> to specify the interface protocol. Further, the actor must implement a pair of regular and conjugated ports of the protocol. These two ports represent the two implementing parties of the protocol. After that, the contract can be created as the behavior of the actor. Be reminded, that the state machine does not represent an implementation, but the valid interaction for the protocol. </p>
+<pre><code class="room customHighlighted"><span class="keyword">ActorClass</span> LoginProtocolContract {
+	@InterfaceContractDefinition(protocol = <span class="string">"PLoginProtocol"</span>)
+	<span class="keyword">Interface</span> {
+		<span class="keyword">conjugated</span> <span class="keyword">Port</span> serverPort: PLoginProtocol
+		<span class="keyword">Port</span> loginPort: PLoginProtocol
+	}
+	<span class="keyword">Structure</span> {
+		<span class="keyword">external</span> <span class="keyword">Port</span> serverPort
+		<span class="keyword">external</span> <span class="keyword">Port</span> loginPort
+	}
+	<span class="keyword">Behavior</span> {
+		<span class="keyword">StateMachine</span> {
+			<span class="comment">// the contract state machine goes here
+</span>			<span class="comment">// see diagram above
+</span>		}
+	}
+</code></pre>
+<p>In addition the protocol can be annotated with <code>@InterfaceContract</code> to reference the contract. This is for documentation purpose or future static analysis.</p>
+<pre><code class="room customHighlighted"><span class="keyword">ProtocolClass</span> PLoginProtocol {
+	@InterfaceContract(definedBy = <span class="string">"LoginProtocolContract"</span>)
+	<span class="comment">// ...
+</span>}
+</code></pre>
+<p>Both annotation can be found in the modellib under the namespace <code>etrice.api.contracts.definitions</code>.</p>
+<h3><a href="#contract-monitor-generation" name="contract-monitor-generation"></a>Contract Monitor Generation</h3>
+<p>It is possible to generate a monitor, that can check the contract at runtime. The generator transforms any contract to an ActorClass, which can be placed between the implementing parties to detect any violation of the contract.</p>
+<img style="width: 100%;" src="images/050-InterfaceContractMonitor.png">
+<p>The generator is called “eTrice Contract Monitor Generator”. The usage is similar to the eTrice source code generators. By default the generated models are placed in the folder ‘model-gen’. The name of the generated ActorClass can be adjusted in the contract annotation <code>@InterfaceContractDefinition</code> using the attribute <code>generatedMontiorName</code>.<br>The generated monitor implements <code>PContractMonitorControl</code>, which can be used to query the violations status or to toggle the propagation of invalid messages. It can be found in the modellib under the namespace <code>etrice.api.contracts.monitors</code>.</p>
 <hr>
 <p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
 </div>
diff --git a/documentation/nightly/examples.html b/documentation/nightly/examples.html
index f11c780..716ee0f 100644
--- a/documentation/nightly/examples.html
+++ b/documentation/nightly/examples.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
diff --git a/documentation/nightly/feature-reference.html b/documentation/nightly/feature-reference.html
index 79f47fb..6a766ed 100644
--- a/documentation/nightly/feature-reference.html
+++ b/documentation/nightly/feature-reference.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -1293,12 +1414,12 @@
 </tr>
 <tr>
 	<td><p><a href="#annotation">Annotation</a></p></td>
-	<td><p>An Annotation can be attached to a ROOM classes to apply the properties of its AnnotationType</p></td>
+	<td><p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p></td>
 </tr>
 <tr>
 	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
 	<td><p><a href="#inheritance">Inheritance</a></p></td>
-	<td><p>A class can specify a super class and inherits elements from the super class hierarchy</p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
 </tr>
 </tbody>
 </table>
@@ -1430,7 +1551,7 @@
 <p>Instance hierarchy of ActorRef Example (*System(System)* not shown in code snippet)</p>
 <hr>
 <h3><a href="#annotation" name="annotation"></a>Annotation</h3>
-<p>An Annotation can be attached to a ROOM classes to apply the properties of its AnnotationType</p>
+<p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p>
 <p>It refers to an AnnotationType and may have to pass key value pairs. Its notation is similar to Java:</p>
 <pre><code class="room customHighlighted">@AnnotationType1
 @AnnotationType2(key1=<span class="string">"STRING"</span>, key2=3, ...)
@@ -1504,7 +1625,7 @@
 <hr>
 <h3><a href="#annotationtype" name="annotationtype"></a>AnnotationType</h3>
 <p>AnnotationTypes can be used to tag ROOM classes for further custom processing</p>
-<p>They provide the ability to associate custom properties to ROOM classes, that adjust or toogle features, like generation or the runtime behavior.<br>eTrice has some built-in annotations, which can be found in Annotations.room within the eTrice modellib.</p>
+<p>They provide the ability to associate custom properties to ROOM classes, that adjust or toggle features, like generation or the runtime behavior.<br>eTrice comes with predefined annotations, which can be found in Annotations.room within the eTrice modellib.</p>
 <p>See section Annotations for further reading.</p>
 <table style="vertical-align: middle;" class="table">
 <thead>
@@ -1516,7 +1637,7 @@
 <tr>
 	<td rowspan="1" style="white-space: nowrap;"><p>Typecasts:</p></td>
 	<td><p><a href="#annotation">Annotation</a></p></td>
-	<td><p>An Annotation can be attached to a ROOM classes to apply the properties of its AnnotationType</p></td>
+	<td><p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p></td>
 </tr>
 <tr>
 	<td rowspan="1" style="white-space: nowrap;"><p>Is contained in:</p></td>
@@ -1683,6 +1804,47 @@
 </tbody>
 </table>
 <hr>
+<h3><a href="#cpbranchtransition" name="cpbranchtransition"></a>CPBranchTransition</h3>
+<p>a choice point branch transition is an outgoing transition from a choice point and is traversed if its conditions is evaluated to true</p>
+<p>A choice point together with its outgoing transitions can be thought of as a if, else-if, else cascade in traditional<br> programming languages. The choice point branch transition corresponds to an if clause while the final else is modeled as<br> a continuation transition. Coming from a choice point, a choice point branch transition is traversed whenever its<br> condition evaluates to true. No order of evaluations is guaranteed.</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#transition">Transition</a></p></td>
+	<td><p>A Transition is an edge in the state graph representation of the state machine</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
+<h3><a href="#choicepoint" name="choicepoint"></a>ChoicePoint</h3>
+<p>a choice point is the state machine counterpart of a conditional statement</p>
+<p>A ChoicePoint in ROOM has one incoming transition and an arbitrary number of outgoing transitions.<br>One of the outgoing transitions has no condition (a ContinuationTransition). It is the default branch that is taken<br>if none of the transition conditions evaluated to true. All other transitions going out from the ChoicePoint<br>are CPBranchTransitions which have a mandatory condition (keyword ‘cond’). The evaluation order of the conditions<br>is not deterministic.</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#stategraphnode">StateGraphNode</a></p></td>
+	<td><p>A StateGraphNode is an abstract node of the state graph</p></td>
+</tr>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
+	<td><p><a href="#continuationtransition">ContinuationTransition</a></p></td>
+	<td><p>the continuation transition is a transition with just an optional action code</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
 <h3><a href="#communicationtype" name="communicationtype"></a>CommunicationType</h3>
 <p>The CommunicationType defines the communication semantics of a ProtocolClass</p>
 <p>Since from ROOM models executable code can be generated, it is important to define the way the actors are executed and communicate with each other.<br>The combination of communication and execution is called the <em>execution model</em>. Therefore the ExecutionType of an actor and the CommunicationType of the ports has to be considered.</p>
@@ -1754,6 +1916,38 @@
 </span><span class="comment">//	}
 </span></code></pre>
 <hr>
+<h3><a href="#continuationtransition" name="continuationtransition"></a>ContinuationTransition</h3>
+<p>the continuation transition is a transition with just an optional action code</p>
+<p>A continuation transition is used as default branch of a choice point or as outgoing transition of an entry point</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#transition">Transition</a></p></td>
+	<td><p>A Transition is an edge in the state graph representation of the state machine</p></td>
+</tr>
+</tbody>
+</table>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Feature Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is used by:</p></td>
+	<td><p><a href="#choicepoint">ChoicePoint</a></p></td>
+	<td><p>a choice point is the state machine counterpart of a conditional statement</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
 <h3><a href="#dataclass" name="dataclass"></a>DataClass</h3>
 <p>A DataClass is a composition of Attributes</p>
 <p>Intended to model a type that primarily consists of data, which is usually grouped together in some manner. DataClasses roughly translate to Java classes without interaction or C <em>struct</em>s.</p>
@@ -1785,12 +1979,12 @@
 </tr>
 <tr>
 	<td><p><a href="#annotation">Annotation</a></p></td>
-	<td><p>An Annotation can be attached to a ROOM classes to apply the properties of its AnnotationType</p></td>
+	<td><p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p></td>
 </tr>
 <tr>
 	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
 	<td><p><a href="#inheritance">Inheritance</a></p></td>
-	<td><p>A class can specify a super class and inherits elements from the super class hierarchy</p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
 </tr>
 </tbody>
 </table>
@@ -1855,6 +2049,24 @@
 </tbody>
 </table>
 <hr>
+<h3><a href="#entrypoint" name="entrypoint"></a>EntryPoint</h3>
+<p>an entry point is an explicit entry point in a sub state machine to which transitions in the parent state graph can connect</p>
+<p>text</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#trpoint">TrPoint</a></p></td>
+	<td><p>a TrPoint can be an EntryPoint, an ExitPoint or a TransitionPoint</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
 <h3><a href="#enumeration" name="enumeration"></a>Enumeration</h3>
 <p>An EnumerationType declares an enumeration similar to most well-known languages</p>
 <table style="vertical-align: middle;" class="table">
@@ -1972,6 +2184,24 @@
 </span>}
 </code></pre>
 <hr>
+<h3><a href="#exitpoint" name="exitpoint"></a>ExitPoint</h3>
+<p>an exit point is an explicit exit point in a sub state machine from which transitions in the parent state graph can start</p>
+<p>text</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#trpoint">TrPoint</a></p></td>
+	<td><p>a TrPoint can be an EntryPoint, an ExitPoint or a TransitionPoint</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
 <h3><a href="#externalendport" name="externalendport"></a>ExternalEndPort</h3>
 <p>A ExternalEndPort is an interface Port, that is made accessible to the internal interface of an ActorClass</p>
 <pre><code class="room customHighlighted"><span class="keyword">ActorClass</span> ExternalEndPortExample {
@@ -2053,17 +2283,17 @@
 </code></pre>
 <hr>
 <h3><a href="#inheritance" name="inheritance"></a>Inheritance</h3>
-<p>A class can specify a super class and inherits elements from the super class hierarchy</p>
+<p>A class can specify a single super class and inherits elements from the super class hierarchy</p>
 <p>When a ROOM class specifies a super class, it generally inherits all elements and properties.<br>In several cases, it is possible, to override these inherited elements. Generally, eTrice has two semantics of overriding: refinement and replacement.<br>Refinement is used in most cases (e.g. StateMachine) and realizes an extension of the overridden elements.<br>In this case, if a sub class overrides a piece of logic from a super class, it will always be executed subsequently to the inherited.<br>Contrary to this, replacement is applied to overridden Operations, similar to programming languages C++ and Java.</p>
-<p>A formal definition of overriding is given below:</p>
+<p>A formal definition of several variants of overriding is given below:</p>
 <ul>
-  <li>early or late resolve - if element is overridden, which one should super class use by default - own or override ?</li>
-  <li>replacing or refinement - ignore inherited code or prepend inherited code automatically ?</li>
-  <li>(non-)accessible - if element is overridden, is super class’ original accessible from sub class ? e.g. super.foo()</li>
-  <li>implicit or explicit - does it use distinct model element / keyword?</li>
+  <li>early or late resolve - if element is overridden, which one should the super class use by default - own or override?</li>
+  <li>replacing or refining - ignore inherited code or prepend inherited code automatically?</li>
+  <li>(non-)accessible - if element is overridden, is super class’ original accessible from sub class? E.g. super.foo()</li>
+  <li>implicit or explicit - does it use a distinct model element or keyword?</li>
 </ul>
-<p>Examples programming languages:<br>c++ virtual function and java override &lt;==&gt; accessible explicit late replacing<br>c++ function redefine &lt;==&gt; accessible implicit early replacing<br>c++ dtor &lt;==&gt; late refinement\</p>
-<p>eTrice override of model elements:<br>Operations (C generation) &lt;==&gt; non_accessible explicit late replacing<br>Operations (Java generation) &lt;==&gt; accessible explicit late replacing<br>State and Transitions &lt;==&gt; non-accessible explicit late refinement<br>ctor/dtor &lt;==&gt; non_accessible implicit late refinement<br>StateMachine &lt;==&gt; non-accessible implicit late refinement<br>UserCode &lt;==&gt; non-accessible implicit late refinement</p>
+<p>Examples from programming languages:<br>C++ virtual function and Java override &lt;==&gt; accessible, explicit, late, replacing<br>C++ function redefine &lt;==&gt; accessible, implicit, early, replacing<br>C++ destructor &lt;==&gt; late, refining\</p>
+<p>eTrice override of model elements:<br>Operations (C generation) &lt;==&gt; non-accessible, explicit, late, replacing<br>Operations (Java generation) &lt;==&gt; accessible, explicit, late, replacing<br>State and Transitions &lt;==&gt; non-accessible, explicit, late, refining<br>ctor/dtor &lt;==&gt; non-accessible, implicit, late, refining<br>StateMachine &lt;==&gt; non-accessible, implicit, late, refining<br>UserCode &lt;==&gt; non-accessible, implicit, late, refining</p>
 <table style="vertical-align: middle;" class="table">
 <thead>
 <tr>
@@ -2072,7 +2302,7 @@
 </thead>
 <tbody>
 <tr>
-	<td rowspan="4" style="white-space: nowrap;"><p>Is used by:</p></td>
+	<td rowspan="9" style="white-space: nowrap;"><p>Is used by:</p></td>
 	<td><p><a href="#actorclass">ActorClass</a></p></td>
 	<td><p>An actor is the basic structural building block for building systems with ROOM</p></td>
 </tr>
@@ -2081,6 +2311,26 @@
 	<td><p>A StateMachine describes the state based, event driven behavior of an ActorClass</p></td>
 </tr>
 <tr>
+	<td><p><a href="#stategraphnode">StateGraphNode</a></p></td>
+	<td><p>A StateGraphNode is an abstract node of the state graph</p></td>
+</tr>
+<tr>
+	<td><p><a href="#state">State</a></p></td>
+	<td><p>A State can be a plain State or a RefinedState</p></td>
+</tr>
+<tr>
+	<td><p><a href="#simplestate">SimpleState</a></p></td>
+	<td><p>A State is a node in the state graph representation of the state machine</p></td>
+</tr>
+<tr>
+	<td><p><a href="#refinedstate">RefinedState</a></p></td>
+	<td><p>A RefinedState refines a State of one of the Actor’s base class state machines</p></td>
+</tr>
+<tr>
+	<td><p><a href="#transition">Transition</a></p></td>
+	<td><p>A Transition is an edge in the state graph representation of the state machine</p></td>
+</tr>
+<tr>
 	<td><p><a href="#protocolclass">ProtocolClass</a></p></td>
 	<td><p>A ProtocolClass defines messages and is the interface specification for a Port</p></td>
 </tr>
@@ -2128,6 +2378,24 @@
 }
 </code></pre>
 <hr>
+<h3><a href="#initialtransition" name="initialtransition"></a>InitialTransition</h3>
+<p>the initial transition is used to identify the initial state</p>
+<p>The initial transition connects the initial point to a state. There can be at most one initial transition<br> in a state machine. Under special circumstances the initial transition can be omitted.</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#transition">Transition</a></p></td>
+	<td><p>A Transition is an edge in the state graph representation of the state machine</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
 <h3><a href="#internalendport" name="internalendport"></a>InternalEndPort</h3>
 <p>A InternalEndPort is an local Port, that is declared in the internal interface of an ActorClass</p>
 <pre><code class="room customHighlighted"><span class="keyword">ActorClass</span> InternalEndPortExample {
@@ -2226,7 +2494,7 @@
 </tr>
 <tr>
 	<td><p><a href="#annotation">Annotation</a></p></td>
-	<td><p>An Annotation can be attached to a ROOM classes to apply the properties of its AnnotationType</p></td>
+	<td><p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p></td>
 </tr>
 </tbody>
 </table>
@@ -2489,11 +2757,11 @@
 <p>A ProtocolClass provides a reusable interface specification for ports. It defines a set of incoming and outgoing Messages that can be exchanged between two ports.<br>The exact semantics of a message is defined by the CommunicationType.<br>Protocol classes have only textual notation.</p>
 <pre><code class="room customHighlighted"><span class="keyword">ProtocolClass</span> SimpleProtocolClass {
 	<span class="keyword">incoming</span> {
-		<span class="keyword">Message</span> msg1(int32)
+		<span class="keyword">Message</span> msg1(int32}
 		<span class="keyword">Message</span> msg2()
 	}
 	<span class="keyword">outgoing</span> {
-		<span class="keyword">Message</span> msg3(DataClass1)
+		<span class="keyword">Message</span> msg3(DataClass1}
 		<span class="keyword">Message</span> msg4()
 	}
 }
@@ -2520,12 +2788,12 @@
 </tr>
 <tr>
 	<td><p><a href="#annotation">Annotation</a></p></td>
-	<td><p>An Annotation can be attached to a ROOM classes to apply the properties of its AnnotationType</p></td>
+	<td><p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p></td>
 </tr>
 <tr>
 	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
 	<td><p><a href="#inheritance">Inheritance</a></p></td>
-	<td><p>A class can specify a super class and inherits elements from the super class hierarchy</p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
 </tr>
 </tbody>
 </table>
@@ -2594,6 +2862,33 @@
 </span>}
 </code></pre>
 <hr>
+<h3><a href="#refinedstate" name="refinedstate"></a>RefinedState</h3>
+<p>A RefinedState refines a State of one of the Actor’s base class state machines</p>
+<p>A State can be a plain State or a RefinedState.</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#state">State</a></p></td>
+	<td><p>A State can be a plain State or a RefinedState</p></td>
+</tr>
+<tr>
+	<td rowspan="2" style="white-space: nowrap;"><p>Uses:</p></td>
+	<td><p><a href="#inheritance">Inheritance</a></p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
+</tr>
+<tr>
+	<td><p><a href="#statemachine">StateMachine</a></p></td>
+	<td><p>A StateMachine describes the state based, event driven behavior of an ActorClass</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
 <h3><a href="#relayport" name="relayport"></a>RelayPort</h3>
 <p>A RelayPort forwards its messages without exposing them to the internal interface of the ActorClass</p>
 <pre><code class="room customHighlighted"><span class="keyword">ActorClass</span> RelayPortExample{
@@ -2785,10 +3080,77 @@
 </tbody>
 </table>
 <hr>
-<h3><a href="#statemachine" name="statemachine"></a>StateMachine</h3>
-<p>A StateMachine describes the state based, event driven behavior of an ActorClass</p>
-<p>In ROOM each actor class can implement its behavior using a state machine. Events occurring at the end ports of an actor will be forwarded to and processed by the state machine. Events possibly trigger state transitions.</p>
-<p><img src="images/300-PingPongReceiverFSM.png" alt="PingPongReceiverFSM"></p>
+<h3><a href="#simplestate" name="simplestate"></a>SimpleState</h3>
+<p>A State is a node in the state graph representation of the state machine</p>
+<p>A State has optional ‘entry’ and ‘exit’ codes. The entry code is executed when the state is entered, the exit code is executed<br>when it is left. In the case of an data driven (also known as polled) state machine, there also is a ‘do’ action code.<br>The do code is executed for the active state in each polling cycle.<br>A state can have a sub state machine. Starting at the top level state machine the states with their optional sub state machines<br>form a tree which is called a ‘hierarchical state machine’.<br>A state machine always is in exactly one state which can only be a leaf state, i.e. a state which has no sub state machine.</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#state">State</a></p></td>
+	<td><p>A State can be a plain State or a RefinedState</p></td>
+</tr>
+<tr>
+	<td rowspan="2" style="white-space: nowrap;"><p>Uses:</p></td>
+	<td><p><a href="#inheritance">Inheritance</a></p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
+</tr>
+<tr>
+	<td><p><a href="#statemachine">StateMachine</a></p></td>
+	<td><p>A StateMachine describes the state based, event driven behavior of an ActorClass</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
+<h3><a href="#state" name="state"></a>State</h3>
+<p>A State can be a plain State or a RefinedState</p>
+<p>A State can be a plain State or a RefinedState.</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#stategraphnode">StateGraphNode</a></p></td>
+	<td><p>A StateGraphNode is an abstract node of the state graph</p></td>
+</tr>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
+	<td><p><a href="#inheritance">Inheritance</a></p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
+</tr>
+</tbody>
+</table>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Feature Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="2" style="white-space: nowrap;"><p>Inheriting features:</p></td>
+	<td><p><a href="#simplestate">SimpleState</a></p></td>
+	<td><p>A State is a node in the state graph representation of the state machine</p></td>
+</tr>
+<tr>
+	<td><p><a href="#refinedstate">RefinedState</a></p></td>
+	<td><p>A RefinedState refines a State of one of the Actor’s base class state machines</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
+<h3><a href="#stategraphnode" name="stategraphnode"></a>StateGraphNode</h3>
+<p>A StateGraphNode is an abstract node of the state graph</p>
+<p>A StateGraphNode can be a State, a TransitionPoint, a ChoicePoint or an InitialPoint.</p>
 <table style="vertical-align: middle;" class="table">
 <thead>
 <tr>
@@ -2799,7 +3161,71 @@
 <tr>
 	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
 	<td><p><a href="#inheritance">Inheritance</a></p></td>
-	<td><p>A class can specify a super class and inherits elements from the super class hierarchy</p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
+</tr>
+</tbody>
+</table>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Feature Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="3" style="white-space: nowrap;"><p>Inheriting features:</p></td>
+	<td><p><a href="#state">State</a></p></td>
+	<td><p>A State can be a plain State or a RefinedState</p></td>
+</tr>
+<tr>
+	<td><p><a href="#choicepoint">ChoicePoint</a></p></td>
+	<td><p>a choice point is the state machine counterpart of a conditional statement</p></td>
+</tr>
+<tr>
+	<td><p><a href="#trpoint">TrPoint</a></p></td>
+	<td><p>a TrPoint can be an EntryPoint, an ExitPoint or a TransitionPoint</p></td>
+</tr>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is contained in:</p></td>
+	<td><p><a href="#statemachine">StateMachine</a></p></td>
+	<td><p>A StateMachine describes the state based, event driven behavior of an ActorClass</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
+<h3><a href="#statemachine" name="statemachine"></a>StateMachine</h3>
+<p>A StateMachine describes the state based, event driven behavior of an ActorClass</p>
+<p>In ROOM each actor class can implement its behavior using a state machine. Events occurring at the end ports of an actor will<br>be forwarded to and processed by the state machine. Events possibly trigger state transitions.</p>
+<p>ROOM state machines are hierarchical finite state machines. That means that each state in the state graph can contain another state graph.<br>This is possible to arbitrary depth.</p>
+<p>A state graph consists of</p>
+<ul>
+  <li>states</li>
+  <li>transitions</li>
+  <li>transition points</li>
+  <li>choice points</li>
+  <li>initial point</li>
+</ul>
+<p><img src="images/300-PingPongReceiverFSM.png" alt="PingPongReceiverFSM"></p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="2" style="white-space: nowrap;"><p>Contains:</p></td>
+	<td><p><a href="#stategraphnode">StateGraphNode</a></p></td>
+	<td><p>A StateGraphNode is an abstract node of the state graph</p></td>
+</tr>
+<tr>
+	<td><p><a href="#transition">Transition</a></p></td>
+	<td><p>A Transition is an edge in the state graph representation of the state machine</p></td>
+</tr>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
+	<td><p><a href="#inheritance">Inheritance</a></p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
 </tr>
 </tbody>
 </table>
@@ -2820,6 +3246,15 @@
 	<td><p><a href="#graphicalbehavioreditor">GraphicalBehaviorEditor</a></p></td>
 	<td><p>The GraphicalBehaviorEditor allows to edit the ActorClass’ StateMachine. It is possible to create (hierarchical) states and transitions to model complex behavior in a convenient way.</p></td>
 </tr>
+<tr>
+	<td rowspan="2" style="white-space: nowrap;"><p>Is used by:</p></td>
+	<td><p><a href="#simplestate">SimpleState</a></p></td>
+	<td><p>A State is a node in the state graph representation of the state machine</p></td>
+</tr>
+<tr>
+	<td><p><a href="#refinedstate">RefinedState</a></p></td>
+	<td><p>A RefinedState refines a State of one of the Actor’s base class state machines</p></td>
+</tr>
 </tbody>
 </table>
 <hr>
@@ -2848,7 +3283,7 @@
 </tr>
 <tr>
 	<td><p><a href="#annotation">Annotation</a></p></td>
-	<td><p>An Annotation can be attached to a ROOM classes to apply the properties of its AnnotationType</p></td>
+	<td><p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p></td>
 </tr>
 </tbody>
 </table>
@@ -2910,6 +3345,131 @@
 </tbody>
 </table>
 <hr>
+<h3><a href="#trpoint" name="trpoint"></a>TrPoint</h3>
+<p>a TrPoint can be an EntryPoint, an ExitPoint or a TransitionPoint</p>
+<p>text</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#stategraphnode">StateGraphNode</a></p></td>
+	<td><p>A StateGraphNode is an abstract node of the state graph</p></td>
+</tr>
+</tbody>
+</table>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Feature Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="3" style="white-space: nowrap;"><p>Inheriting features:</p></td>
+	<td><p><a href="#transitionpoint">TransitionPoint</a></p></td>
+	<td><p>a transition point is the starting point of transitions that trigger for any state of this state machine</p></td>
+</tr>
+<tr>
+	<td><p><a href="#entrypoint">EntryPoint</a></p></td>
+	<td><p>an entry point is an explicit entry point in a sub state machine to which transitions in the parent state graph can connect</p></td>
+</tr>
+<tr>
+	<td><p><a href="#exitpoint">ExitPoint</a></p></td>
+	<td><p>an exit point is an explicit exit point in a sub state machine from which transitions in the parent state graph can start</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
+<h3><a href="#transition" name="transition"></a>Transition</h3>
+<p>A Transition is an edge in the state graph representation of the state machine</p>
+<p>A transition connects StateGraphNodes in a state graph. A transition is allowed to connect a state or a transition point with itself.<br>Transition points can only be targets of transitions originating from the same transition point.<br>The initial point is the source of exactly one transition. In the textual model it is present only in an implicit way.</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
+	<td><p><a href="#inheritance">Inheritance</a></p></td>
+	<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
+</tr>
+</tbody>
+</table>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Feature Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="4" style="white-space: nowrap;"><p>Inheriting features:</p></td>
+	<td><p><a href="#initialtransition">InitialTransition</a></p></td>
+	<td><p>the initial transition is used to identify the initial state</p></td>
+</tr>
+<tr>
+	<td><p><a href="#continuationtransition">ContinuationTransition</a></p></td>
+	<td><p>the continuation transition is a transition with just an optional action code</p></td>
+</tr>
+<tr>
+	<td><p><a href="#cpbranchtransition">CPBranchTransition</a></p></td>
+	<td><p>a choice point branch transition is an outgoing transition from a choice point and is traversed if its conditions is evaluated to true</p></td>
+</tr>
+<tr>
+	<td><p><a href="#triggeredtransition">TriggeredTransition</a></p></td>
+	<td><p>a triggered transition is used in event driven state machines to trigger state transitions</p></td>
+</tr>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is contained in:</p></td>
+	<td><p><a href="#statemachine">StateMachine</a></p></td>
+	<td><p>A StateMachine describes the state based, event driven behavior of an ActorClass</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
+<h3><a href="#transitionpoint" name="transitionpoint"></a>TransitionPoint</h3>
+<p>a transition point is the starting point of transitions that trigger for any state of this state machine</p>
+<p>text</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#trpoint">TrPoint</a></p></td>
+	<td><p>a TrPoint can be an EntryPoint, an ExitPoint or a TransitionPoint</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
+<h3><a href="#triggeredtransition" name="triggeredtransition"></a>TriggeredTransition</h3>
+<p>a triggered transition is used in event driven state machines to trigger state transitions</p>
+<p>text</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+	<th colspan="3">Features</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+	<td rowspan="1" style="white-space: nowrap;"><p>Is a:</p></td>
+	<td><p><a href="#transition">Transition</a></p></td>
+	<td><p>A Transition is an edge in the state graph representation of the state machine</p></td>
+</tr>
+</tbody>
+</table>
+<hr>
 <h2><a href="#mappingmodel" name="mappingmodel"></a>MappingModel</h2>
 <p>The MappingModel describes the mapping of elements of the LogicalModel to elements of the PhysicalModel</p>
 <p>It enables the complete decoupling of the LogicalModel and the PhysicalModel, thus providing a maximum flexibility and reuse for the models.</p>
@@ -3364,7 +3924,7 @@
 <tr>
 	<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
 	<td><p><a href="#annotation">Annotation</a></p></td>
-	<td><p>An Annotation can be attached to a ROOM classes to apply the properties of its AnnotationType</p></td>
+	<td><p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p></td>
 </tr>
 </tbody>
 </table>
diff --git a/documentation/nightly/images/014-build_run.png b/documentation/nightly/images/014-build_run.png
index 667da34..a558b78 100644
--- a/documentation/nightly/images/014-build_run.png
+++ b/documentation/nightly/images/014-build_run.png
Binary files differ
diff --git a/documentation/nightly/images/014-generate.png b/documentation/nightly/images/014-generate.png
index 16791a0..b915117 100644
--- a/documentation/nightly/images/014-generate.png
+++ b/documentation/nightly/images/014-generate.png
Binary files differ
diff --git a/documentation/nightly/images/050-InterfaceContractExample.png b/documentation/nightly/images/050-InterfaceContractExample.png
new file mode 100644
index 0000000..abeff0a
--- /dev/null
+++ b/documentation/nightly/images/050-InterfaceContractExample.png
Binary files differ
diff --git a/documentation/nightly/images/050-InterfaceContractFSM.jpg b/documentation/nightly/images/050-InterfaceContractFSM.jpg
new file mode 100644
index 0000000..63886ba
--- /dev/null
+++ b/documentation/nightly/images/050-InterfaceContractFSM.jpg
Binary files differ
diff --git a/documentation/nightly/images/050-InterfaceContractFSM.png b/documentation/nightly/images/050-InterfaceContractFSM.png
new file mode 100644
index 0000000..2f19aef
--- /dev/null
+++ b/documentation/nightly/images/050-InterfaceContractFSM.png
Binary files differ
diff --git a/documentation/nightly/images/050-InterfaceContractMonitor.png b/documentation/nightly/images/050-InterfaceContractMonitor.png
new file mode 100644
index 0000000..e304c8b
--- /dev/null
+++ b/documentation/nightly/images/050-InterfaceContractMonitor.png
Binary files differ
diff --git a/documentation/nightly/introduction.html b/documentation/nightly/introduction.html
index 6018946..0166ef5 100644
--- a/documentation/nightly/introduction.html
+++ b/documentation/nightly/introduction.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
diff --git a/documentation/nightly/release-notes.html b/documentation/nightly/release-notes.html
index 83d5723..34192b9 100644
--- a/documentation/nightly/release-notes.html
+++ b/documentation/nightly/release-notes.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
diff --git a/documentation/nightly/room-concepts.html b/documentation/nightly/room-concepts.html
index 416adfc..099dfdf 100644
--- a/documentation/nightly/room-concepts.html
+++ b/documentation/nightly/room-concepts.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -1235,11 +1356,11 @@
 <p>Protocol classes have only textual notation. The example defines a protocol class with 2 incoming and two outgoing messages. Messages can have data attached. The data can be of a primitive type (e.g. int32, float64, …) or a data class.</p>
 <pre><code class="room customHighlighted"><span class="keyword">ProtocolClass</span> ProtocolClass1 {
 	<span class="keyword">incoming</span> {
-		<span class="keyword">Message</span> m1(int32)
+		<span class="keyword">Message</span> m1(int32}
 		<span class="keyword">Message</span> m2()
 	}
 	<span class="keyword">outgoing</span> {
-		<span class="keyword">Message</span> m3(DataClass1)
+		<span class="keyword">Message</span> m3(DataClass1}
 		<span class="keyword">Message</span> m4()
 	}
 }
diff --git a/documentation/nightly/standalone-generators.html b/documentation/nightly/standalone-generators.html
index 1bec82a..a18c8ce 100644
--- a/documentation/nightly/standalone-generators.html
+++ b/documentation/nightly/standalone-generators.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
diff --git a/documentation/nightly/tutorials.html b/documentation/nightly/tutorials.html
index 5b3db9e..331db44 100644
--- a/documentation/nightly/tutorials.html
+++ b/documentation/nightly/tutorials.html
@@ -558,6 +558,29 @@
 
 
 
+<li><a href="etrice-features.html#interface-contracts" aria-expanded="false">Interface Contracts <span class="fa arrow"></span></a>
+<ul class="nav" aria-expanded="false">
+<li><a href="etrice-features.html#defining-contracts">Defining Contracts</a></li>
+
+
+
+
+
+
+<li><a href="etrice-features.html#contract-monitor-generation">Contract Monitor Generation</a></li>
+
+
+
+
+
+
+</ul>
+</li>
+
+
+
+
+
 </ul>
 </li>
 
@@ -620,6 +643,20 @@
 
 
 
+<li><a href="feature-reference.html#cpbranchtransition">CPBranchTransition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#choicepoint">ChoicePoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#communicationtype">CommunicationType</a></li>
 
 
@@ -627,6 +664,13 @@
 
 
 
+<li><a href="feature-reference.html#continuationtransition">ContinuationTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#dataclass">DataClass</a></li>
 
 
@@ -641,6 +685,13 @@
 
 
 
+<li><a href="feature-reference.html#entrypoint">EntryPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#enumeration">Enumeration</a></li>
 
 
@@ -655,6 +706,13 @@
 
 
 
+<li><a href="feature-reference.html#exitpoint">ExitPoint</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#externalendport">ExternalEndPort</a></li>
 
 
@@ -676,6 +734,13 @@
 
 
 
+<li><a href="feature-reference.html#initialtransition">InitialTransition</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#internalendport">InternalEndPort</a></li>
 
 
@@ -725,6 +790,13 @@
 
 
 
+<li><a href="feature-reference.html#refinedstate">RefinedState</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#relayport">RelayPort</a></li>
 
 
@@ -760,6 +832,27 @@
 
 
 
+<li><a href="feature-reference.html#simplestate">SimpleState</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#state">State</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#stategraphnode">StateGraphNode</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#statemachine">StateMachine</a></li>
 
 
@@ -781,6 +874,34 @@
 
 
 
+<li><a href="feature-reference.html#trpoint">TrPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transition">Transition</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#transitionpoint">TransitionPoint</a></li>
+
+
+
+
+
+
+<li><a href="feature-reference.html#triggeredtransition">TriggeredTransition</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -1154,25 +1275,64 @@
     </ul>
   </li>
 </ul>
+<h4><a href="#how-to-install-the-mingw-compiler-on-windows-10" name="how-to-install-the-mingw-compiler-on-windows-10"></a>How to install the MinGW compiler on Windows 10</h4>
+<ol>
+  <li>
+  <p>Download the setup executable “mingw-get-setup” from <a href="https://osdn.net/projects/mingw/releases/p15522">here</a></p></li>
+  <li>
+  <p>Run the executable file and follow the prompts given by the install wizard. </p></li>
+  <li>
+  <p>When you are prompted to set the installation directory, try not to install it under “Program Files” or “Desktop”. Instead, it is recommended to use the default location specified by the installer, “C:/MinGW”.</p></li>
+  <li>
+  <p>In the basic setup tab, mark all packages for installation by right clicking each package and selecting “Mark for installation”.</p></li>
+  <li>
+  <p>Once all the packages are selected, click on the menu called “Installation -&gt; Apply Changes”. </p></li>
+  <li>
+  <p>When the confirmation window appears, select “Apply”. The package download/installation process will now begin. It should take about 5-10 minutes to completely finish, so ensure that you have a reliable internet connection during this time.</p></li>
+  <li>
+    <p>Once the installation process has completely finished, you need to set the environment variable path to include the MinGW directory. Open the windows menu with “windows key”, type “Control Panel” and press Enter. </p>
+    <ul>
+      <li>
+      <p>At the top right of the control panel window there should be a search box. Select it and type “Advanced system settings” and then click on the search result “View advanced system settings”.</p></li>
+      <li>
+      <p>Click on “Environment Variables” and double click on the user variable “Path”. In the new Edit environment variable window, enter a new variable under “C:/MinGW/bin” if you used the recommended install path. Otherwise change the install path accordingly. Press OK on all open settings windows to close them.</p></li>
+    </ul>
+  </li>
+  <li>
+  <p>To verify that your installation is working, run the following commands and confirm that the outputs match as follows. It is possible that a restart may necessary to confirm the changes.</p></li>
+</ol>
+<pre><code class="console">&gt; gcc --version
+g++ (GCC) X.X.X
+......
+ 
+&gt; g++ --version
+g++ (GCC) X.X.X
+......
+ 
+&gt; gdb --version
+GNU gdb (GDB) X.X.X
+......
+</code></pre>
 <h4><a href="#create-template-project" name="create-template-project"></a>Create template project</h4>
 <p>After installation of eTrice in Eclipse, we can use the wizard to create the <em>template.c</em> project, which is a good starting point for new ROOM applications. Select the menu <em>File -&gt; New -&gt; Other</em> (Ctrl+N) and choose <em>eTrice C Template Project</em>. To complete the wizard press <em>Next</em> and on the next page <em>Finish</em>.</p>
 <p><img src="images/013-wizard.png" alt="image"></p>
-<p>This will add three projects into your workspace:</p>
+<p>This will add the three projects into your workspace:</p>
 <ul>
   <li>the library projects <em>runtime.c</em> and <em>modellib.c</em></li>
   <li>our application project <em>template.c</em>.</li>
 </ul>
 <p>Now open the <em>TemplateModel.room</em> in the model folder of <em>template.c</em>.</p>
 <p><img src="images/013-after-wizard.png" alt="image"></p>
-<p>The model contains an ActorClass <em>TopActor</em>, which is currently the only active actor. TopActor has a state machine that is intended to output a simple HelloWorld statement. To inspect its behavior graphically, we can open the behavior diagram by right click on <em>Outline View -&gt; TopActor -&gt; Edit Behavior</em>. Alternatively we can place the cursor within the textual notation and press Alt+B.</p>
+<p>In this step we are introduced to the concept of Actors, a fundamental building block in ROOM, and how they are used in eTrice. In essence, an Actor is a representation of an object as a logical machine with defined behavior. Its structure, behavior and protocols are all defined with in an element called an ActorClass. See <a href="room-concepts.html#actors">here</a> for further information.</p>
+<p>The model contains an ActorClass <em>TopActor</em>, which is currently the only active actor. TopActor has a state machine that is intended to output a simple HelloWorld statement. To inspect its behavior graphically, we can open the behavior diagram by right clicking on <em>Outline View -&gt; TopActor -&gt; Edit Behavior</em>. Alternatively we can place the cursor within the textual notation and press Alt+B.</p>
 <p><img src="images/013-open-hello-fsm.png" alt="image"></p>
 <p>The state machine has an initial transition that leads to <em>helloState</em>. The state defines an entry code, which is executed during the transition. We can view the details by hovering over the state and edit the code with a double-click or right click and <em>Edit State</em>.</p>
 <p><img src="images/013-hello-fsm.png" alt="image"></p>
 <h4><a href="#generate-and-run-application" name="generate-and-run-application"></a>Generate and run application</h4>
-<p>Now we are ready to translate the model into an executable application. The first step is to generate source files from the model. Therefore we run the eTrice model generator by right click on file</p>
-<span class="uiElement"><img src="icons/obj16/file_obj.gif"> generate_Template.launch → Run As → generate_TemplateModel.</span>
-<p>After that we can build and run the application by right click on file</p>
-<span class="uiElement"><img src="icons/obj16/file_obj.gif"> run_Template_Windows.launch → Run As → run_Template_Windows.</span>
+<p>Now we are ready to translate the model into an executable application. The first step is to generate source files from the model. Therefore we run the eTrice model generator by right clicking on file</p>
+<span class="uiElement"><img src="icons/obj16/file_obj.gif"> generate_Template.launch --&gt; Run As --&gt; generate_Template</span>
+<p>After that we can build and run the application by right clicking on file</p>
+<span class="uiElement"><img src="icons/obj16/file_obj.gif"> run_Template_Windows.launch --&gt; Run As --&gt; run_Template_Windows</span>
 <p>This will trigger the build process, carried out by Eclipse CDT and then subsequently start our application.</p>
 <table>
   <thead>
@@ -1236,18 +1396,18 @@
   <li>our application project <em>template.cpp</em>.</li>
 </ul>
 <p>Now open the <em>TemplateModel.room</em> in the model folder of <em>template.c</em>.</p>
-<p><img src="images/013-after-wizard-cpp.png" alt="image"></p>
+<p><img src="images/013-after-wizard-cpp.png" alt="image"><br>In this step we are introduced to the concept of Actors, a fundamental building block in ROOM, and how they are used in eTrice. In essence, an Actor is a representation of an object as a logical machine with defined behavior. Its structure, behavior and protocols are all defined with in an element called an ActorClass. See <a href="room-concepts.html#actors">here</a> for further information.</p>
 <p>The model contains an ActorClass <em>TopActor</em>, which is currently the only active actor.<br>TopActor has a state machine that is intended to output a simple HelloWorld statement.<br>To inspect its behavior graphically, we can open the behavior diagram by right click on<br><em>Outline View -&gt; TopActor -&gt; Edit Behavior</em>. Alternatively we can place the cursor<br>within the textual notation and press Alt+B.</p>
 <p><img src="images/013-open-hello-fsm.png" alt="image"></p>
 <p>The state machine has an initial transition that leads to <em>helloState</em>.<br>The state defines an entry code, which is executed during the transition.<br>We can view the details by hovering over the state and edit the code with a double-click or<br>right click and <em>Edit State</em>.</p>
 <p><img src="images/013-hello-fsm.png" alt="image"></p>
 <h4><a href="#generate-and-run-application" name="generate-and-run-application"></a>Generate and run application</h4>
 <p>Now we are ready to translate the model into an executable application. The first step is to generate source files from the model. Therefore we run the eTrice model generator by right click on file</p>
-<span class="uiElement"><img src="icons/obj16/file_obj.gif"> generate_Template.launch → Run As → generate_TemplateModel.</span>
+<span class="uiElement"><img src="icons/obj16/file_obj.gif"> generate_Template.launch --&gt; Run As --&gt; generate_TemplateModel</span>
 <p>After that we can build and run the application by right click on file (depending on your operating system, here we chose Windows).</p>
 <p><span class="label label-info">Note:</span> Using MinGW it is necessary to have <em>&lt;MinGW installation dir&gt;\bin</em> in the system PATH.</p>
 <p><span class="label label-info">Note:</span> Your CDT preferences might not enforce a build before launch. In this case you have to invoke the build before launching.</p>
-<span class="uiElement"><img src="icons/obj16/file_obj.gif"> run_Template_Windows.launch → Run As → run_Template_Windows.</span>
+<span class="uiElement"><img src="icons/obj16/file_obj.gif"> run_Template_Windows.launch --&gt; Run As --&gt; run_Template_Windows</span>
 <p>This will trigger the build process, carried out by Eclipse CDT and then subsequently start our application.</p>
 <table>
   <thead>
@@ -1301,16 +1461,16 @@
 <p>After installation of eTrice in Eclipse, we can use the wizard to create the template project, which is a good starting point for new ROOM applications. Select the menu <em>File -&gt; New -&gt; Other</em> (Ctrl+N) and choose <em>eTrice Java Template Project</em>. Name the project <em>TemplateModel</em> and press <em>Next</em>. On the next page select <em>use Eclipse JDT build</em> and press <em>Finish</em>.</p>
 <p><img src="images/014-wizard.png" alt="image"></p>
 <p>This will add three projects into your workspace, the library projects <em>runtime.java</em> and <em>modellib.java</em> and our application project <em>TemplateModel</em>. Now open the <em>TemplateModel.room</em> in the model folder of our project.</p>
-<p><img src="images/014-after-wizard.png" alt="image"></p>
+<p><img src="images/014-after-wizard.png" alt="image"><br>In this step we are introduced to the concept of Actors, a fundamental building block in ROOM, and how they are used in eTrice. In essence, an Actor is a representation of an object as a logical machine with defined behavior. Its structure, behavior and protocols are all defined with in an element called an ActorClass. See <a href="room-concepts.html#actors">here</a> for further information.</p>
 <p>The model contains an ActorClass <em>TopActor</em>, which is currently the only active actor. TopActor has a state machine that is intended to output a simple HelloWorld statement. To inspect its behavior graphically, we can open the behavior diagram by right click on <em>Outline View -&gt; TopActor -&gt; Edit Behavior</em>. Alternatively we can place the cursor within the textual notation and press Alt+B.</p>
 <p><img src="images/014-open-hello-fsm.png" alt="image"></p>
 <p>The state machine has an initial transition that leads to <em>helloState</em>. The state defines an entry code, which is executed during the transition. We can view the details by hovering over the state and edit the code with a double-click or right click and <em>Edit State</em>.</p>
 <p><img src="images/014-hello-fsm.png" alt="image"></p>
 <h4><a href="#generate-and-run-application" name="generate-and-run-application"></a>Generate and run application</h4>
 <p>Now we are ready to translate the model into an executable application. The first step is to generate source files from the model. Therefore we run the eTrice model generator by right click on file</p>
-<span class="uiElement"><img src="icons/obj16/file_obj.gif"> generate_Template.launch → Run As → generate_TemplateModel</span>
+<span class="uiElement"><img src="icons/obj16/file_obj.gif"> generate_Template.launch --&gt; Run As --&gt; generate_Template</span>
 <p>After that we can build and run the application by right click on file</p>
-<span class="uiElement"><img src="icons/obj16/file_obj.gif"> run_TemplateModel.launch → Run As → run_TemplateModell</span>
+<span class="uiElement"><img src="icons/obj16/file_obj.gif"> run_TemplateModel.launch --&gt; Run As --&gt; run_TemplateModel</span>
 <p>This will trigger the build process, carried out by Eclipse JDT and then subsequently start our application.</p>
 <table>
   <thead>