diff --git a/.idea/.gitignore b/.idea/.gitignore
index 838c2fb85d2911b98a49f23071f655443955c8b8..f4e040b119822b5e6545c07a703b0e465d6b7e17 100644
--- a/.idea/.gitignore
+++ b/.idea/.gitignore
@@ -1,2 +1,3 @@
 /workspace.xml
 /tasks.xml
+/uiDesigner.xml
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index bd7bce65a51de0fb5e5e904c16b29a84ac427536..c6526892eb8d90c330871093fd22fa80248489ba 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -7,7 +7,9 @@
     <inspection_tool class="OverlyStrongTypeCast" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="ignoreInMatchingInstanceof" value="false" />
     </inspection_tool>
-    <inspection_tool class="SystemOutErr" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="SystemOutErr" enabled="true" level="WARNING" enabled_by_default="false">
+      <scope name="Prod" level="WARNING" enabled="true" />
+    </inspection_tool>
     <inspection_tool class="TypeMayBeWeakened" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="useRighthandTypeAsWeakestTypeInAssignments" value="true" />
       <option name="useParameterizedTypeForCollectionMethods" value="true" />
diff --git a/.idea/scopes/Prod.xml b/.idea/scopes/Prod.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d2c93f106f299a1b0b9d70a5168379eae5483324
--- /dev/null
+++ b/.idea/scopes/Prod.xml
@@ -0,0 +1,3 @@
+<component name="DependencyValidationManager">
+  <scope name="Prod" pattern="src[shared]:*..*" />
+</component>
\ No newline at end of file
diff --git a/rundse/build.gradle b/rundse/build.gradle
index 5d0ddf0add1e681703923d671b6cc2a2a0bc3acb..183d2292bc5033027721e1be982e4e948bb108ec 100644
--- a/rundse/build.gradle
+++ b/rundse/build.gradle
@@ -4,11 +4,20 @@ apply plugin: 'application'
 sourceSets {
     main {
         java {
+            srcDir "${rootProject.absPath}/src/main/java"
         }
     }
 }
 
 dependencies {
+    compileOnly name: 'opencloud'
+    compileOnly name: 'JavaPlot'
+    compileOnly name: 'derbynet'
+    compileOnly name: 'commons-codec-1.10'
+    compileOnly name: 'commons-io-2.5-javadoc'
+    compileOnly name: 'commons-io-2.5'
+    compileOnly name: 'jsoup-1.8.1'
+    compileOnly name: 'gs-core-1.3'
 }
 
 jar {
diff --git a/settings.gradle b/settings.gradle
index c1f2cdb71339e2efa8865f5255692d28d249d9e2..40cf4a1845d3235e81e142ed5b234ab1b8fa0709 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -20,6 +20,8 @@ include 'launcher'
 include 'graphminimize'
 include 'graphshow'
 include 'tiftranslator'
+include 'tmltranslator'
+include 'rundse'
 include 'simulationcontrol'
 include 'webcrawler-client'
 include 'webcrawler-server'
diff --git a/src/main/java/ddtranslator/DDTranslator.java b/src/main/java/ddtranslator/DDTranslator.java
index c83b230de97a8a6c68326e5c8c8064641ba469a2..fd27d6dfcc35a942f28e60e6a20ea4c30a1be2af 100755
--- a/src/main/java/ddtranslator/DDTranslator.java
+++ b/src/main/java/ddtranslator/DDTranslator.java
@@ -51,6 +51,7 @@ import ui.*;
 import ui.cd.TCDTClass;
 import ui.dd.TDDNode;
 import ui.dd.TGConnectorLinkNode;
+import ui.CorrespondanceTGElement;
 
 import java.util.Iterator;
 import java.util.LinkedList;
diff --git a/src/main/java/dseengine/DSEConfiguration.java b/src/main/java/dseengine/DSEConfiguration.java
index fa315cbd58405aaac9b48e258ba3a9ceaf14c2ae..47b37df05fabe9b7fa3279ff3fd27b0b1c29630d 100755
--- a/src/main/java/dseengine/DSEConfiguration.java
+++ b/src/main/java/dseengine/DSEConfiguration.java
@@ -54,6 +54,7 @@ import tmltranslator.tomappingsystemc2.DiploSimulatorFactory;
 import tmltranslator.tomappingsystemc2.IDiploSimulatorCodeGenerator;
 import ui.GTMLModeling;
 import ui.MainGUI;
+import ui.TGComponent;
 import ui.TMLArchiPanel;
 import ui.TMLComponentDesignPanel;
 import ui.tmldd.*;
@@ -110,8 +111,8 @@ public class DSEConfiguration implements Runnable  {
 	public TMLComponentDesignPanel tmlcdp;
 	public TMLArchiPanel tmlap;
 	
-	private TMLMapping tmap;
-	private TMLModeling tmlm;
+	private TMLMapping<TGComponent> tmap;
+	private TMLModeling<TGComponent> tmlm;
 	
 //	private TMLModeling stmlm;
 	
@@ -142,9 +143,9 @@ public class DSEConfiguration implements Runnable  {
 	private int minNbOfCoresPerCPU = 1;
 	private int maxNbOfCoresPerCPU = 2;
 	private int nbOfSimulationsPerMapping = 1;
-	private TMLModeling taskModel = null;
+	private TMLModeling<TGComponent> taskModel = null;
 //	private TMLModeling secModel = null;
-	private Vector<TMLMapping> mappings;
+	private Vector<TMLMapping<TGComponent>> mappings;
 	private DSEMappingSimulationResults dsemapresults;
 	List<Integer[]> latencyIds =new ArrayList<Integer[]>();
 	public MainGUI mainGUI;
@@ -464,7 +465,7 @@ public class DSEConfiguration implements Runnable  {
 		boolean ret = false;
 		//System.out.println("load");
 		String inputData = FileUtils.loadFileData(mappingFile);
-		TMLMappingTextSpecification spec = new TMLMappingTextSpecification("LoadedSpecification");
+		TMLMappingTextSpecification<TGComponent> spec = new TMLMappingTextSpecification<>("LoadedSpecification");
 		ret = spec.makeTMLMapping(inputData, modelPath);
 		TraceManager.addDev("load ended");
 		List<TMLError> warnings;
@@ -516,7 +517,7 @@ public class DSEConfiguration implements Runnable  {
 		boolean ret = false;
 		//System.out.println("load");
 		String inputData = FileUtils.loadFileData(taskModelFile);
-		TMLTextSpecification tmlts = new TMLTextSpecification("LoadedTaskModel");
+		TMLTextSpecification<TGComponent> tmlts = new TMLTextSpecification<>("LoadedTaskModel");
 		ret = tmlts.makeTMLModeling(inputData);
 		TraceManager.addDev("Load of task model done");
 		List<TMLError> warnings;
@@ -714,7 +715,7 @@ public class DSEConfiguration implements Runnable  {
 	public int generateSecMapping(){
 		return 0;
 	}
-	public int generateAndCompileMappingCode(TMLMapping _tmlmap, boolean _debug, boolean _optimize) {
+	public int generateAndCompileMappingCode(TMLMapping<TGComponent> _tmlmap, boolean _debug, boolean _optimize) {
 		
 		// Generating code
 		TraceManager.addDev("\n\n\n**** Generating simulation code from mapping...");
@@ -1342,7 +1343,7 @@ public class DSEConfiguration implements Runnable  {
 			}
 		}
 		
-		for(TMLMapping tmla: mappings) {
+		for(TMLMapping<TGComponent> tmla: mappings) {
 			TraceManager.addDev("Handling mapping #" + cpt);
 			progression = cpt * 100 / (mappings.size());
 			
@@ -1393,7 +1394,7 @@ public class DSEConfiguration implements Runnable  {
 			 System.out.println("tmlcdp " + tmlcdp);
 		     //
 		     //Repeat for secured mapping
-		     TMLMapping secMapping = mainGUI.gtm.autoSecure(mainGUI, "mapping" +(cpt-1),tmla, newArch, encComp, overhead, decComp,true,false,false);
+		     TMLMapping<TGComponent> secMapping = mainGUI.gtm.autoSecure(mainGUI, "mapping" +(cpt-1),tmla, newArch, encComp, overhead, decComp,true,false,false);
 
 		     //Run simulations on this mapping
 		     if (generateAndCompileMappingCode(secMapping, _debug, _optimize)  >= 0) {
@@ -1433,7 +1434,7 @@ public class DSEConfiguration implements Runnable  {
 		}	
 		return 0;
 	}
-    public TMLArchiPanel drawMapping(TMLMapping map, String name){
+    public TMLArchiPanel drawMapping(TMLMapping<TGComponent> map, String name){
 	//Map<HwNode, TGConnectingPoint> connectMap; 
 	Map<HwNode, TMLArchiNode> objMap = new HashMap<HwNode, TMLArchiNode>();
 	/*int index =*/ mainGUI.createTMLArchitecture(name);
@@ -1480,7 +1481,7 @@ public class DSEConfiguration implements Runnable  {
 	    TMLArchiConnectorNode conn = new TMLArchiConnectorNode(x, y, ap.getMinX(), ap.getMaxX(), ap.getMinY(), ap.getMaxY(), false, null, ap, n1.getTGConnectingPointAtIndex(0), n2.getTGConnectingPointAtIndex(0), new Vector<Point>());
 	    ap.addComponent(conn,x,y,false,true);
 	}
-	for (TMLTask task:map.getTMLModeling().getTasks()){
+	for (TMLTask task: map.getTMLModeling().getTasks()){
 	   HwNode node = map.getHwNodeOf(task);
 	   TMLArchiArtifact art = new TMLArchiArtifact(objMap.get(node).getX(), objMap.get(node).getY(), ap.getMinX(), ap.getMaxX(), ap.getMinY(), ap.getMaxY(), false, objMap.get(node), ap);
 	   ap.addComponent(art,objMap.get(node).getX(),objMap.get(node).getY(),true,true);
@@ -1597,7 +1598,7 @@ public class DSEConfiguration implements Runnable  {
 		return 0;
 	}
 	
-	public Vector<TMLMapping> generateAllMappings(TMLModeling _tmlm) {
+	public Vector<TMLMapping<TGComponent>> generateAllMappings(TMLModeling<TGComponent> _tmlm) {
 		TraceManager.addDev("Generate all mappings");
 		if (_tmlm == null) {
 			TraceManager.addDev("Null mapping");
@@ -1619,7 +1620,7 @@ public class DSEConfiguration implements Runnable  {
 			max = min + 1;
 		}
 		
-		Vector<TMLMapping> maps = new  Vector<TMLMapping>();
+		Vector<TMLMapping<TGComponent>> maps = new  Vector<>();
 		
 		for(int cpt=min; cpt<=max; cpt++) {
 			dseID = 0;
@@ -1634,8 +1635,8 @@ public class DSEConfiguration implements Runnable  {
 		
 		return maps;
 	}
-	private void addMemories(Vector<TMLMapping> maps){
-		for (TMLMapping map: maps){
+	private void addMemories(Vector<TMLMapping<TGComponent>> maps){
+		for (TMLMapping<TGComponent> map: maps){
 			TMLArchitecture arch = map.getArch();
 			List<HwNode> nodes =  arch.getCPUs();
 			for (HwNode node:nodes){
@@ -1656,7 +1657,7 @@ public class DSEConfiguration implements Runnable  {
 			}
 		}
 	}
-	private void generateMappings(TMLModeling _tmlm, Vector<TMLMapping> maps, int nbOfCPUs) {
+	private void generateMappings(TMLModeling<TGComponent> _tmlm, Vector<TMLMapping<TGComponent>> maps, int nbOfCPUs) {
 		List<TMLTask> tasks = _tmlm.getTasks();
 		CPUWithTasks cpus_tasks[] = new CPUWithTasks[nbOfCPUs];
 		
@@ -1687,7 +1688,7 @@ public class DSEConfiguration implements Runnable  {
 		TraceManager.addDev("Nb of computed mappings:" + maps.size());
 	}
 	
-	private void computeMappings(Vector<TMLTask> remainingTasks, CPUWithTasks[] cpus_tasks,  Vector<TMLMapping> maps, TMLModeling _tmlm) {
+	private void computeMappings(Vector<TMLTask> remainingTasks, CPUWithTasks[] cpus_tasks,  Vector<TMLMapping<TGComponent>> maps, TMLModeling<TGComponent> _tmlm) {
 		if (remainingTasks.size() == 0) {
 			// Can generate the mapping from cpus_tasks
 			makeMapping(cpus_tasks, maps, _tmlm);
@@ -1740,9 +1741,9 @@ public class DSEConfiguration implements Runnable  {
 		
 	}
 	
-	private void makeMapping(CPUWithTasks[] cpus_tasks,  Vector<TMLMapping> maps, TMLModeling _tmlm) {
+	private void makeMapping(CPUWithTasks[] cpus_tasks,  Vector<TMLMapping<TGComponent>> maps, TMLModeling<TGComponent> _tmlm) {
 		TMLArchitecture tmla = new TMLArchitecture();
-		TMLMapping tmap = new TMLMapping(_tmlm, tmla, true);
+		TMLMapping<TGComponent> tmap = new TMLMapping<>(_tmlm, tmla, true);
 		DIPLOElement.setGeneralID(_tmlm.computeMaxID() + 1);
 		
 		HwCPU cpu;
@@ -1774,7 +1775,7 @@ public class DSEConfiguration implements Runnable  {
 		_dseresults.computeGrades(tapValues);
 	}
 
-	private void computeCoresOfMappings(Vector<TMLMapping> maps) {
+	private void computeCoresOfMappings(Vector<TMLMapping<TGComponent>> maps) {
 	}
 	
 	public void resetProgression() {
diff --git a/src/main/java/tmltranslator/TMLCheckingError.java b/src/main/java/tmltranslator/TMLCheckingError.java
index 70773ffb33f431a0a876f4b6cddc42d2dd32ad2f..d70cfc82a15b8eb265375c7bef453e76e2892e08 100755
--- a/src/main/java/tmltranslator/TMLCheckingError.java
+++ b/src/main/java/tmltranslator/TMLCheckingError.java
@@ -52,6 +52,8 @@ public class TMLCheckingError extends CheckingError {
 
     private TMLTask tmlt;
 
+    private TMLActivityElement tmlae;
+
     public TMLCheckingError(int _type, String _message) {
         super(_type, _message);
     }
@@ -64,6 +66,14 @@ public class TMLCheckingError extends CheckingError {
         return tmlt;
     }
 
+    public void setTMLActivityElement(TMLActivityElement tmlae) {
+        this.tmlae = tmlae;
+    }
+
+    public TMLActivityElement getTMLActivityElement() {
+        return tmlae;
+    }
+
     @Override
     public String toString() {
         if (tmlt != null) {
diff --git a/src/main/java/tmltranslator/TMLMapping.java b/src/main/java/tmltranslator/TMLMapping.java
index b554cc71acc587db23c9e6e88d20aec730e5c00a..2a3ade5063d33827d1ade9ea6fb42c38781ccbea 100755
--- a/src/main/java/tmltranslator/TMLMapping.java
+++ b/src/main/java/tmltranslator/TMLMapping.java
@@ -48,22 +48,22 @@ package tmltranslator;
 
 import myutil.TraceManager;
 import tmltranslator.toproverif.TML2ProVerif;
-import ui.CorrespondanceTGElement;
 import ui.TMLArchiPanel;
 import ui.TMLComponentDesignPanel;
+import ui.util.CorrespondanceElement;
 
 import java.util.*;
 
-public class TMLMapping {
+public class TMLMapping<E> {
 
-    private TMLModeling tmlm;
+    private TMLModeling<E> tmlm;
     private TMLArchitecture tmla;
  //   private TMLCP tmlcp;
     private List<HwExecutionNode> onnodes;
     private List<TMLTask> mappedtasks;
     private List<HwCommunicationNode> oncommnodes;
     public List<TMLElement> mappedcommelts;
-	public CorrespondanceTGElement listE;
+	public CorrespondanceElement<E> listE;
     public boolean firewall = false;
     //private List<TMLCP> mappedCPs;
    // private List<TMLElement> commEltsMappedOnCPs;
@@ -77,7 +77,7 @@ public class TMLMapping {
     private boolean hashCodeComputed = false;
     private TMLComponentDesignPanel tmldp;
     public TMLArchiPanel tmlap;
-    public TMLMapping(TMLModeling _tmlm, TMLArchitecture _tmla, boolean reset) {
+    public TMLMapping(TMLModeling<E> _tmlm, TMLArchitecture _tmla, boolean reset) {
 
         tmlm = _tmlm;
         tmla = _tmla;
@@ -395,10 +395,10 @@ public class TMLMapping {
         }
     }
 
-    public TMLModeling getTMLModeling() {
+    public TMLModeling<E> getTMLModeling() {
         return tmlm;
     }
-    public void setTMLModeling(TMLModeling _tmlm){
+    public void setTMLModeling(TMLModeling<E> _tmlm){
 	tmlm=_tmlm;
     }
     public TMLArchitecture getTMLArchitecture() {
@@ -407,7 +407,7 @@ public class TMLMapping {
 
     private void computeHashCode() {
         hashCode = tmlm.getHashCode() + tmla.getHashCode();
-        TMLMappingTextSpecification tmaptxt = new TMLMappingTextSpecification("spec.tmap");
+        TMLMappingTextSpecification<E> tmaptxt = new TMLMappingTextSpecification<>("spec.tmap");
         hashCode += tmaptxt.toTextFormat(this).hashCode();
     }
 
@@ -1475,4 +1475,4 @@ public class TMLMapping {
     public TMLComponentDesignPanel getTMLCDesignPanel(){
     	return tmldp;
     }
-}       //End of class
+}
diff --git a/src/main/java/tmltranslator/TMLMappingTextSpecification.java b/src/main/java/tmltranslator/TMLMappingTextSpecification.java
index ed288cd17472b2b8ce7bede6669c197c32d34d1e..736c399a03fd0f34133c6052532b26bb95b7fc00 100755
--- a/src/main/java/tmltranslator/TMLMappingTextSpecification.java
+++ b/src/main/java/tmltranslator/TMLMappingTextSpecification.java
@@ -57,18 +57,18 @@ import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
 
-public class TMLMappingTextSpecification {
+public class TMLMappingTextSpecification<E> {
     public final static String CR = "\n";
     public final static String SP = " ";
     public final static String CR2 = "\n\n";
     public final static String SC = ";";
 
-    private TMLTextSpecification tmlmtxt;
+    private TMLTextSpecification<E> tmlmtxt;
     private TMLArchiTextSpecification tmlatxt;
     private String spec;
     private String title;
 
-    private TMLMapping tmlmap;
+    private TMLMapping<E> tmlmap;
     private ArrayList<TMLTXTError> errors;
     private ArrayList<TMLTXTError> warnings;
 
@@ -97,7 +97,7 @@ public class TMLMappingTextSpecification {
         FileUtils.saveFile(path + filename + ".tmap", indent(header + spec));
     }
 
-    public TMLMapping getTMLMapping() {
+    public TMLMapping<E> getTMLMapping() {
         return tmlmap;
     }
 
@@ -165,7 +165,7 @@ public class TMLMappingTextSpecification {
         return spec;
     }
 
-    public String toTextFormat(TMLMapping _tmlmap) {
+    public String toTextFormat(TMLMapping<E> _tmlmap) {
         tmlmap = _tmlmap;
 	tmlmap.handleCPs();
         makeTML(tmlmap);
@@ -175,17 +175,17 @@ public class TMLMappingTextSpecification {
         //indent();
     }
 
-    public void makeTML(TMLMapping tmlmap) {
-        tmlmtxt = new TMLTextSpecification(title);
+    public void makeTML(TMLMapping<E> tmlmap) {
+        tmlmtxt = new TMLTextSpecification<>(title);
         tmlmtxt.toTextFormat(tmlmap.getTMLModeling());
     }
 
-    public void makeArchi(TMLMapping tmlmap) {
+    public void makeArchi(TMLMapping<E> tmlmap) {
         tmlatxt = new TMLArchiTextSpecification(/*title*/);
         tmlatxt.toTextFormat(tmlmap.getTMLArchitecture());
     }
 
-    public void makeMapping(TMLMapping tmlmap) {
+    public void makeMapping(TMLMapping<E> tmlmap) {
         spec = CR;
         spec +="TMLMAPPING" + CR;
         spec += makeMappingNodes(tmlmap);
@@ -193,7 +193,7 @@ public class TMLMappingTextSpecification {
         spec += "ENDTMLMAPPING" + CR;
     }
 
-    public String makeMappingNodes(TMLMapping tmlmap) {
+    public String makeMappingNodes(TMLMapping<E> tmlmap) {
         String tmp = "";
         List<HwExecutionNode> nodes = tmlmap.getNodes();
         List<TMLTask> tasks = tmlmap.getMappedTasks();
@@ -213,7 +213,7 @@ public class TMLMappingTextSpecification {
         return tmp;
     }
 
-    public String makeMappingCommunicationNodes(TMLMapping tmlmap) {
+    public String makeMappingCommunicationNodes(TMLMapping<E> tmlmap) {
         String tmp = "";
         List<HwCommunicationNode> nodes = tmlmap.getCommunicationNodes();
         List<TMLElement> elts = tmlmap.getMappedCommunicationElement();
@@ -389,7 +389,7 @@ public class TMLMappingTextSpecification {
 
         //System.out.println(spec);
 
-        TMLModeling tmlm = makeTMLModeling();
+        TMLModeling<E> tmlm = makeTMLModeling();
         //System.out.println("TML modeling:" + tmlm);
 
         TMLArchitecture tarchi = makeArchitectureModeling();
@@ -398,7 +398,7 @@ public class TMLMappingTextSpecification {
             return false;
         }
 
-        tmlmap = new TMLMapping(tmlm, tarchi, false);
+        tmlmap = new TMLMapping<>(tmlm, tarchi, false);
 
         TraceManager.addDev("Compiling mapping...");
 
@@ -408,8 +408,8 @@ public class TMLMappingTextSpecification {
     }
 
 
-    public TMLModeling makeTMLModeling() {
-        TMLTextSpecification t = new TMLTextSpecification("from file");
+    public TMLModeling<E> makeTMLModeling() {
+        TMLTextSpecification<E> t = new TMLTextSpecification<>("from file");
 
         // Import errors and warnings
 
diff --git a/src/main/java/tmltranslator/TMLModeling.java b/src/main/java/tmltranslator/TMLModeling.java
index c33db2b7d951835fcfe9cf701eb34d7f94e58d54..3908fc36aa910c584acaaee2d69960bc62930732 100755
--- a/src/main/java/tmltranslator/TMLModeling.java
+++ b/src/main/java/tmltranslator/TMLModeling.java
@@ -54,14 +54,13 @@ import proverifspec.ProVerifOutputAnalyzer;
 import proverifspec.ProVerifQueryAuthResult;
 import proverifspec.ProVerifQueryResult;
 import ui.TAttribute;
-import ui.TGComponent;
 import ui.tmlcompd.TMLCPrimitiveComponent;
 import ui.tmlcompd.TMLCPrimitivePort;
 
 import java.util.*;
 
 
-public class TMLModeling {
+public class TMLModeling<E> {
 	public final String SEP1 = "_S_";
 
 	private List<TMLTask> tasks;
@@ -76,7 +75,7 @@ public class TMLModeling {
 	public Map<String, List<String>> secChannelMap = new HashMap<String, List<String>>();
 	public Map<SecurityPattern, List<TMLTask>> securityTaskMap = new HashMap<SecurityPattern, List<TMLTask>>();
 	private String[] ops = {">", "<", "+", "-", "*", "/", "[", "]", "(", ")", ":", "=", "==", ","};
-	private Map<TGComponent, String> checkedActivities = new HashMap<TGComponent, String>();
+	private Map<E, String> checkedActivities = new HashMap<>();
 	private int hashCode;
 	private boolean hashCodeComputed = false;
 
@@ -97,11 +96,11 @@ public class TMLModeling {
 		}
 	}
 
-	public void addCheckedActivity(TGComponent tgc, String s){
+	public void addCheckedActivity(E tgc, String s){
 		checkedActivities.put(tgc,s);
 	}
 
-	public Map<TGComponent, String> getCheckedComps(){
+	public Map<E, String> getCheckedComps(){
 		return checkedActivities;
 	}
 	
@@ -114,9 +113,9 @@ public class TMLModeling {
 		return null;
 	}
 	
-	public TMLMapping getDefaultMapping() {
-		TMLMapping tmlmapping;
-		tmlmapping = new TMLMapping(this, new TMLArchitecture(), false);
+	public TMLMapping<E> getDefaultMapping() {
+		TMLMapping<E> tmlmapping;
+		tmlmapping = new TMLMapping<>(this, new TMLArchitecture(), false);
 		tmlmapping.makeMinimumMapping();
 		return tmlmapping;
 
@@ -215,7 +214,7 @@ public class TMLModeling {
 	}
 
 	private void computeHashCode() {
-		TMLTextSpecification tmltxt = new TMLTextSpecification("spec.tml");
+		TMLTextSpecification<E> tmltxt = new TMLTextSpecification<>("spec.tml");
 		String s = tmltxt.toTextFormat(this);
 
 		int index = s.indexOf("// Channels");
@@ -1262,7 +1261,7 @@ public class TMLModeling {
 		}
 	}
 
-	public void mergeWith(TMLModeling tmlm) {
+	public void mergeWith(TMLModeling<E> tmlm) {
 		channels.addAll(tmlm.getChannels());
 		events.addAll(tmlm.getEvents());
 		requests.addAll(tmlm.getRequests());
@@ -1273,7 +1272,7 @@ public class TMLModeling {
 	}
 
 	// Elements with same names are not duplicated
-	public void advancedMergeWith(TMLModeling tmlm) {
+	public void advancedMergeWith(TMLModeling<E> tmlm) {
 		TraceManager.addDev("**************** Advanced merge!");
 		for(TMLChannel ch: tmlm.getChannels()) {
 			if (!(hasSameChannelName(ch))) {
@@ -1309,7 +1308,7 @@ public class TMLModeling {
 		}
 		securityTaskMap.putAll(tmlm.securityTaskMap);
 
-		for (TGComponent tgc: tmlm.getCheckedComps().keySet()){
+		for (E tgc: tmlm.getCheckedComps().keySet()){
 			if (!checkedActivities.containsKey(tgc)){
 				checkedActivities.put(tgc, tmlm.getCheckedComps().get(tgc));
 			}
diff --git a/src/main/java/tmltranslator/TMLSyntaxChecking.java b/src/main/java/tmltranslator/TMLSyntaxChecking.java
index 141659b62f3454a6b436cdb26c1a583ccfe30758..8962f996dfd73d70f56f6afbc0d00d404652422b 100755
--- a/src/main/java/tmltranslator/TMLSyntaxChecking.java
+++ b/src/main/java/tmltranslator/TMLSyntaxChecking.java
@@ -76,15 +76,15 @@ public class TMLSyntaxChecking {
 
     private ArrayList<TMLError> errors;
     private ArrayList<TMLError> warnings;
-    private TMLModeling tmlm;
-    private TMLMapping mapping;
+    private TMLModeling<?> tmlm;
+    private TMLMapping<?> mapping;
 
 
-    public TMLSyntaxChecking(TMLModeling _tmlm) {
+    public TMLSyntaxChecking(TMLModeling<?> _tmlm) {
         tmlm = _tmlm;
     }
 
-    public TMLSyntaxChecking(TMLMapping _mapping) {
+    public TMLSyntaxChecking(TMLMapping<?> _mapping) {
         mapping = _mapping;
         tmlm = mapping.getTMLModeling();
     }
diff --git a/src/main/java/tmltranslator/TMLTextSpecification.java b/src/main/java/tmltranslator/TMLTextSpecification.java
index 152569474906ba99fc9c9635bac20cc2b70ce48b..05c9119c8cbfbc39f8efca25c9d9c1f158dab0bb 100755
--- a/src/main/java/tmltranslator/TMLTextSpecification.java
+++ b/src/main/java/tmltranslator/TMLTextSpecification.java
@@ -57,7 +57,7 @@ import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Date;
 
-public class TMLTextSpecification {
+public class TMLTextSpecification<E> {
     public final static String CR = "\n";
     public final static String SP = " ";
     public final static String CR2 = "\n\n";
@@ -67,7 +67,7 @@ public class TMLTextSpecification {
     private String spec;
     private String title;
 
-    private TMLModeling tmlm;
+    private TMLModeling<E> tmlm;
     private ArrayList<TMLTXTError> errors;
     private ArrayList<TMLTXTError> warnings;
 
@@ -107,7 +107,7 @@ public class TMLTextSpecification {
         FileUtils.saveFile(path + filename, spec);
     }
 
-    public TMLModeling getTMLModeling() {
+    public TMLModeling<E> getTMLModeling() {
         return tmlm;
     }
 
@@ -180,7 +180,7 @@ public class TMLTextSpecification {
         return spec;
     }
 
-    public String toTextFormat(TMLModeling tmlm) {
+    public String toTextFormat(TMLModeling<E> tmlm) {
 	tmlm.removeForksAndJoins();
         tmlm.sortByName();
         spec = makeDeclarations(tmlm);
@@ -189,7 +189,7 @@ public class TMLTextSpecification {
         return spec;
     }
 
-    public String makeDeclarations(TMLModeling tmlm) {
+    public String makeDeclarations(TMLModeling<E> tmlm) {
         int i;
         String sb = "";
         sb += "// TML Application - FORMAT 0.1" + CR;
@@ -283,7 +283,7 @@ public class TMLTextSpecification {
 
     }
 
-    public String makeTasks(TMLModeling tmlm) {
+    public String makeTasks(TMLModeling<E> tmlm) {
         String sb = "";
         for(TMLTask task: tmlm.getTasks()) {
             sb += "TASK" + SP + task.getName() + CR;
@@ -519,7 +519,7 @@ public class TMLTextSpecification {
 
     public boolean makeTMLModeling(String _spec) {
         spec = _spec;
-        tmlm = new TMLModeling();
+        tmlm = new TMLModeling<>();
         errors = new ArrayList<TMLTXTError>();
         warnings = new ArrayList<TMLTXTError>();
 
diff --git a/src/main/java/tmltranslator/modelcompiler/TMLModelCompiler.java b/src/main/java/tmltranslator/modelcompiler/TMLModelCompiler.java
index 29130c07c37a97411ad2c465f0c6b1aeac747bf7..6ac81d068630c65456efa827f40a7c23ce90ead5 100755
--- a/src/main/java/tmltranslator/modelcompiler/TMLModelCompiler.java
+++ b/src/main/java/tmltranslator/modelcompiler/TMLModelCompiler.java
@@ -79,9 +79,9 @@ public class TMLModelCompiler	{
 	private String SC = ";";
 //	private String COLON = ",";
 
-	private TMLMapping tmap;
+	private TMLMapping<?> tmap;
 //	private TMLCP tmlcp;
-	private TMLModeling tmlm;
+	private TMLModeling<?> tmlm;
 	private TMLArchitecture tmla;
 	private String applicationName;
 	private StringBuffer mainFileString;
@@ -110,7 +110,7 @@ public class TMLModelCompiler	{
 
 	public JFrame frame; //Main Frame
 
-	public TMLModelCompiler( String _title, String _applicationName, JFrame _frame, List<TMLCommunicationPatternPanel> _tmlcpps, TMLMapping _tmap )	{
+	public TMLModelCompiler( String _title, String _applicationName, JFrame _frame, List<TMLCommunicationPatternPanel> _tmlcpps, TMLMapping<?> _tmap )	{
 		title = _title;
 		applicationName = _applicationName;
 		frame = _frame;
diff --git a/src/main/java/tmltranslator/modelcompiler/TMLModelCompilerParser.java b/src/main/java/tmltranslator/modelcompiler/TMLModelCompilerParser.java
index fc1fa24d8979e6933aa68bc729ceba6c65cd0479..880832805fada213429f7cb78289168058affda1 100755
--- a/src/main/java/tmltranslator/modelcompiler/TMLModelCompilerParser.java
+++ b/src/main/java/tmltranslator/modelcompiler/TMLModelCompilerParser.java
@@ -62,8 +62,8 @@ public class TMLModelCompilerParser {
 	public TMLActivityElement element;
 	private List<TMLModelCompilerError> errors;
 	//	private ArrayList<TMLTask> mappedTasks;
-	private TMLMapping tmap;
-	private TMLModeling tmlm;
+	private TMLMapping<?> tmap;
+	private TMLModeling<?> tmlm;
 		//private TMLArchitecture tmla;
 	private List<TMLCPLib> mappedCPLibs;
 
@@ -75,7 +75,7 @@ public class TMLModelCompilerParser {
     public String message;
 	public TMLTask task;
     
-    public TMLModelCompilerParser( TMLMapping _tmap, TMLModeling _tmlm, TMLArchitecture _tmla ) {
+    public TMLModelCompilerParser( TMLMapping<?> _tmap, TMLModeling<?> _tmlm, TMLArchitecture _tmla ) {
 			//mappedTasks = _mappedTasks;
 			errors = new ArrayList<TMLModelCompilerError>();
 			tmap = _tmap;
diff --git a/src/main/java/tmltranslator/toautomata/TML2AUT.java b/src/main/java/tmltranslator/toautomata/TML2AUT.java
index ed5a9a5bc4da5a324e80a799228c8c20a14931f6..38144f501be9ff45e1e70947424564a08f008b54 100755
--- a/src/main/java/tmltranslator/toautomata/TML2AUT.java
+++ b/src/main/java/tmltranslator/toautomata/TML2AUT.java
@@ -62,7 +62,7 @@ public class TML2AUT {
     
     //private static int gateId;
     
-    private TMLModeling tmlmodeling;
+    private TMLModeling<?> tmlmodeling;
     private LinkedList<Automata> automatas;
     
     //private boolean debug;
@@ -72,7 +72,7 @@ public class TML2AUT {
     public static String IMM = "imm__";
     
     
-    public TML2AUT(TMLModeling _tmlmodeling) {
+    public TML2AUT(TMLModeling<?> _tmlmodeling) {
         tmlmodeling = _tmlmodeling;
     }
     
diff --git a/src/main/java/tmltranslator/toautomata/TML2AUTviaLOTOS.java b/src/main/java/tmltranslator/toautomata/TML2AUTviaLOTOS.java
index 4e52fa7bcb37733d8954f6f54cf77e8328bbc7b8..2986cf0c8a93fc077ebb4b9ab228f103456e2942 100755
--- a/src/main/java/tmltranslator/toautomata/TML2AUTviaLOTOS.java
+++ b/src/main/java/tmltranslator/toautomata/TML2AUTviaLOTOS.java
@@ -62,7 +62,7 @@ public class TML2AUTviaLOTOS {
     
     //private static int gateId;
     
-    private TMLModeling tmlmodeling;
+    private TMLModeling<?> tmlmodeling;
     private TURTLEModeling tm;
     private List<Automata> automatas;
     private List<String> specs; /* name, then spec, then name, then spec. All specs are in LOTOS !*/
@@ -74,7 +74,7 @@ public class TML2AUTviaLOTOS {
     public static String IMM = "imm__";
     
     
-    public TML2AUTviaLOTOS(TMLModeling _tmlmodeling, TURTLEModeling _tm) {
+    public TML2AUTviaLOTOS(TMLModeling<?> _tmlmodeling, TURTLEModeling _tm) {
         tmlmodeling = _tmlmodeling;
         tm = _tm;
         if (_tm == null) {
diff --git a/src/main/java/tmltranslator/toavatar/TML2Avatar.java b/src/main/java/tmltranslator/toavatar/TML2Avatar.java
index 902cb85a2ddf8c16d1706f43c5ccf4a7152db995..461e5a58f6e3f65717ef20dd9cd843ca5aaf3e9b 100644
--- a/src/main/java/tmltranslator/toavatar/TML2Avatar.java
+++ b/src/main/java/tmltranslator/toavatar/TML2Avatar.java
@@ -58,8 +58,8 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 public class TML2Avatar {
-	private TMLMapping tmlmap;
-	private TMLModeling tmlmodel;
+	private TMLMapping<?> tmlmap;
+	private TMLModeling<?> tmlmodel;
 
 	private Map<SecurityPattern, List<AvatarAttribute>> symKeys = new HashMap<SecurityPattern, List<AvatarAttribute>>();
 	private Map<SecurityPattern, List<AvatarAttribute>> pubKeys = new HashMap<SecurityPattern, List<AvatarAttribute>>();
@@ -90,7 +90,7 @@ public class TML2Avatar {
 	List<String> allStates;
 	boolean mc = false;
 	boolean security=false;
-	public TML2Avatar(TMLMapping tmlmap, boolean modelcheck, boolean sec) {
+	public TML2Avatar(TMLMapping<?> tmlmap, boolean modelcheck, boolean sec) {
 		this.tmlmap = tmlmap;
 	this.tmlmodel = tmlmap.getTMLModeling();
 	allStates = new ArrayList<String>();
diff --git a/src/main/java/tmltranslator/tomappingsystemc/TML2MappingSystemC.java b/src/main/java/tmltranslator/tomappingsystemc/TML2MappingSystemC.java
index 51fa8f598a2fa45d11ca1362b67a4de168705eec..4058e375cf94805048fd2b36d1d0f1df409c003f 100755
--- a/src/main/java/tmltranslator/tomappingsystemc/TML2MappingSystemC.java
+++ b/src/main/java/tmltranslator/tomappingsystemc/TML2MappingSystemC.java
@@ -68,8 +68,8 @@ public class TML2MappingSystemC {
 	
 	private final static int MAX_EVENT = 1024;
 
-	private TMLModeling tmlmodeling;
-	private TMLMapping tmlmapping;
+	private TMLModeling<?> tmlmodeling;
+	private TMLMapping<?> tmlmapping;
     
     private boolean debug;
     
@@ -78,7 +78,7 @@ public class TML2MappingSystemC {
 	
 	private ArrayList<MappedSystemCTask> tasks;
     
-	public TML2MappingSystemC(TMLModeling _tmlm) {
+	public TML2MappingSystemC(TMLModeling<?> _tmlm) {
 		tmlmodeling = _tmlm;
 		TMLArchitecture tmla = new TMLArchitecture();
 		HwCPU cpu = new HwCPU("cpu0");
@@ -90,7 +90,7 @@ public class TML2MappingSystemC {
 		cpu.execiTime = 1;
 		tmla.addHwNode(cpu);
 		
-		tmlmapping = new TMLMapping(tmlmodeling, tmla, false);
+		tmlmapping = new TMLMapping<>(tmlmodeling, tmla, false);
 		
 		Iterator<TMLTask> iterator = _tmlm.getTasks().listIterator();
         TMLTask t;
@@ -100,7 +100,7 @@ public class TML2MappingSystemC {
 		}
     }
 	
-    public TML2MappingSystemC(TMLMapping _tmlmapping) {
+    public TML2MappingSystemC(TMLMapping<?> _tmlmapping) {
         tmlmapping = _tmlmapping;
     }
     
diff --git a/src/main/java/tmltranslator/tomappingsystemc2/DiploSimulatorCodeGenerator.java b/src/main/java/tmltranslator/tomappingsystemc2/DiploSimulatorCodeGenerator.java
index 7c88f70d05b00bdad220027d275298d8e47b066a..a9b50ba00130a8ba4adc7e7f503dd2e45bd6928a 100644
--- a/src/main/java/tmltranslator/tomappingsystemc2/DiploSimulatorCodeGenerator.java
+++ b/src/main/java/tmltranslator/tomappingsystemc2/DiploSimulatorCodeGenerator.java
@@ -68,8 +68,8 @@ public class DiploSimulatorCodeGenerator implements IDiploSimulatorCodeGenerator
 
     private static final String SPACE = " ";
     
-    private TMLModeling tmlmodeling;
-    private TMLMapping tmlmapping;
+    private TMLModeling<?> tmlmodeling;
+    private TMLMapping<?> tmlmapping;
 
     private boolean debug;
     private boolean optimize;
@@ -83,7 +83,7 @@ public class DiploSimulatorCodeGenerator implements IDiploSimulatorCodeGenerator
     
     private final NamesGenerationHelper namesGen;
 
-    DiploSimulatorCodeGenerator(TMLModeling _tmlm) {
+    DiploSimulatorCodeGenerator(TMLModeling<?> _tmlm) {
     	this( _tmlm.getDefaultMapping() );
     	
     	tmlmodeling = _tmlm;
@@ -92,7 +92,7 @@ public class DiploSimulatorCodeGenerator implements IDiploSimulatorCodeGenerator
 //        tepeTranslator = new  SystemCTEPE(new ArrayList<TEPE>(), this);
     }
 
-    DiploSimulatorCodeGenerator(TMLMapping _tmlmapping) {
+    DiploSimulatorCodeGenerator(TMLMapping<?> _tmlmapping) {
 //        tmlmapping = _tmlmapping;
 //	tmlmapping.handleCPs();
 //	tmlmapping.removeForksAndJoins();
@@ -101,7 +101,7 @@ public class DiploSimulatorCodeGenerator implements IDiploSimulatorCodeGenerator
     	this( _tmlmapping, null, new ArrayList<TEPE>() );
     }
 
-    DiploSimulatorCodeGenerator(TMLModeling _tmlm, List<EBRDD> _ebrdds, List<TEPE> _tepes) {
+    DiploSimulatorCodeGenerator(TMLModeling<?> _tmlm, List<EBRDD> _ebrdds, List<TEPE> _tepes) {
     	this( _tmlm.getDefaultMapping(), _ebrdds, _tepes );
         
     	tmlmodeling = _tmlm;
@@ -109,7 +109,7 @@ public class DiploSimulatorCodeGenerator implements IDiploSimulatorCodeGenerator
 //        tepeTranslator = new  SystemCTEPE(_tepes, this);
     }
 
-    DiploSimulatorCodeGenerator(TMLMapping _tmlmapping, List<EBRDD> _ebrdds, List<TEPE> _tepes) {
+    DiploSimulatorCodeGenerator(TMLMapping<?> _tmlmapping, List<EBRDD> _ebrdds, List<TEPE> _tepes) {
         tmlmapping = _tmlmapping;
 
         if ( tmlmapping == null ) {
diff --git a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
index f3a5aa774ef06afa35589f42dbebc1debfdbd818..6b00802882e78781a5f464a21aca8bddf0a94f78 100644
--- a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
+++ b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
@@ -64,7 +64,7 @@ public class MappedSystemCTask {
     private List<TMLChannel> channels;
     private List<TMLEvent> events;
     private List<TMLRequest> requests;
-    private TMLMapping tmlmapping;
+    private TMLMapping<?> tmlmapping;
     private int commentNum;
     private boolean debug;
    // private boolean optimize;
@@ -82,7 +82,7 @@ public class MappedSystemCTask {
 //    private final static String EF = "}";
 
 
-    public MappedSystemCTask(TMLTask _task, List<TMLChannel> _channels, List<TMLEvent> _events, List<TMLRequest> _requests, TMLMapping _tmlmapping, Set<Integer> _depChannels) {
+    public MappedSystemCTask(TMLTask _task, List<TMLChannel> _channels, List<TMLEvent> _events, List<TMLRequest> _requests, TMLMapping<?> _tmlmapping, Set<Integer> _depChannels) {
         task = _task;
         channels = _channels;
         events = _events;
diff --git a/src/main/java/tmltranslator/tomappingsystemc2/SystemCEBRDD.java b/src/main/java/tmltranslator/tomappingsystemc2/SystemCEBRDD.java
index 6ca05877e67aaedb5784c8379f859b5db68cc379..953cf4dd097ac2a51d8e03e4d26b1ff4affec65a 100644
--- a/src/main/java/tmltranslator/tomappingsystemc2/SystemCEBRDD.java
+++ b/src/main/java/tmltranslator/tomappingsystemc2/SystemCEBRDD.java
@@ -61,8 +61,8 @@ public class SystemCEBRDD {
 	private String ETclasses;
 	//, ETdeclare, ETInit;
 	private boolean debug;
-	TMLModeling tmlmodeling;
-	TMLMapping tmlmapping;
+	TMLModeling<?> tmlmodeling;
+	TMLMapping<?> tmlmapping;
 	
 	private final static String [] events = {"transexecuted", "cmdentered", "cmdstarted", "cmdexecuted", "cmdfinished", "taskstarted", "taskfinished", "readtrans", "writetrans", "simstarted", "simfinished"};
 	private final static String DOTH = ".h";
@@ -75,7 +75,7 @@ public class SystemCEBRDD {
 	private final static String EF = "}";
 	
 	
-	public SystemCEBRDD(EBRDD _ebrdd, TMLModeling _tmlmodeling, TMLMapping _tmlmapping) {
+	public SystemCEBRDD(EBRDD _ebrdd, TMLModeling<?> _tmlmodeling, TMLMapping<?> _tmlmapping) {
         	ebrdd = _ebrdd;
         	reference = ebrdd.getName();
 		cppcode = "";
diff --git a/src/main/java/tmltranslator/tomappingsystemc2/TML2MappingSystemC.java b/src/main/java/tmltranslator/tomappingsystemc2/TML2MappingSystemC.java
index 2646ce7ffa05f2c711307affab614191f8460fef..27f81757cc151f1d41d382ffe1676d38cd46770a 100644
--- a/src/main/java/tmltranslator/tomappingsystemc2/TML2MappingSystemC.java
+++ b/src/main/java/tmltranslator/tomappingsystemc2/TML2MappingSystemC.java
@@ -66,8 +66,8 @@ public class TML2MappingSystemC implements IDiploSimulatorCodeGenerator {
   //  private final static String EF = "}";
     //private final static int MAX_EVENT = 1024;
 
-    private TMLModeling tmlmodeling;
-    private TMLMapping tmlmapping;
+    private TMLModeling<?> tmlmodeling;
+    private TMLMapping<?> tmlmapping;
 
     private boolean debug;
     private boolean optimize;
@@ -79,14 +79,14 @@ public class TML2MappingSystemC implements IDiploSimulatorCodeGenerator {
     SystemCTEPE tepeTranslator;
     //private ArrayList<SystemCEBRDD> systemCebrdds = new ArrayList<SystemCEBRDD>();
 
-    public TML2MappingSystemC(TMLModeling _tmlm) {
+    public TML2MappingSystemC(TMLModeling<?> _tmlm) {
         tmlmodeling = _tmlm;
 	tmlmodeling.removeForksAndJoins();
         tmlmapping = tmlmodeling.getDefaultMapping();
         tepeTranslator = new  SystemCTEPE(new ArrayList<TEPE>(), this);
     }
 
-    public TML2MappingSystemC(TMLMapping _tmlmapping) {
+    public TML2MappingSystemC(TMLMapping<?> _tmlmapping) {
         tmlmapping = _tmlmapping;
 	tmlmapping.handleCPs();
 	tmlmapping.removeForksAndJoins();
@@ -94,7 +94,7 @@ public class TML2MappingSystemC implements IDiploSimulatorCodeGenerator {
         tepeTranslator = new  SystemCTEPE(new ArrayList<TEPE>(), this);
     }
 
-    public TML2MappingSystemC(TMLModeling _tmlm, List<EBRDD> _ebrdds, List<TEPE> _tepes) {
+    public TML2MappingSystemC(TMLModeling<?> _tmlm, List<EBRDD> _ebrdds, List<TEPE> _tepes) {
         tmlmodeling = _tmlm;
         //ebrdds = _ebrdds;
         tmlmapping = tmlmodeling.getDefaultMapping();
@@ -102,7 +102,7 @@ public class TML2MappingSystemC implements IDiploSimulatorCodeGenerator {
         //tepeTranslator.generateTEPEs();
     }
 
-    public TML2MappingSystemC(TMLMapping _tmlmapping, List<EBRDD> _ebrdds, List<TEPE> _tepes) {
+    public TML2MappingSystemC(TMLMapping<?> _tmlmapping, List<EBRDD> _ebrdds, List<TEPE> _tepes) {
         tmlmapping = _tmlmapping;
 	tmlmapping.handleCPs();
 	tmlmapping.removeForksAndJoins();
diff --git a/src/main/java/tmltranslator/toproverif/TML2ProVerif.java b/src/main/java/tmltranslator/toproverif/TML2ProVerif.java
index 98654a6bf877e427bb796b44850daa480c27278c..d9e3f0a25d69530ae86f20a0556c5ddd03c02d7e 100644
--- a/src/main/java/tmltranslator/toproverif/TML2ProVerif.java
+++ b/src/main/java/tmltranslator/toproverif/TML2ProVerif.java
@@ -98,14 +98,14 @@ public class TML2ProVerif {
     private final static Integer channelPrivate = 1;
     private final static Integer channelUnreachable = 2;
     private ProVerifSpec spec;
-    private TMLMapping tmlmap;
-    private TMLModeling tmlmodel;
+    private TMLMapping<?> tmlmap;
+    private TMLModeling<?> tmlmodel;
    // private boolean stateReachability;
 
    // private Vector warnings;
     public Map<String, Integer> channelMap = new HashMap<String,Integer>();
 
-    public TML2ProVerif(TMLMapping _tmlmap) {
+    public TML2ProVerif(TMLMapping<?> _tmlmap) {
         this.tmlmap = _tmlmap;
         this.spec = null;
         this.tmlmodel= tmlmap.getTMLModeling();
@@ -247,7 +247,7 @@ public class TML2ProVerif {
 //        return this.warnings;
 //    }
 
-    public TMLMapping getMapping () {
+    public TMLMapping<?> getMapping () {
         return this.tmlmap;
     }
 
diff --git a/src/main/java/tmltranslator/tosystemc/TML2SystemC.java b/src/main/java/tmltranslator/tosystemc/TML2SystemC.java
index 0c237d979cf8520bbf1d5f3d37c5e9ba426dd068..9883192f3d5e582642898731574be40f52d12d2e 100755
--- a/src/main/java/tmltranslator/tosystemc/TML2SystemC.java
+++ b/src/main/java/tmltranslator/tosystemc/TML2SystemC.java
@@ -59,7 +59,7 @@ public class TML2SystemC {
     
     //private static int gateId;
 
-    private TMLModeling tmlmodeling;
+    private TMLModeling<?> tmlmodeling;
     private List<SystemCTask> tasks;
     
   //  private boolean debug;
@@ -76,7 +76,7 @@ public class TML2SystemC {
     private String endClass, mainFunction;
 
     
-    public TML2SystemC(TMLModeling _tmlmodeling) {
+    public TML2SystemC(TMLModeling<?> _tmlmodeling) {
         tmlmodeling = _tmlmodeling;
     }
     
diff --git a/src/main/java/tmltranslator/toturtle/Mapping2TIF.java b/src/main/java/tmltranslator/toturtle/Mapping2TIF.java
index c9e07474778aaa0dc57ba13ff9a4b2ec73575ada..c349e9042d16ad050f7987b5cbcea9d7f9c77460 100755
--- a/src/main/java/tmltranslator/toturtle/Mapping2TIF.java
+++ b/src/main/java/tmltranslator/toturtle/Mapping2TIF.java
@@ -49,8 +49,6 @@ import myutil.TraceManager;
 import tmltranslator.*;
 import translator.*;
 import translator.CheckingError;
-import ui.TGComponent;
-import ui.UICheckingError;
 
 import java.util.ArrayList;
 import java.util.LinkedList;
@@ -70,8 +68,8 @@ public class Mapping2TIF {
 //    private static String nameRequest = "Request__";
 
 
-    private TMLMapping tmlmapping;
-    private TMLModeling tmlmodeling;
+    private TMLMapping<?> tmlmapping;
+    private TMLModeling<?> tmlmodeling;
     private TMLArchitecture tmlarchitecture;
 
     private TURTLEModeling tm;
@@ -113,7 +111,7 @@ public class Mapping2TIF {
     private ADJunction beforeCommManager;
     private ADJunction afterCommManager;
 
-    public Mapping2TIF(TMLMapping _tmlmapping) {
+    public Mapping2TIF(TMLMapping<?> _tmlmapping) {
         tmlmapping = _tmlmapping;
         tmlmodeling = tmlmapping.getTMLModeling();
         tmlarchitecture = tmlmapping.getTMLArchitecture();
@@ -3246,18 +3244,18 @@ public class Mapping2TIF {
 
             if (((param1 = paramAnalyzer(action1, tcpu)) == null)) {
                 TraceManager.addDev("Param Error");
-                UICheckingError error = new UICheckingError(CheckingError.BEHAVIOR_ERROR, "Parameter undeclared in loop " + action1);
+                TMLCheckingError error = new TMLCheckingError(CheckingError.BEHAVIOR_ERROR, "Parameter undeclared in loop " + action1);
                 error.setTClass(tcpu);
-                error.setTGComponent((TGComponent)(element.getReferenceObject()));
-                checkingErrors.add(error);
+                error.setTMLActivityElement(element);
+                this.checkingErrors.add(error);
                 return makeCPUADTaskBehaviorComponent(tcpu, cpu, ad, stateChoice, endJunction, task, cpt, tasks, stateId, branchStateId, element.getNextElement(0));
             }
 
             if (((param3 = paramAnalyzer(action3, tcpu)) == null)) {
-                UICheckingError error = new UICheckingError(CheckingError.BEHAVIOR_ERROR, "Parameter undeclared in loop" + action3);
+                TMLCheckingError error = new TMLCheckingError(CheckingError.BEHAVIOR_ERROR, "Parameter undeclared in loop" + action3);
                 error.setTClass(tcpu);
-                error.setTGComponent((TGComponent)(element.getReferenceObject()));
-                checkingErrors.add(error);
+                error.setTMLActivityElement(element);
+                this.checkingErrors.add(error);
                 return makeCPUADTaskBehaviorComponent(tcpu, cpu, ad, stateChoice, endJunction, task, cpt, tasks, stateId, branchStateId, element.getNextElement(0));
             }
 
diff --git a/src/main/java/tmltranslator/toturtle/TML2TURTLE.java b/src/main/java/tmltranslator/toturtle/TML2TURTLE.java
index 814e37f0a4dfabeb8c556c6b1e0fcb41b821deae..8c00a52df069e63ce47226a9e89c4594f364be92 100755
--- a/src/main/java/tmltranslator/toturtle/TML2TURTLE.java
+++ b/src/main/java/tmltranslator/toturtle/TML2TURTLE.java
@@ -67,13 +67,13 @@ public class TML2TURTLE {
 
     private static String nameRequest = "Request__";
 
-    private TMLModeling tmlmodeling;
+    private TMLModeling<?> tmlmodeling;
     private TURTLEModeling tm;
     private Vector<CheckingError> checkingErrors;
 
     private int nbClass;
 
-    public TML2TURTLE(TMLModeling _tmlmodeling) {
+    public TML2TURTLE(TMLModeling<?> _tmlmodeling) {
         //System.out.println("New TURTLE modeling");
         tmlmodeling = _tmlmodeling;
     }
diff --git a/src/main/java/tmltranslator/touppaal/TML2UPPAAL.java b/src/main/java/tmltranslator/touppaal/TML2UPPAAL.java
index 849e44726559217c8e93826cba6ab3b3e88c6fae..356b913b866333fb72fefed307360c217f46a8d2 100755
--- a/src/main/java/tmltranslator/touppaal/TML2UPPAAL.java
+++ b/src/main/java/tmltranslator/touppaal/TML2UPPAAL.java
@@ -60,7 +60,7 @@ public class TML2UPPAAL {
 
     //private static int gateId;
 
-    private TMLModeling tmlmodeling;
+    private TMLModeling<?> tmlmodeling;
     private UPPAALSpec spec;
     private RelationTMLUPPAAL rtu;
     private UPPAALTemplate lossTemplate;
@@ -86,7 +86,7 @@ public class TML2UPPAAL {
     public static final int DEFAULT_INFINITE_FIFO_SIZE = 8;
 
 
-    public TML2UPPAAL(TMLModeling _tmlmodeling) {
+    public TML2UPPAAL(TMLModeling<?> _tmlmodeling) {
         tmlmodeling = _tmlmodeling;
         TraceManager.addDev("TML2UPPAAL");
     }
diff --git a/src/main/java/ui/AnalysisPanelTranslator.java b/src/main/java/ui/AnalysisPanelTranslator.java
index 1123e27fe43717d0c0c4efb671eb97bdea6f2063..75183d8302d29300be45ba79712b9e23c325a6ee 100755
--- a/src/main/java/ui/AnalysisPanelTranslator.java
+++ b/src/main/java/ui/AnalysisPanelTranslator.java
@@ -52,7 +52,6 @@ import sddescription.*;
 import translator.CheckingError;
 import ui.iod.*;
 import ui.sd.*;
-import ui.UICheckingError;
 
 import java.util.Iterator;
 import java.util.LinkedList;
diff --git a/src/main/java/ui/CorrespondanceTGElement.java b/src/main/java/ui/CorrespondanceTGElement.java
index 9e729ca2286d587b771d40d0eec548532968ffd7..b3dcd435388fee704c1191b6ee8cf89b605c261d 100755
--- a/src/main/java/ui/CorrespondanceTGElement.java
+++ b/src/main/java/ui/CorrespondanceTGElement.java
@@ -62,12 +62,13 @@ import tmltranslator.TMLActivityElement;
 import translator.ADComponent;
 import translator.TClass;
 import ui.cd.TCDTClass;
+import ui.util.CorrespondanceElement;
 
 import java.awt.*;
 import java.util.ArrayList;
 import java.util.Vector;
 
-public class CorrespondanceTGElement {
+public class CorrespondanceTGElement implements CorrespondanceElement<TGComponent> {
     private Vector<TGComponent> tg; //tgelement
     private Vector<String> names; //prename
     private Vector<Object> data; // turtle modeling elements
@@ -75,7 +76,7 @@ public class CorrespondanceTGElement {
                                //It is more natural than using indexes and easyer to use in a recursive context  
     
     public CorrespondanceTGElement() {
-        tg = new Vector<TGComponent>();
+        tg = new Vector<>();
         data = new Vector<Object>();
         names = new Vector<String>();
         panelNames=new Vector<String>();
@@ -92,7 +93,8 @@ public class CorrespondanceTGElement {
            data.addAll(ce.getData());
            panelNames.addAll(ce.getPanelNames());
     }
-    
+
+    @Override
     public void addCor(Object o, TGComponent tgc) {
         addCor(o, tgc, "");
         }
@@ -131,7 +133,7 @@ public class CorrespondanceTGElement {
     
     
     /*
-     * Returns the ADComponent coresponding to the first TGComponent founded named "name" 
+     * Returns the ADComponent coresponding to the first TGComponent founded named "name"
      *  @author Emil Salageanu
      */
     public ADComponent getADComponentByName(String name, String panelName)
@@ -474,7 +476,8 @@ public class CorrespondanceTGElement {
         return null;
     }
 	
-	public void useDIPLOIDs() {
+	@Override
+    public void useDIPLOIDs() {
 		ArrayList<TGComponent> list = new ArrayList<TGComponent>();
 		Object o0, o1;
 		DIPLOElement de;
diff --git a/src/main/java/ui/GNCModeling.java b/src/main/java/ui/GNCModeling.java
index 97a9616a6f4daac3ebd4019995232ea740121b35..e18bc585b3433e1c6df66aa7e95f33257c8ff6e8 100755
--- a/src/main/java/ui/GNCModeling.java
+++ b/src/main/java/ui/GNCModeling.java
@@ -51,7 +51,6 @@ import myutil.TreeCell;
 import nc.*;
 import translator.CheckingError;
 import ui.ncdd.*;
-import ui.UICheckingError;
 
 import java.util.ArrayList;
 import java.util.LinkedList;
diff --git a/src/main/java/ui/GTMLModeling.java b/src/main/java/ui/GTMLModeling.java
index 629af29562613868834c6f40ec40de6515c1ea50..0014aefdb1fe3cfe8fea069702e57a8ccb95f4bc 100755
--- a/src/main/java/ui/GTMLModeling.java
+++ b/src/main/java/ui/GTMLModeling.java
@@ -81,7 +81,7 @@ public class GTMLModeling  {
     private TMLDesignPanel tmldp;
     private TMLComponentDesignPanel tmlcdp;
     private TMLArchiPanel tmlap;
-    private TMLModeling tmlm;
+    private TMLModeling<TGComponent> tmlm;
     private List<CheckingError> checkingErrors, warnings;
     private List<? extends TGComponent> tasksToTakeIntoAccount;
     private List<? extends TGComponent> componentsToTakeIntoAccount;
@@ -93,7 +93,7 @@ public class GTMLModeling  {
     //private ArrayList<HwNode> nodesToTakeIntoAccount;
     private List<TGComponent> nodesToTakeIntoAccount;
 
-    private TMLMapping map;
+    private TMLMapping<TGComponent> map;
     private TMLArchitecture archi;
 
     //Attributes specific to Communication Patterns
@@ -142,7 +142,7 @@ public class GTMLModeling  {
         }
     }
 
-    public TMLModeling translateToTMLModeling(boolean _resetID) {
+    public TMLModeling<TGComponent> translateToTMLModeling(boolean _resetID) {
         return translateToTMLModeling(false, _resetID);
     }
 
@@ -150,8 +150,8 @@ public class GTMLModeling  {
         putPrefixName = _b;
     }
 
-    public TMLModeling translateToTMLModeling(boolean onlyTakenIntoAccount, boolean _resetID) {
-        tmlm = new TMLModeling(_resetID);
+    public TMLModeling<TGComponent> translateToTMLModeling(boolean onlyTakenIntoAccount, boolean _resetID) {
+        tmlm = new TMLModeling<>(_resetID);
         checkingErrors = new LinkedList<CheckingError> ();
         warnings = new LinkedList<CheckingError> ();
 
@@ -2338,11 +2338,11 @@ public class GTMLModeling  {
         }
     }
 
-    public TMLMapping translateToTMLMapping() {
+    public TMLMapping<TGComponent> translateToTMLMapping() {
 
-        tmlm = new TMLModeling(true);
+        tmlm = new TMLModeling<>(true);
         archi = new TMLArchitecture();  //filled by makeArchitecture
-        map = new TMLMapping(tmlm, archi, false);
+        map = new TMLMapping<>(tmlm, archi, false);
         map.tmlap = tmlap;
         checkingErrors = new LinkedList<CheckingError> ();
         warnings = new LinkedList<CheckingError> ();
@@ -3203,7 +3203,7 @@ public class GTMLModeling  {
         TraceManager.addDev("Nb of panels regular:" + panels.size() + " components" + cpanels.size());
 
         // For each panel, construct a TMLModeling
-        TMLModeling tmpm;
+        TMLModeling<TGComponent> tmpm;
         GTMLModeling gtml;
         String s;
         index = 0;
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index 679ec241b7833b3b42e621dde1975e4ff78bc872..61b61a942d5ff15be41e4dc02b1821c37ae61fe4 100755
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -168,9 +168,9 @@ public class GTURTLEModeling {
     private boolean optimizeAvatar;
     private int tmState; // 0:generated, 1: to be generated from mapping, 2: to be generated from TML modeling
 
-    private TMLModeling tmlm;
-    private TMLMapping artificialtmap;
-    private TMLMapping tmap;
+    private TMLModeling<TGComponent> tmlm;
+    private TMLMapping<TGComponent> artificialtmap;
+    private TMLMapping<TGComponent> tmap;
     private TMLCP tmlcp;
     private TML2Avatar t2a;
     private RequirementModeling rm;
@@ -496,7 +496,7 @@ public class GTURTLEModeling {
         //This branch is activated if doing the syntax check from the architecture panel.
         //It generates the text TML for the architecture and the application + mapping information
         if (tmap != null) {
-            TMLMappingTextSpecification spec = new TMLMappingTextSpecification( _title );
+            TMLMappingTextSpecification<TGComponent> spec = new TMLMappingTextSpecification<>( _title );
             spec.toTextFormat( tmap );    //TMLMapping
             try {
                 //TraceManager.addDev( "*** " + ConfigurationTTool.TMLCodeDirectory + File.separator );
@@ -554,7 +554,7 @@ public class GTURTLEModeling {
             //This branch is activated if doing the syntax check from the application panel.
             //It only generates the application TML text
             if( tmap == null ) {
-                TMLTextSpecification spec = new TMLTextSpecification( _title );
+                TMLTextSpecification<TGComponent> spec = new TMLTextSpecification<>( _title );
                 spec.toTextFormat( tmlm );        //TMLModeling
                 try {
                     spec.saveFile( ConfigurationTTool.TMLCodeDirectory + File.separator, "spec.tml" );
@@ -660,7 +660,7 @@ public class GTURTLEModeling {
         return overhead;
     }
 
-    public boolean channelAllowed(TMLMapping map, TMLChannel chan){
+    public boolean channelAllowed(TMLMapping<TGComponent> map, TMLChannel chan){
         TMLTask orig = chan.getOriginTask();
         TMLTask dest = chan.getDestinationTask();
         List<HwNode> path = getPath(map,orig, dest);
@@ -680,7 +680,7 @@ public class GTURTLEModeling {
         return true;
     }
 
-    public List<HwNode> getPath(TMLMapping map, TMLTask t1, TMLTask t2){
+    public List<HwNode> getPath(TMLMapping<TGComponent> map, TMLTask t1, TMLTask t2){
         HwNode node1 = map.getHwNodeOf(t1);
         HwNode node2 = map.getHwNodeOf(t2);
         List<HwNode> path = new ArrayList<HwNode>();
@@ -732,10 +732,10 @@ public class GTURTLEModeling {
         }
         return path;
     }
-    public TMLMapping drawFirewall(TMLMapping map){
+    public TMLMapping<TGComponent> drawFirewall(TMLMapping<TGComponent> map){
         System.out.println("DRAWING FIREWALL");
         TMLComponentDesignPanel tmlcdp = map.getTMLCDesignPanel();
-        TMLModeling tmlm = map.getTMLModeling();
+        TMLModeling<TGComponent> tmlm = map.getTMLModeling();
         TMLActivityDiagramPanel firewallADP = null;
         TMLComponentTaskDiagramPanel tcdp = tmlcdp.tmlctdp;
         if (TraceManager.devPolicy == TraceManager.TO_CONSOLE){
@@ -1927,7 +1927,7 @@ public class GTURTLEModeling {
 
     }
 
-    public TMLMapping autoSecure(MainGUI gui, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
+    public TMLMapping<TGComponent> autoSecure(MainGUI gui, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
         //TODO add more options
         //
         if (tmap==null){
@@ -1938,14 +1938,14 @@ public class GTURTLEModeling {
         TMLArchiPanel newarch = (TMLArchiPanel) gui.tabs.get(gui.tabs.size()-1);
         return autoSecure(gui, "enc", tmap,newarch,autoConf,autoWeakAuth, autoStrongAuth);
     }
-    public TMLMapping autoSecure(MainGUI gui, String name, TMLMapping map, TMLArchiPanel newarch){
+    public TMLMapping<TGComponent> autoSecure(MainGUI gui, String name, TMLMapping<TGComponent> map, TMLArchiPanel newarch){
         return autoSecure(gui,name,map,newarch,"100","0","100",true,false,false);
     }
-    public TMLMapping autoSecure(MainGUI gui, String name, TMLMapping map, TMLArchiPanel newarch, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
+    public TMLMapping<TGComponent> autoSecure(MainGUI gui, String name, TMLMapping<TGComponent> map, TMLArchiPanel newarch, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
         return autoSecure(gui,name,map,newarch,"100","0","100",autoConf,autoWeakAuth, autoStrongAuth);
     }
 
-    public TMLMapping autoSecure(MainGUI gui, String encComp, String overhead, String decComp){
+    public TMLMapping<TGComponent> autoSecure(MainGUI gui, String encComp, String overhead, String decComp){
         if (tmap==null){
             return null;
         }
@@ -1955,7 +1955,7 @@ public class GTURTLEModeling {
         return autoSecure(gui,"enc", tmap,newarch,encComp, overhead,decComp,true,false,false);
     }
 
-    public TMLMapping autoSecure(MainGUI gui, String encComp, String overhead, String decComp, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
+    public TMLMapping<TGComponent> autoSecure(MainGUI gui, String encComp, String overhead, String decComp, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
         if (tmap==null){
             return null;
         }
@@ -1964,11 +1964,11 @@ public class GTURTLEModeling {
         TMLArchiPanel newarch = (TMLArchiPanel) gui.tabs.get(gui.tabs.size()-1);
         return autoSecure(gui,"enc", tmap,newarch,encComp, overhead,decComp,autoConf,autoWeakAuth, autoStrongAuth);
     }
-    public TMLMapping autoSecure(MainGUI gui, String name, TMLMapping map, TMLArchiPanel newarch, String encComp, String overhead, String decComp){
+    public TMLMapping<TGComponent> autoSecure(MainGUI gui, String name, TMLMapping<TGComponent> map, TMLArchiPanel newarch, String encComp, String overhead, String decComp){
         return autoSecure(gui,name, tmap,newarch,encComp, overhead,decComp,true,false, false);
     }
 
-    public void proverifAnalysis(TMLMapping map,  ArrayList<String> nonAuthChans, ArrayList<String> nonSecChans){
+    public void proverifAnalysis(TMLMapping<TGComponent> map,  ArrayList<String> nonAuthChans, ArrayList<String> nonSecChans){
         if (map==null){
             TraceManager.addDev("No mapping");
             return;
@@ -2025,7 +2025,7 @@ public class GTURTLEModeling {
         }
     }
 
-    public TMLMapping autoSecure(MainGUI gui, String name, TMLMapping map, TMLArchiPanel newarch, String encComp, String overhead, String decComp, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
+    public TMLMapping<TGComponent> autoSecure(MainGUI gui, String name, TMLMapping<TGComponent> map, TMLArchiPanel newarch, String encComp, String overhead, String decComp, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
         HashMap<TMLTask, java.util.List<TMLTask>> toSecure = new HashMap<TMLTask, java.util.List<TMLTask>>();
         HashMap<TMLTask, java.util.List<TMLTask>> toSecureRev = new HashMap<TMLTask, java.util.List<TMLTask>>();
         HashMap<TMLTask, java.util.List<String>> secOutChannels = new HashMap<TMLTask, java.util.List<String>>();
@@ -2042,7 +2042,7 @@ public class GTURTLEModeling {
 
         proverifAnalysis(map, nonAuthChans, nonSecChans);
 
-        TMLModeling tmlmodel = map.getTMLModeling();
+        TMLModeling<TGComponent> tmlmodel = map.getTMLModeling();
         java.util.List<TMLChannel> channels = tmlmodel.getChannels();
         for (TMLChannel channel: channels){
             for (TMLCPrimitivePort p: channel.ports){
@@ -2603,7 +2603,7 @@ public class GTURTLEModeling {
             }
         }
         GTMLModeling gtm = new GTMLModeling(t, false);
-        TMLModeling newmodel = gtm.translateToTMLModeling(false,false);
+        TMLModeling<TGComponent> newmodel = gtm.translateToTMLModeling(false,false);
         for (TMLTask task:newmodel.getTasks()){
             task.setName(tabName+"_"+name+"__"+task.getName());
         }
@@ -2623,7 +2623,7 @@ public class GTURTLEModeling {
         map.setTMLModeling(newmodel);
         return map;
     }
-    public boolean securePath(TMLMapping map, TMLTask t1, TMLTask t2){
+    public boolean securePath(TMLMapping<TGComponent> map, TMLTask t1, TMLTask t2){
         //Check if a path between two tasks is secure
         boolean secure=true;
         java.util.List<HwLink> links = map.getTMLArchitecture().getHwLinks();
@@ -2698,7 +2698,7 @@ public class GTURTLEModeling {
         }
         java.util.List<HwLink> links = tmap.getArch().getHwLinks();
         //Find all Security Patterns, if they don't have an associated memory at encrypt and decrypt, map them
-        TMLModeling tmlm = tmap.getTMLModeling();
+        TMLModeling<TGComponent> tmlm = tmap.getTMLModeling();
         if (tmlm.securityTaskMap ==null){
             return;
         }
@@ -3474,17 +3474,17 @@ public class GTURTLEModeling {
         return tmState;
     }
 
-    public TMLModeling getTMLModeling() {
+    public TMLModeling<TGComponent> getTMLModeling() {
         return tmlm;
     }
     public TML2Avatar getTML2Avatar(){
         return t2a;
     }
-    public TMLMapping getArtificialTMLMapping() {
+    public TMLMapping<TGComponent> getArtificialTMLMapping() {
         return artificialtmap;
     }
 
-    public TMLMapping getTMLMapping() {
+    public TMLMapping<TGComponent> getTMLMapping() {
         return tmap;
     }
 
diff --git a/src/main/java/ui/TURTLEModelChecker.java b/src/main/java/ui/TURTLEModelChecker.java
index e2936d404077d16f3d73323a4ec32b8e6160166c..7aabe9eeaf49dce2db798f0cfd9626eea889c867 100755
--- a/src/main/java/ui/TURTLEModelChecker.java
+++ b/src/main/java/ui/TURTLEModelChecker.java
@@ -51,8 +51,6 @@ import compiler.tmlparser.TMLExprParser;
 import compiler.tmlparser.TokenMgrError;
 import myutil.TraceManager;
 import translator.*;
-import ui.CorrespondanceTGElement;
-import ui.TGComponent;
 
 import java.io.StringReader;
 import java.util.ArrayList;
diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
index bb017d648b81be7bad457d4f7db79d773fbfcae8..5eaa120e7ecf0612b48cc6e822da33be2c24601a 100755
--- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
+++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
@@ -217,7 +217,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
     public MouseHandler mouseHandler;
     public KeyListener keyHandler;
 
-    private TMLMapping tmap;
+    private TMLMapping<TGComponent> tmap;
     private int hashCode;
     private boolean hashOK = true;
 
@@ -232,7 +232,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
     private Map<String, List<String>> transTimes = new HashMap<String, List<String>>();
     private Vector<SimulationLatency> latencies = new Vector<SimulationLatency>();
     
-    public JFrameInteractiveSimulation(Frame _f, MainGUI _mgui, String _title, String _hostSystemC, String _pathExecute, TMLMapping _tmap, List<Point> _points) {
+    public JFrameInteractiveSimulation(Frame _f, MainGUI _mgui, String _title, String _hostSystemC, String _pathExecute, TMLMapping<TGComponent> _tmap, List<Point> _points) {
         super(_title);
 
         // f = _f;
diff --git a/src/main/java/ui/interactivesimulation/TaskTableModel.java b/src/main/java/ui/interactivesimulation/TaskTableModel.java
index 11a3a088ab18136b2542f5b5fe564b0e807d32b1..52364a9976f159ccb14a6c3e71ee7ee92f8af80e 100755
--- a/src/main/java/ui/interactivesimulation/TaskTableModel.java
+++ b/src/main/java/ui/interactivesimulation/TaskTableModel.java
@@ -48,19 +48,20 @@ package ui.interactivesimulation;
 
 import tmltranslator.TMLModeling;
 import tmltranslator.TMLTask;
+import ui.TGComponent;
 
 import javax.swing.table.AbstractTableModel;
 import java.util.Hashtable;
 
 public class TaskTableModel extends AbstractTableModel {
-	private TMLModeling tmlm;
+	private TMLModeling<TGComponent> tmlm;
 	private Hashtable <Integer, String> valueTable;
 	private Hashtable <Integer, Integer> rowTable;
 	
 	private int nbOfRows;
 	
 	//private String [] names;
-	public TaskTableModel(TMLModeling _tmlm, Hashtable<Integer, String> _valueTable, Hashtable <Integer, Integer> _rowTable) {
+	public TaskTableModel(TMLModeling<TGComponent> _tmlm, Hashtable<Integer, String> _valueTable, Hashtable <Integer, Integer> _rowTable) {
 		tmlm = _tmlm;
 		valueTable = _valueTable;
 		rowTable = _rowTable;
diff --git a/src/main/java/ui/interactivesimulation/TaskVariableTableModel.java b/src/main/java/ui/interactivesimulation/TaskVariableTableModel.java
index ab73931c3689fa4efe89f7f98c1bae4919064d95..6ed0f6bbcdd30d815a09a8f448ba390afa488c68 100755
--- a/src/main/java/ui/interactivesimulation/TaskVariableTableModel.java
+++ b/src/main/java/ui/interactivesimulation/TaskVariableTableModel.java
@@ -48,19 +48,20 @@ package ui.interactivesimulation;
 
 import tmltranslator.TMLModeling;
 import tmltranslator.TMLTask;
+import ui.TGComponent;
 
 import javax.swing.table.AbstractTableModel;
 import java.util.Hashtable;
 
 public class TaskVariableTableModel extends AbstractTableModel {
-    private TMLModeling tmlm;
+    private TMLModeling<TGComponent> tmlm;
     private Hashtable <Integer, String> valueTable;
     private Hashtable <Integer, Integer> rowTable;
 
     private int nbOfRows;
 
     //private String [] names;
-    public TaskVariableTableModel(TMLModeling _tmlm, Hashtable<Integer, String> _valueTable, Hashtable <Integer, Integer> _rowTable) {
+    public TaskVariableTableModel(TMLModeling<TGComponent> _tmlm, Hashtable<Integer, String> _valueTable, Hashtable <Integer, Integer> _rowTable) {
         tmlm = _tmlm;
         valueTable = _valueTable;
         rowTable = _rowTable;
diff --git a/src/main/java/ui/tree/JDiagramTree.java b/src/main/java/ui/tree/JDiagramTree.java
index 919bfbac6b0741159e99d3f9f9bdca7de6151a23..ded1a79cc0a7b3b3ec0724827abc128b7a36b102 100755
--- a/src/main/java/ui/tree/JDiagramTree.java
+++ b/src/main/java/ui/tree/JDiagramTree.java
@@ -354,6 +354,10 @@ public class JDiagramTree extends javax.swing.JTree implements ActionListener, M
                 mgui.selectTab(ce.getTClass().getName());
             } else if(ce.getRelation() != null) {
                 mgui.selectTab("Class diagram");
+            } else if (ce instanceof TMLCheckingError && ((TMLCheckingError) ce).getTMLActivityElement() != null) {
+                TGComponent tgc = (TGComponent) ((TMLCheckingError) ce).getTMLActivityElement().getReferenceObject();
+                tgc.getTDiagramPanel().highlightTGComponent(tgc);
+                mgui.selectTDiagramPanel(tgc.getTDiagramPanel());
             } else if (ce instanceof TMLCheckingError && ((TMLCheckingError) ce).getTMLTask() != null) {
                 mgui.selectTab(((TMLCheckingError) ce).getTMLTask().getName());
             }
diff --git a/src/main/java/ui/util/CorrespondanceElement.java b/src/main/java/ui/util/CorrespondanceElement.java
new file mode 100644
index 0000000000000000000000000000000000000000..318bdd5e734ff74fe6abe69ee4059326f3a0a961
--- /dev/null
+++ b/src/main/java/ui/util/CorrespondanceElement.java
@@ -0,0 +1,50 @@
+/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+
+ * ludovic.apvrille AT enst.fr
+ *
+ * This software is a computer program whose purpose is to allow the
+ * edition of TURTLE analysis, design and deployment diagrams, to
+ * allow the generation of RT-LOTOS or Java code from this diagram,
+ * and at last to allow the analysis of formal validation traces
+ * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+ * from INRIA Rhone-Alpes.
+ *
+ * This software is governed by the CeCILL  license under French law and
+ * abiding by the rules of distribution of free software.  You can  use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ *
+ * As a counterpart to the access to the source code and  rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty  and the software's author,  the holder of the
+ * economic rights,  and the successive licensors  have only  limited
+ * liability.
+ *
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading,  using,  modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean  that it is complicated to manipulate,  and  that  also
+ * therefore means  that it is reserved for developers  and  experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and,  more generally, to use and operate it in the
+ * same conditions as regards security.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ */
+
+package ui.util;
+
+/**
+ * Interface CorrespondanceElement
+ * Creation: 13/06/2017
+ * @version 1.0 13/06/2017
+ * @author Florian LUGOU
+ */
+public interface CorrespondanceElement<E> {
+    void addCor(Object o, E tgc);
+    void useDIPLOIDs();
+}
\ No newline at end of file
diff --git a/tmltranslator/build.gradle b/tmltranslator/build.gradle
index 0f46f2e6380024b2a461055f01018fe4a760a0e4..8d96490753cfcce4deb8de9dd38e0be188cfe27e 100644
--- a/tmltranslator/build.gradle
+++ b/tmltranslator/build.gradle
@@ -4,28 +4,20 @@ apply plugin: 'application'
 sourceSets {
     main {
         java {
-            srcDir "${rootProject.absPath}/src/main/java/myutil"
-            srcDir "${rootProject.absPath}/src/main/java/ui/util"
-            srcDir "${rootProject.absPath}/src/main/java/translator"
-            exclude "tojava/**"
-            exclude "tosimujava/**"
-            srcDir "${rootProject.absPath}/src/main/java/tpndescription"
-            srcDir "${rootProject.absPath}/src/main/java/uppaaldesc"
-            exclude "tmltouppaal/**"
-            srcDir "${rootProject.absPath}/src/main/java/tmltranslator"
-            exclude "toautomata/**"
-            exclude "toavatar/**"
-            exclude "tomappingsystemc/**"
-            exclude "toproverif/**"
-            exclude "tosystemc/**"
+            srcDir "${rootProject.absPath}/src/main/java"
         }
     }
 }
 
 dependencies {
+    compileOnly name: 'opencloud'
+    compileOnly name: 'JavaPlot'
+    compileOnly name: 'derbynet'
+    compileOnly name: 'commons-codec-1.10'
+    compileOnly name: 'commons-io-2.5-javadoc'
     compileOnly name: 'commons-io-2.5'
     compileOnly name: 'jsoup-1.8.1'
-    compileOnly name: 'commons-codec-1.10'
+    compileOnly name: 'gs-core-1.3'
 }
 
 jar {
diff --git a/tmltranslator/src/main/java/TMLTranslator.java b/tmltranslator/src/main/java/TMLTranslator.java
index 47a203dc5ee2416d40ea50573861a7ce4754b6fa..5acc1d65eb26870f0a87ecc584b604c25aed7ecb 100755
--- a/tmltranslator/src/main/java/TMLTranslator.java
+++ b/tmltranslator/src/main/java/TMLTranslator.java
@@ -1,4 +1,4 @@
-/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea Enrici
+/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea Enrici
 
    ludovic.apvrille AT telecom-paritech.fr
    andrea.enrici AT telecom-paristech.fr
@@ -35,18 +35,15 @@
 
    The fact that you are presently reading this means that you have had
    knowledge of the CeCILL license and that you accept its terms.
-
-   /**
-   * Class TIFTranslator
-   * Linecommand application for translating TIF to other languages
-   * Creation: 29/06/2007
-   * @version 1.1 30/05/2014
-   * @author Ludovic APVRILLE, Andrea ENRICI
-   * @see
    */
 
 import myutil.FileUtils;
-import tmltranslator.*;
+import tmltranslator.TMLError;
+import tmltranslator.TMLMapping;
+import tmltranslator.TMLMappingTextSpecification;
+import tmltranslator.TMLModeling;
+import tmltranslator.TMLSyntaxChecking;
+import tmltranslator.TMLTextSpecification;
 import tmltranslator.tomappingsystemc2.DiploSimulatorFactory;
 import tmltranslator.tomappingsystemc2.IDiploSimulatorCodeGenerator;
 import tmltranslator.toturtle.Mapping2TIF;
@@ -59,6 +56,13 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.util.List;
 
+/**
+ * Class TIFTranslator
+ * Linecommand application for translating TIF to other languages
+ * Creation: 29/06/2007
+ * @version 1.1 30/05/2014
+ * @author Ludovic APVRILLE, Andrea ENRICI
+ */
 public class TMLTranslator  {
     // 0 -> LOTOS
     // 1 -> UPPAAL
@@ -67,19 +71,18 @@ public class TMLTranslator  {
     // 4 -> TML
     // 5 -> Systemc3
 
-    public static int conversionType;
-    public static File inputFile;
-    public static File outputFile;
-    public static String outputFileName;
-    public static String inputData;
-    public static String outputData;
-    public static TMLModeling tmlm;
-    public static TMLMapping tmap;
-    public static boolean debug = false;
-    public static boolean optimize = false;
+    private static int conversionType;
+    private static File outputFile;
+    private static String outputFileName;
+    private static String inputData;
+    private static String outputData;
+    private static TMLModeling<Object> tmlm;
+    private static TMLMapping<Object> tmap;
+    private static boolean debug = false;
+    private static boolean optimize = false;
 
 
-    public static void printCopyright() {
+    private static void printCopyright() {
         System.out.println("TMLTranslator: (C) GET/ENST, Ludovic APVRILLE, Andrea ENRICI\n{ludovic.apvrille, andrea.enrici}@telecom-paristech.fr");
         System.out.println("TMLTranslator is released under a CECILL License. See http://www.cecill.info/index.en.html");
         System.out.println("For more information on TURTLE related technologies, please consult http://ttool.telecom-paristech.fr/");
@@ -87,7 +90,7 @@ public class TMLTranslator  {
         System.out.println("Enjoy!!!\n");
     }
 
-    public static void printUsage() {
+    private static void printUsage() {
         System.out.println("TMLTranlator: usage");
         System.out.println("TMLTranlator <options> <language> <inputfile> [<outputfile> or <outputdirectory>]");
         System.out.println("<options> are optional. There might be : -debug or -optimize");
@@ -98,35 +101,20 @@ public class TMLTranslator  {
         System.out.println("<outputfile> or <outputdirectory> should be writeable");
     }
 
-    public static boolean checkArgs(String [] args) {
+    private static boolean checkArgs(String [] args) {
         return !(args.length < 3);
     }
 
-    public static boolean hasDebug(String [] args) {
-        if (args[0].equals("-debug")) {
-            return true;
-        }
-
-        if (args[1].equals("-debug")) {
-            return true;
-        }
-
-        return false;
+    private static boolean hasDebug(String [] args) {
+        return args[0].equals("-debug") || args[1].equals("-debug");
     }
 
-    public static boolean hasOptimize(String [] args) {
-        if (args[0].equals("-optimize")) {
-            return true;
-        }
-
-        if (args[1].equals("-optimize")) {
-            return true;
-        }
+    private static boolean hasOptimize(String[] args) {
+        return args[0].equals("-optimize") || args[1].equals("-optimize");
 
-        return false;
     }
 
-    public static boolean analyseArgs(String [] args) {
+    private static boolean analyseArgs(String[] args) {
         System.out.println("Converting to " + args[0]);
 
         if (args[0].toUpperCase().equals("LOTOS")) {
@@ -145,9 +133,9 @@ public class TMLTranslator  {
         return true;
     }
 
-    public static boolean prepareFiles(String args[]) {
+    private static boolean prepareFiles(String args[]) {
 
-        inputFile = new File(args[1]);
+        File inputFile = new File(args[1]);
         outputFile = new File(args[2]);
         outputFileName = args[2];
         try {
@@ -172,16 +160,16 @@ public class TMLTranslator  {
         return true;
     }
 
-    public static boolean checkSyntax(TMLSyntaxChecking syntax) {
+    private static boolean checkSyntax(TMLSyntaxChecking syntax) {
         System.out.println("Syntax checking phase");
         syntax.checkSyntax();
         return (syntax.hasErrors() == 0);
     }
 
-    public static boolean loadMapping(String title, String path) {
-        boolean ret = false;
+    private static boolean loadMapping(String title, String path) {
+        boolean ret;
         //System.out.println("load");
-        TMLMappingTextSpecification spec = new TMLMappingTextSpecification(title);
+        TMLMappingTextSpecification<Object> spec = new TMLMappingTextSpecification<>(title);
         ret = spec.makeTMLMapping(inputData, path);
         System.out.println("load ended");
         List<TMLError> warnings;
@@ -224,11 +212,11 @@ public class TMLTranslator  {
         return ret;
     }
 
-    public static boolean loadTML(String title) {
-        boolean ret = false;
+    private static boolean loadTML(String title) {
+        boolean ret;
         List<TMLError> warnings;
         //System.out.println("load");
-        TMLTextSpecification spec = new TMLTextSpecification(title, true);
+        TMLTextSpecification<Object> spec = new TMLTextSpecification<>(title, true);
         ret = spec.makeTMLModeling(inputData);
         //System.out.println("load ended");
         tmlm = spec.getTMLModeling();
@@ -261,7 +249,7 @@ public class TMLTranslator  {
         return ret;
     }
 
-    public static boolean convertToLOTOSFromMapping() {
+    private static boolean convertToLOTOSFromMapping() {
         Mapping2TIF m2tif = new Mapping2TIF(tmap);
         m2tif.setShowSampleChannels(false);
         m2tif.setShowChannels(true);
@@ -296,7 +284,7 @@ public class TMLTranslator  {
         return true;
     }
 
-    public static boolean convertToLOTOS() {
+    private static boolean convertToLOTOS() {
         TML2TURTLE totif = new TML2TURTLE(tmlm);
         TURTLEModeling tm = totif.generateTURTLEModeling();
         TURTLETranslator tt = new TURTLETranslator(tm);
@@ -312,7 +300,7 @@ public class TMLTranslator  {
         return true;
     }
 
-    public static boolean convertToUPPAAL() {
+    private static boolean convertToUPPAAL() {
         TML2UPPAAL toup = new TML2UPPAAL(tmlm);
         toup.generateUPPAAL(debug);
         try {
@@ -324,7 +312,7 @@ public class TMLTranslator  {
         return true;
     }
 
-    public static boolean convertToSystemC() {
+    private static boolean convertToSystemC() {
         tmltranslator.tomappingsystemc.TML2MappingSystemC map;
         if (tmap == null) {
             map = new tmltranslator.tomappingsystemc.TML2MappingSystemC(tmlm);
@@ -342,7 +330,7 @@ public class TMLTranslator  {
         return true;
     }
 
-    public static boolean convertToSystemC2() {
+    private static boolean convertToSystemC2() {
         //System.out.println("Converting to SystemC2 ... yo!");
         final IDiploSimulatorCodeGenerator map;
 //        tmltranslator.tomappingsystemc2.TML2MappingSystemC map;
@@ -390,10 +378,10 @@ public class TMLTranslator  {
         return true;
 	}*/
 
-    public static boolean convertToTML() {
+    private static boolean convertToTML() {
 
         if (tmap == null) {
-            TMLTextSpecification tspec = new TMLTextSpecification("spec");
+            TMLTextSpecification<Object> tspec = new TMLTextSpecification<>("spec");
             tspec.toTextFormat(tmlm);
             try {
                 tspec.saveFile(outputFileName, "spec");
@@ -402,7 +390,7 @@ public class TMLTranslator  {
                 return false;
             }
         } else {
-            TMLMappingTextSpecification mapspec = new TMLMappingTextSpecification("spec");
+            TMLMappingTextSpecification<Object> mapspec = new TMLMappingTextSpecification<>("spec");
             mapspec.toTextFormat(tmap);
             try {
                 mapspec.saveFile(outputFileName, "spec");
@@ -414,7 +402,7 @@ public class TMLTranslator  {
         return true;
     }
 
-    public static boolean saveData() {
+    private static boolean saveData() {
         try {
             FileOutputStream fos = new FileOutputStream(outputFile);
             fos.write(outputData.getBytes());
@@ -449,9 +437,7 @@ public class TMLTranslator  {
         if (nbOfOptions > 0) {
             debug = true;
             tmp = new String[args.length - nbOfOptions];
-            for(int i=nbOfOptions; i<args.length; i++) {
-                tmp[i-nbOfOptions] = args[i];
-            }
+            System.arraycopy(args, nbOfOptions, tmp, 0, args.length - nbOfOptions);
             args = tmp;
         }
 
@@ -525,11 +511,11 @@ public class TMLTranslator  {
 
         System.out.println("Conversion done");
 
-        /*if (!saveData()) {
+        if (!saveData()) {
           return;
-          }*/
+        }
 
-        //System.out.println("Specification written in " + outputFile.getName() + ": " + outputData.length() + " bytes");
+        System.out.println("Specification written in " + outputFile.getName() + ": " + outputData.length() + " bytes");
 
     }