diff --git a/src/compiler/tmlCPparser/CPparserDEF.jjt b/src/compiler/tmlCPparser/CPparserDEF.jjt
index 5d1b4281d284db48c8909a87c2eca36020fa2a27..5c5f51fd090c40ed776a415c6307d328a4d2e633 100644
--- a/src/compiler/tmlCPparser/CPparserDEF.jjt
+++ b/src/compiler/tmlCPparser/CPparserDEF.jjt
@@ -495,7 +495,7 @@ void ActivityDiagram( TMLCP mainCP ):
 	parseJunctionChoice( mainCP ) )+
 	{
 		currentElement = new TMLCPStop( "stop" + counter, null );
-		//previousElement.addNextElement( currentElement );	//commented in order to remove the last element to have two next Elements
+		previousElement.addNextElement( currentElement );
 		globalAD.addElement( currentElement );
 		mainCP.addCPActivityDiagram( globalAD );
 	}
@@ -584,7 +584,7 @@ void parseJunctionChoice( TMLCP mainCP ):
 		mainCP.addCPActivityDiagram( globalAD );
 	 	globalAD = new TMLCPActivityDiagram( s + s1, null );
 		currentElement = new TMLCPStart( s + s1, null );
-		start = currentElement;
+		//start = currentElement;
 		globalAD.addElement( currentElement );
 		previousElement = currentElement;
 	}
@@ -634,9 +634,12 @@ void parseJunctionChoice( TMLCP mainCP ):
 		previousElement = currentElement;
 		currentElement = choice;	// end of a branch, the previous element is reset to the choice node
 	}
-	| ID() ID()
+	| s = ID() s1 = ID()
 	{
-		currentElement.addNextElement( start );
+		TMLCPElement refAD = new TMLCPRefAD( s + s1, null );
+		currentElement.addNextElement( refAD );
+		currentElement = refAD;
+		globalAD.addElement( refAD );
 		/*TraceManager.addDev( " 1 Current Element: " + currentElement.toString() );
 		TraceManager.addDev( " 1 Previous Element: " + previousElement.toString() );*/
 	}