diff --git a/src/tmltranslator/TMLCP.java b/src/tmltranslator/TMLCP.java
index ef3f4898ab9a78e2a2cf39b253b1692a831aa21e..abcf4941ad83903de2ed26d3b08b43bc83c23a63 100755
--- a/src/tmltranslator/TMLCP.java
+++ b/src/tmltranslator/TMLCP.java
@@ -327,12 +327,13 @@ public class TMLCP extends TMLElement {
     }
 
     public void splitADs() {
-	ArrayList<TMLCPActivityDiagram> all = new ArrayList<TMLCPActivityDiagram>();
-	all.addAll(mainCP.splitADs());
-	for(TMLCPActivityDiagram diag: otherCPs) {
-	    all.addAll(diag.splitADs());
-	}
-	otherCPs.addAll(all);
+
+			ArrayList<TMLCPActivityDiagram> all = new ArrayList<TMLCPActivityDiagram>();
+			all.addAll(mainCP.splitADs());
+			for(TMLCPActivityDiagram diag: otherCPs) {
+				all.addAll(diag.splitADs());
+			}
+		otherCPs.addAll(all);
     }
 
     public void printDataStructure()    {
diff --git a/src/tmltranslator/TMLCPSyntaxChecking.java b/src/tmltranslator/TMLCPSyntaxChecking.java
index 830dc32692d4c95596346ed6d83e898b3fdc55b6..44d129bdb8675cc7104c38a4661daad7265aab3d 100755
--- a/src/tmltranslator/TMLCPSyntaxChecking.java
+++ b/src/tmltranslator/TMLCPSyntaxChecking.java
@@ -102,6 +102,8 @@ public class TMLCPSyntaxChecking {
 	//First check the mainCP then check the other Activity Diagrams
 	private void checkActivityDiagrams()	{
 
+		ArrayList<TMLCPActivityDiagram> junctionsList = new ArrayList<TMLCPActivityDiagram>();
+		
 		TMLCPActivityDiagram mainCP = tmlcp.getMainCP();
 
 		//Checking mainCP
@@ -112,9 +114,15 @@ public class TMLCPSyntaxChecking {
 
 		//Checking the other ActivityDiagrams
 		ArrayList<TMLCPActivityDiagram> listADs = tmlcp.getCPActivityDiagrams();
+		//TraceManager.addDev( "The list of ADs contains: " + listADs.toString() );
 		for( TMLCPActivityDiagram diag: listADs )	{
+			if( diag.getName().toLowerCase().contains( "junction"	) )	{
+				junctionsList.add( diag );
+				break;
+			}
 			currentListOfElements = diag.getElements();
 			checkStartState( currentListOfElements, diag );
+			TraceManager.addDev( "DIAGRAM UNDER EXAMINATION IS: " + diag.getName() );
 			checkDisconnectedSubParts( currentListOfElements, diag );
 			checkDiagramsBetweenForkAndJoin( currentListOfElements, diag );
 		}
@@ -159,7 +167,7 @@ public class TMLCPSyntaxChecking {
 
 		int startCounter = 0;
 		for( TMLCPElement elem: diag.getElements() )	{
-			TraceManager.addDev( "ELEMENT in AD: " + elem );
+			//TraceManager.addDev( "ELEMENT in AD: " + elem );
 			if( elem instanceof TMLCPStart )	{
 				startCounter++;
 			}
@@ -182,11 +190,16 @@ public class TMLCPSyntaxChecking {
 		for( TMLCPElement currentElement: currentListOfElements )	{
 			if( !(currentElement instanceof TMLCPStart) )	{
 				for( TMLCPElement element: listOfElementsToCheck )	{
-					if( !element.getNextElements().contains( currentElement ) )	{
+					ArrayList<TMLCPElement> nextElements = element.getNextElements(); 
+					if( nextElements.get(0).getName().toLowerCase().contains( "junction" ) )	{
+						adsWithJunctionsList.add( diag );
+					}
+					if( !nextElements.contains( currentElement ) )	{	//counting how many times currentElement is NOT present as a next element
 						counter++;
 					}
 				}
 			}
+			//If currentElement is NEVER present as a next element it means its head is not connected
 			if( counter == currentListOfElements.size() )	{
 				addError( "Element <<" + currentElement.toString()+ ">> in diagram <<" + diag.getName() + ">> is not correctly connected", TMLCPError.ERROR_STRUCTURE );
 			}
diff --git a/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java b/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java
index e288adb07e0ed114b72c02ff4fb36a488c34c69e..7690981bd2516ce8cc0d0a608cc8b93eb97ba6de 100755
--- a/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java
+++ b/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java
@@ -311,22 +311,22 @@ public class TMLCPActivityDiagram  extends TMLElement {
         int id = 0;
         TMLCPActivityDiagram diag;
 
-	TraceManager.addDev("Splitting AD: " + getName());
+				TraceManager.addDev("Splitting AD: " + getName());
 
         // For each junction, we create a new AD
         ArrayList<TMLCPJunction> junctions = new ArrayList<TMLCPJunction>();
-	ArrayList<TMLCPRefAD> refsAD = new ArrayList<TMLCPRefAD>();
-	ArrayList<TMLCPElement> toBeRemoved = new ArrayList<TMLCPElement>();
+				ArrayList<TMLCPRefAD> refsAD = new ArrayList<TMLCPRefAD>();
+				ArrayList<TMLCPElement> toBeRemoved = new ArrayList<TMLCPElement>();
         HashMap<TMLCPJunction, TMLCPActivityDiagram> refs = new HashMap<TMLCPJunction, TMLCPActivityDiagram>();
         for(TMLCPElement elt: elements)  {
             if (elt instanceof TMLCPJunction) {
                 junctions.add((TMLCPJunction)elt);
                 diag = new TMLCPActivityDiagram(elt.getName() + "_" + id, referenceObject);
-		TMLCPStart start = new TMLCPStart("StartFrom_" + elt.getName(), elt.getReferenceObject());
-		diag.setStartElement(start);
-		diag.addTMLCPElement(start);
+								TMLCPStart start = new TMLCPStart("StartFrom_" + elt.getName(), elt.getReferenceObject());
+								diag.setStartElement(start);
+								diag.addTMLCPElement(start);
                 refs.put((TMLCPJunction)elt, diag);
-		TraceManager.addDev("Adding a new diag named: " + diag.getName());
+								TraceManager.addDev("Adding a new diag named: " + diag.getName());
             }
         }
 
diff --git a/src/ui/GTMLModeling.java b/src/ui/GTMLModeling.java
index 7ac753590ad7189a9572475b531a18689d0c4d62..0754a2fbb624a020469070879ac9916b388e02b1 100755
--- a/src/ui/GTMLModeling.java
+++ b/src/ui/GTMLModeling.java
@@ -623,7 +623,7 @@ public class GTMLModeling  {
         TMLChannel channel;
         TMLTask tt1, tt2;
 
-        //TraceManager.addDev("*** Adding channels ***");
+        TraceManager.addDev("*** Adding channels ***");
 
         while(iterator.hasNext()) {
             tgc = (TGComponent)(iterator.next());
@@ -2201,10 +2201,13 @@ public class GTMLModeling  {
             //TraceManager.addDev( "PANEL number: " + panelCounter + " " + panelList.get( panelCounter ) );
         }
 
+				TraceManager.addDev( "Before correcting references. The list of ADs contains: " + tmlcp.getCPActivityDiagrams().toString() );
         tmlcp.correctReferences(); //Update references to the right activity and sequence diagrams
+				TraceManager.addDev( "After correcting references and before splitting ADs. The list of ADs contains: " + tmlcp.getCPActivityDiagrams().toString() );
         //tmlcp.generateNexts(); // Add nexts elements to CPElements
         //tmlcp.removeADConnectors(); // Remove connectors since nexts have been filled
         tmlcp.splitADs(); // Splitting ADs so as to remove junctions -> new ADs are introduced for each junction inside an AD
+				TraceManager.addDev( "After splitting ADs. The list of ADs contains: " + tmlcp.getCPActivityDiagrams().toString() );
 
         for( TMLCPSequenceDiagram seqDiag: tmlcp.getCPSequenceDiagrams() )      {
             TraceManager.addDev( "**********" );