diff --git a/src/tmltranslator/TMLCP.java b/src/tmltranslator/TMLCP.java
index adb280bccc626084d7017afd8e8a1cb702d61288..f3214b8198fc17f3cbe7f4b050c3881d0ac5a289 100755
--- a/src/tmltranslator/TMLCP.java
+++ b/src/tmltranslator/TMLCP.java
@@ -332,6 +332,7 @@ public class TMLCP extends TMLElement {
 	for(TMLCPActivityDiagram diag: otherCPs) {
 	    all.addAll(diag.splitADs());
 	}
+	otherCPs.addAll(all);
     }
 
     public void printDataStructure()    {
diff --git a/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java b/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java
index 89444dc48b6beb4d8d20b0e3469de8c687bd9992..e288adb07e0ed114b72c02ff4fb36a488c34c69e 100755
--- a/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java
+++ b/src/tmltranslator/tmlcp/TMLCPActivityDiagram.java
@@ -212,6 +212,10 @@ public class TMLCPActivityDiagram  extends TMLElement {
         start = _elt;
     }
 
+    public TMLCPElement getStartElement() {
+	return start;
+    }
+
     public void addTMLCPElement(TMLCPElement _elt) {
         elements.add(_elt);
     }
@@ -307,6 +311,8 @@ public class TMLCPActivityDiagram  extends TMLElement {
         int id = 0;
         TMLCPActivityDiagram diag;
 
+	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>();
@@ -320,6 +326,7 @@ public class TMLCPActivityDiagram  extends TMLElement {
 		diag.setStartElement(start);
 		diag.addTMLCPElement(start);
                 refs.put((TMLCPJunction)elt, diag);
+		TraceManager.addDev("Adding a new diag named: " + diag.getName());
             }
         }
 
@@ -345,7 +352,7 @@ public class TMLCPActivityDiagram  extends TMLElement {
 	    
 	    // To be modified-> add elements from RefADs
 	    // Also, avoid to add already met elements
-            addElementsFromJunction(refAD, start, diag, refs, toBeRemoved);
+            addElementsFromJunction(junction, diag.getStartElement(), diag, refs, toBeRemoved);
         }
 
 	// Removing elements from main diagram
@@ -368,14 +375,15 @@ public class TMLCPActivityDiagram  extends TMLElement {
 	}
 	
 	for(TMLCPElement elt: originInOld.getNextElements()) {
-	    if (elt instanceof TMLCPRefAD) {
+	    TraceManager.addDev("Exploring elt (0):" + elt.getName());
+	    if (elt instanceof TMLCPJunction) {
 		// Must replace the junction by a ref to an AD
-		//TMLCPActivityDiagram toAD = refs.get((TMLCPJunction)elt);
-		//TMLCPRefAD ref = new TMLCPRefAD(toAD, toAD.getName(), elt.getReferenceObject());
-		newDiag.addTMLCPElement(elt);
-		originInNew.setNextElement(elt);
+		TMLCPActivityDiagram toAD = refs.get((TMLCPJunction)elt);
+		TMLCPRefAD ref = new TMLCPRefAD(toAD, toAD.getName(), elt.getReferenceObject());
+		newDiag.addTMLCPElement(ref);
+		originInNew.setNextElement(ref);
 	    } else {
-		
+		TraceManager.addDev("Exploring elt (1):" + elt.getName());
 		if (originInOld != originInNew) {
 		    originInNew.addNextElement(elt);
 		}