diff --git a/build.txt b/build.txt
index 96acf1ca648686c9ca371eecbf7c58ffbf119045..5153042c419a16400f92795a181d8fdd025f7b63 100644
--- a/build.txt
+++ b/build.txt
@@ -1 +1 @@
-14610
\ No newline at end of file
+14618
\ No newline at end of file
diff --git a/doc/logo/ttool_transparency.png b/doc/logo/ttool_transparency.png
new file mode 100644
index 0000000000000000000000000000000000000000..9358bf9525ecfb441e4c21af7d004c00d9cd49ea
Binary files /dev/null and b/doc/logo/ttool_transparency.png differ
diff --git a/graphminimize/build.gradle b/graphminimize/build.gradle
index a96b2cdc43c3cae5c622a5e80da005703375b941..b9cad6811c5ae4b5dda2698570b2abf1d894f3c2 100644
--- a/graphminimize/build.gradle
+++ b/graphminimize/build.gradle
@@ -28,7 +28,7 @@ dependencies {
     compileOnly name: 'commons-codec-1.10'
     compileOnly name: 'jsoup-1.8.1'
     compileOnly name: 'jautomata-core'
-    compileOnly name: 'jna-3.3.0'
+    compileOnly name: 'jna-5.13.0'
     compileOnly name: 'commons-math3-3.6.1'
     compileOnly name: 'jfreechart-1.6.0'
     implementation name: 'batik-all-1.14'
diff --git a/graphshow/build.gradle b/graphshow/build.gradle
index 7cfae83b48a64b0591b6e4b947865319d94e9e6a..c80177d798c5eff5757bc76189a3af0fd5e03b39 100644
--- a/graphshow/build.gradle
+++ b/graphshow/build.gradle
@@ -23,7 +23,7 @@ dependencies {
     compileOnly name: 'commons-codec-1.10'
     compileOnly name: 'jsoup-1.8.1'
     implementation name: 'jautomata-core'
-    compileOnly name: 'jna-3.3.0'
+    compileOnly name: 'jna-5.13.0'
     implementation name: 'commons-math3-3.6.1'
     implementation name: 'jfreechart-1.6.0'
     implementation name: 'batik-all-1.14'
diff --git a/launcher/build.gradle b/launcher/build.gradle
index 5a88f6c61975608980bf64f75d6f1e4cc3931d6d..b61e19cbfaa97f2d4bafcf147cc97414c7106b93 100644
--- a/launcher/build.gradle
+++ b/launcher/build.gradle
@@ -16,7 +16,7 @@ dependencies {
     implementation name: 'commons-codec-1.10'
     compileOnly name: 'commons-io-2.5'
     compileOnly name: 'jsoup-1.8.1'
-    compileOnly name: 'jna-3.3.0'
+    compileOnly name: 'jna-5.13.0'
     implementation name: 'commons-math3-3.6.1'
     implementation name: 'jfreechart-1.6.0'
     implementation name: 'json-java'
diff --git a/libs/jna-3.3.0.jar b/libs/jna-3.3.0.jar
deleted file mode 100644
index 57f31c316865a7d3c184c96ea98547aca3516a25..0000000000000000000000000000000000000000
Binary files a/libs/jna-3.3.0.jar and /dev/null differ
diff --git a/libs/jna-5.13.0.jar b/libs/jna-5.13.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3d49c81881ffe0c01bf41fe93954b7f151a89f6a
Binary files /dev/null and b/libs/jna-5.13.0.jar differ
diff --git a/rundse/build.gradle b/rundse/build.gradle
index 0b0b7ccd02a70228afd2b945019d99c36f0742f5..eb49f8c4304e47dcf0b384b712fc24769de55f8e 100644
--- a/rundse/build.gradle
+++ b/rundse/build.gradle
@@ -36,7 +36,7 @@ dependencies {
 
     implementation name:'jautomata-core'
     implementation name:'com.microsoft.z3'
-    compileOnly name: 'jna-3.3.0'
+    compileOnly name: 'jna-5.13.0'
     implementation name: 'jgrapht-core-1.3.0'
     implementation name: 'jgrapht-ext-1.3.0'
     implementation name: 'jgrapht-io-1.3.0'
diff --git a/src/main/java/avatartranslator/tosysmlv2/AVATAR2SysMLV2.java b/src/main/java/avatartranslator/tosysmlv2/AVATAR2SysMLV2.java
index 1e5e6b0b997d9445a26d685460a5e9828d92292b..10ea1ffb830e9c2f3146a610362b0546279541c7 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AVATAR2SysMLV2.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AVATAR2SysMLV2.java
@@ -362,11 +362,11 @@ public class AVATAR2SysMLV2 {
 
         if (!isExcluded("state")) {
             for (AvatarStateMachineElement asme : asm.getListOfElements()) {
-                if (!isExcluded("state")) {
+                //if (!isExcluded("state")) {
                     if (asme instanceof AvatarState) {
                         ret.append(STATE + " " + asme.getName() + END);
                     }
-                }
+                //}
             }
 
             ret.append(CR);
diff --git a/src/main/java/cli/Action.java b/src/main/java/cli/Action.java
index 09378a3593887d42f6396a65b86ce311bcb28bfc..595fddd37d5b20b6a0216853b2cb0692b4b87bf0 100644
--- a/src/main/java/cli/Action.java
+++ b/src/main/java/cli/Action.java
@@ -1149,7 +1149,10 @@ public class Action extends Command implements ProVerifOutputListener {
                 }
 
                 try {
-                    interpreter.mgui.drawTMLSpecification(tmlm, commands[0]);
+                    DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+                    Date date = new Date();
+                    String dateAndTime = dateFormat.format(date);
+                    interpreter.mgui.drawTMLSpecification(tmlm, commands[0], dateAndTime);
                 } catch (MalformedTMLDesignException e) {
                     TraceManager.addDev("Exception in drawing spec: " + e.getMessage());
                     return e.getMessage();
@@ -1196,8 +1199,11 @@ public class Action extends Command implements ProVerifOutputListener {
 
 
                 try {
-                    interpreter.mgui.drawTMLSpecification(tmlm, commands[0]);
-                    interpreter.mgui.drawTMAPSpecification(tmap, commands[0]);
+                    DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+                    Date date = new Date();
+                    String dateAndTime = dateFormat.format(date);
+                    interpreter.mgui.drawTMLSpecification(tmlm, commands[0], dateAndTime);
+                    interpreter.mgui.drawTMAPSpecification(tmap, commands[0], dateAndTime);
                 } catch (MalformedTMLDesignException e) {
                     TraceManager.addDev("Exception in drawing spec: " + e.getMessage());
                     return e.getMessage();
diff --git a/src/main/java/cli/Interpreter.java b/src/main/java/cli/Interpreter.java
index ae29dea7ab7bae5bdd4da6de0bfa19bb0b456dba..15dfe228df20b0157ae30c0753158dbaa5279327 100644
--- a/src/main/java/cli/Interpreter.java
+++ b/src/main/java/cli/Interpreter.java
@@ -203,7 +203,10 @@ public class Interpreter implements Runnable, TerminalProviderInterface {
         if (line.startsWith("#")) {
 
         } else {
-
+            int lineContainComment = line.indexOf("#");
+            if (lineContainComment > 0) {
+                line = line.substring(0, lineContainComment);
+            }
             formerCommands.add(line);
 
             // Replace all double space by one unique space
diff --git a/src/main/java/cli/PatternHandling.java b/src/main/java/cli/PatternHandling.java
index e9b582645e64997ed0c2e47b69a6430ed2e4bb21..406fcd48e5c936fb5fe67469ef92c6aaf15a366f 100644
--- a/src/main/java/cli/PatternHandling.java
+++ b/src/main/java/cli/PatternHandling.java
@@ -391,16 +391,16 @@ public class PatternHandling extends Command {
                 + "-cpl \tget list of configured ports\n"
                 + "-tctl \tget list of tasks to be mapped \n"
                 + "-tcm TASK1 TASK2\tmap TASK1 in same CPU as TASK2\n"
-                + "-tcml\tmap get list of tasks that can be used to map in same CPU\n"
+                + "-tcml\t get list of tasks that can be used to map in same CPU\n"
                 + "-tcn TASK BUS\tmap TASK in new CPU linked to bus BUS\n"
                 + "-tcr TASK\tremove the mapping of TASK\n"
                 + "-tcl \tget list of mapped tasks\n"
-                + "-mctl \tmap get list of channels to be mapped\n"
+                + "-mctl \t get list of channels to be mapped\n"
                 + "-mcm TASK1.CHANNEL1 TASK2.CHANNEL2\tmap CHANNEL1 in same memory and buses as CHANNEL2\n"
-                + "-mcml\tmap get list of channels that can be used to map in same Memory\n"
+                + "-mcml \t get list of channels that can be used to map in same Memory\n"
                 + "-mcn TASK.CHANNEL BUS\tmap CHANNEL in new memory linked to bus BUS\n"
                 + "-mcr TASK.CHANNEL\tremove the mapping of CHANNEL\n"
-                + "-mcl \tmap get list of mapped channels\n"
+                + "-mcl \t get list of mapped channels\n"
                 + "-ua TASK ATTRIBUTE VALUE \tput the value VALUE of attribute ATTRIBUTE of the task TASK\n"
                 + "-m [PATH]\tmake the json configuration file of the pattern, you can optionally specify the path of this new file\n";
             }
diff --git a/src/main/java/myutil/RawConsoleInput.java b/src/main/java/myutil/RawConsoleInput.java
index a0ae8c877cfd1844c41954e242807599f50c924e..186e405ded785dde02aa63c859661b458cf40775 100644
--- a/src/main/java/myutil/RawConsoleInput.java
+++ b/src/main/java/myutil/RawConsoleInput.java
@@ -139,8 +139,8 @@ public class RawConsoleInput {
         if (initDone) {
             return;
         }
-        msvcrt = (Msvcrt) Native.loadLibrary("msvcrt", Msvcrt.class);
-        kernel32 = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
+        msvcrt = Native.load("msvcrt", Msvcrt.class);
+        kernel32 = Native.load("kernel32", Kernel32.class);
         try {
             consoleHandle = getStdInputHandle();
             originalConsoleMode = getConsoleMode(consoleHandle);
@@ -196,7 +196,7 @@ public class RawConsoleInput {
 
     private static class Kernel32Defs {
         static final int STD_INPUT_HANDLE = -10;
-        static final long INVALID_HANDLE_VALUE = (Pointer.SIZE == 8) ? -1 : 0xFFFFFFFFL;
+        static final long INVALID_HANDLE_VALUE = (Native.POINTER_SIZE == 8) ? -1 : 0xFFFFFFFFL;
         static final int ENABLE_PROCESSED_INPUT = 0x0001;
         static final int ENABLE_LINE_INPUT = 0x0002;
         static final int ENABLE_ECHO_INPUT = 0x0004;
@@ -306,7 +306,7 @@ public class RawConsoleInput {
         if (initDone) {
             return;
         }
-        libc = (Libc) Native.loadLibrary("c", Libc.class);
+        libc = Native.load("c", Libc.class);
         stdinIsConsole = libc.isatty(stdinFd) == 1;
         charsetDecoder = Charset.defaultCharset().newDecoder();
         if (stdinIsConsole) {
diff --git a/src/main/java/tmltranslator/patternhandling/PatternConfig2Json.java b/src/main/java/tmltranslator/patternhandling/PatternConfig2Json.java
index 316759b13993576593ceb5c5973765176e27a969..be9b3c1b7ac37bc67e1301482c6594589dfb6a2a 100644
--- a/src/main/java/tmltranslator/patternhandling/PatternConfig2Json.java
+++ b/src/main/java/tmltranslator/patternhandling/PatternConfig2Json.java
@@ -114,18 +114,17 @@ public class PatternConfig2Json {
     public PatternConfiguration getPaternConfiguration() {
         return patternConfiguration;
     }
-	
+    
     public PatternConfig2Json(String _patternPathName, PatternConfiguration _patternConfiguration) {
-		this.patternConfigurationPathName = _patternPathName;
-		this.patternConfiguration = _patternConfiguration;
-	}
+        this.patternConfigurationPathName = _patternPathName;
+        this.patternConfiguration = _patternConfiguration;
+    }
     
     public PatternConfig2Json(String _patternPathName) {
-		this.patternConfigurationPathName = _patternPathName;
+        this.patternConfigurationPathName = _patternPathName;
         this.patternConfiguration = new PatternConfiguration();
-	}
+    }
 
-	
     public void patternConfiguration2Json() {
         try {
             FileWriter file = new FileWriter(patternConfigurationPathName);
diff --git a/src/main/java/tmltranslator/patternhandling/PatternCreation.java b/src/main/java/tmltranslator/patternhandling/PatternCreation.java
index 71dca2d4fbbf2e11dd87ec28a87012628a5a89ab..73225b804232dd9f48246f1c7037c1d384044f6d 100644
--- a/src/main/java/tmltranslator/patternhandling/PatternCreation.java
+++ b/src/main/java/tmltranslator/patternhandling/PatternCreation.java
@@ -81,32 +81,32 @@ public class PatternCreation implements Runnable {
     public final static String INTERNALPORTS = "internalPorts";
     public final static String ATTRIBUTES = "attributes";
 
-	private List<String> selectedTasks;
-	private String patternName;
+    private List<String> selectedTasks;
+    private String patternName;
     private String patternsPath;
-	private TMLMapping<?> tmap;
+    private TMLMapping<?> tmap;
 
     public PatternCreation(List<String> _selectedTasks, String _patternName, String _patternsPath, TMLMapping<?> tmap) {
-		this.selectedTasks = _selectedTasks;
-		this.patternName = _patternName;
-		this.patternsPath = _patternsPath;
-		this.tmap = tmap;
-	}
+        this.selectedTasks = _selectedTasks;
+        this.patternName = _patternName;
+        this.patternsPath = _patternsPath;
+        this.tmap = tmap;
+    }
     
-	public void startThread() {
-		Thread t = new Thread(this);
-		t.start();
-		try {
-			t.join();
-		}
-		catch (Exception e) {
-			TraceManager.addDev("Error in Pattern Creation Thread");
-		}
-		return;
-	}
+    public void startThread() {
+        Thread t = new Thread(this);
+        t.start();
+        try {
+            t.join();
+        }
+        catch (Exception e) {
+            TraceManager.addDev("Error in Pattern Creation Thread");
+        }
+        return;
+    }
 
     public void run() {
-    	TraceManager.addDev("Creating Pattern");
+        TraceManager.addDev("Creating Pattern");
         if (tmap == null) {
             return;
         }
@@ -135,7 +135,7 @@ public class PatternCreation implements Runnable {
             } 
         }
         
-	}
+    }
 
     @SuppressWarnings("unchecked")
     public boolean generateTMLTxt(String _title) {
diff --git a/src/main/java/tmltranslator/patternhandling/PatternIntegration.java b/src/main/java/tmltranslator/patternhandling/PatternIntegration.java
index 5f710b0c3414983612c1dab564322584441e5285..58ab3ce81574422318423837d629477ce71b3db9 100644
--- a/src/main/java/tmltranslator/patternhandling/PatternIntegration.java
+++ b/src/main/java/tmltranslator/patternhandling/PatternIntegration.java
@@ -62,8 +62,8 @@ public class PatternIntegration implements Runnable {
     private String patternName;
     private PatternConfiguration patternConfiguration;
     private LinkedHashMap<String, TaskPattern> patternTasks;
-	private TMLMapping<?> tmapModel;
-	private TMLMapping<?> tmapPattern;
+    private TMLMapping<?> tmapModel;
+    private TMLMapping<?> tmapPattern;
 
     private HashMap<String, String> tasksClonedIntoModel = new HashMap<String, String>();
     private HashMap<Entry<String, String>, String> channelsClonedIntoModel = new HashMap<Entry<String, String>, String>();
@@ -75,28 +75,28 @@ public class PatternIntegration implements Runnable {
     private HashMap<TMLTask, List<TMLActivityElement>> clonedTasksToRemElems = new HashMap<TMLTask, List<TMLActivityElement>>();
 
     public PatternIntegration(String _appTab, String _patternPath, String _patternName, PatternConfiguration _patternConfiguration, LinkedHashMap<String, TaskPattern> _patternTasks, TMLMapping<?> _tmapModel) {
-		this.appTab = _appTab;
-		this.patternPath = _patternPath;
-		this.patternName = _patternName;
-		this.patternConfiguration = _patternConfiguration;
-		this.patternTasks = _patternTasks;
-		this.tmapModel = _tmapModel;
-	}
+        this.appTab = _appTab;
+        this.patternPath = _patternPath;
+        this.patternName = _patternName;
+        this.patternConfiguration = _patternConfiguration;
+        this.patternTasks = _patternTasks;
+        this.tmapModel = _tmapModel;
+    }
     
-	public TMLMapping<?> startThread() {
-		Thread t = new Thread(this);
-		t.start();
-		try {
-			t.join();
-		}
-		catch (Exception e) {
-			TraceManager.addDev("Error in Pattern Integration Thread");
-		}
-		return tmapModel;
-	}
+    public TMLMapping<?> startThread() {
+        Thread t = new Thread(this);
+        t.start();
+        try {
+            t.join();
+        }
+        catch (Exception e) {
+            TraceManager.addDev("Error in Pattern Integration Thread");
+        }
+        return tmapModel;
+    }
 
     public void run() {
-    	TraceManager.addDev("Integrating Pattern");
+        TraceManager.addDev("Integrating Pattern");
         if (tmapModel == null) {
             return;
         }
@@ -119,7 +119,7 @@ public class PatternIntegration implements Runnable {
         tmapModel = mapChannelsInArchAuto(tmapModel, tmapPattern, patternConfiguration.getTasksMapping(), patternConfiguration.getChannelsMapping(), patternConfiguration, patternTasks);
         tmapModel = generateSecurityForChannels(tmapModel, tmapPattern, patternConfiguration, patternTasks, appTab);
         tmapModel = putBackPrefixNames(tmapModel, appTab);
-	}
+    }
 
     public TMLMapping<?> addClonedTask(TMLMapping<?> _tmapModel, PatternConfiguration _patternConfiguration) {
         TMLModeling<?> _tmlmModel = _tmapModel.getTMLModeling();
diff --git a/src/main/java/tmltranslator/patternhandling/SecurityGenerationForTMAP.java b/src/main/java/tmltranslator/patternhandling/SecurityGenerationForTMAP.java
index 05da50072671cc83fade4553583f820982d405c7..f8636bcef755b4fa96536aff5279c0cb2b4d7cd2 100644
--- a/src/main/java/tmltranslator/patternhandling/SecurityGenerationForTMAP.java
+++ b/src/main/java/tmltranslator/patternhandling/SecurityGenerationForTMAP.java
@@ -446,11 +446,11 @@ public class SecurityGenerationForTMAP implements Runnable {
                                 if (!toSecureRev.get(chan.getDestinationTask()).contains(chan.getOriginTask())) {
                                     toSecureRev.get(chan.getDestinationTask()).add(chan.getOriginTask());
                                 }
-								/*}
-								  else {
-								  TMLChannel chantmp = oldmodel.getChannelByShortName("__"+chan.getName());
-								  System.out.println("Channel found "+ chantmp);
-								  }*/
+                                /*}
+                                  else {
+                                  TMLChannel chantmp = oldmodel.getChannelByShortName("__"+chan.getName());
+                                  System.out.println("Channel found "+ chantmp);
+                                  }*/
 
                             }
                             if (hsmTasks.contains(chan.getOriginTask().getName().split("__")[1])) {
@@ -505,11 +505,11 @@ public class SecurityGenerationForTMAP implements Runnable {
                             for (TMLTask dest : chan.getDestinationTasks()) {
                                 if (chan.isEnsureConf() && nonConf) {
                                     toSecure.get(orig).add(dest);
-								/*if (chan.checkAuth && autoStrongAuth) {
-								  if (!toSecureRev.get(dest).contains(orig)) {
-								  toSecureRev.get(dest).add(orig);
-								  }
-								  }*/
+                                /*if (chan.checkAuth && autoStrongAuth) {
+                                  if (!toSecureRev.get(dest).contains(orig)) {
+                                  toSecureRev.get(dest).add(orig);
+                                  }
+                                  }*/
                                     if (hsmTasks.contains(orig.getName().split("__")[1])) {
                                         SecurityPattern secPattern = new SecurityPattern("hsmSec_" + secName, SecurityPattern.SYMMETRIC_ENC_PATTERN, overhead, "", encComp, decComp, "", "", "");
                                         secPattern.originTask = "HSM_" + taskHSMMap.get(orig.getName().replaceAll(title + "__", ""));
@@ -519,10 +519,10 @@ public class SecurityGenerationForTMAP implements Runnable {
                                             hsmChannelMap.get(taskHSMMap.get(orig.getName().split("__")[1])).add(hsmchan);
                                             hsmSecOutChannels.get(orig).add(chanName);
 
-										/*	if (chan.checkAuth && autoStrongAuth) {
-											nonceOutChannels.get(orig).add(chanName);
-											hsmchan.nonceName="nonce_" + dest.getName().split("__")[1] + "_" + orig.getName().split("__")[1];
-											}*/
+                                        /*    if (chan.checkAuth && autoStrongAuth) {
+                                            nonceOutChannels.get(orig).add(chanName);
+                                            hsmchan.nonceName="nonce_" + dest.getName().split("__")[1] + "_" + orig.getName().split("__")[1];
+                                            }*/
                                         }
                                     } else {
                                         if (!secOutChannels.get(orig).contains(chanName)) {
@@ -530,9 +530,9 @@ public class SecurityGenerationForTMAP implements Runnable {
                                             SecurityPattern secPattern = new SecurityPattern("autoEncrypt_" + secName, SecurityPattern.SYMMETRIC_ENC_PATTERN, overhead, "", encComp, decComp, "", "", "");
                                             secPattern.originTask = orig.getName().replaceAll(title + "__", "");
                                             channelSecMap.put(chanName, secPattern);
-										/* if (chan.checkAuth && autoStrongAuth) {
-										   nonceOutChannels.get(orig).add(chanName);
-										   }*/
+                                        /* if (chan.checkAuth && autoStrongAuth) {
+                                           nonceOutChannels.get(orig).add(chanName);
+                                           }*/
                                         }
                                     }
 
@@ -541,34 +541,34 @@ public class SecurityGenerationForTMAP implements Runnable {
                                             HSMChannel hsmchan = new HSMChannel(chanName, dest.getName().split("__")[1], HSMChannel.DEC);
                                             hsmChannelMap.get(taskHSMMap.get(dest.getName().split("__")[1])).add(hsmchan);
                                             hsmSecInChannels.get(dest).add(chanName);
-										/*	if (chan.checkAuth && autoStrongAuth) {
-											nonceInChannels.get(dest).add(chanName);
-											hsmchan.nonceName="nonce_" + dest.getName().split("__")[1] + "_" + orig.getName().split("__")[1];
-											}*/
+                                        /*    if (chan.checkAuth && autoStrongAuth) {
+                                            nonceInChannels.get(dest).add(chanName);
+                                            hsmchan.nonceName="nonce_" + dest.getName().split("__")[1] + "_" + orig.getName().split("__")[1];
+                                            }*/
                                         }
                                     } else {
                                         if (!secInChannels.get(dest).contains(chanName)) {
                                             secInChannels.get(dest).add(chanName);
-										/*if (chan.checkAuth && autoStrongAuth) {
-										  nonceInChannels.get(dest).add(chanName);
-										  }*/
+                                        /*if (chan.checkAuth && autoStrongAuth) {
+                                          nonceInChannels.get(dest).add(chanName);
+                                          }*/
                                         }
                                     }
 
                                 } else if (chan.isEnsureWeakAuth() && nonAuth) {
                                     toSecure.get(orig).add(dest);
-								/*	if (autoStrongAuth) {
-								/*  		if (chan.getOriginTask().getReferenceObject() instanceof TMLCPrimitiveComponent && chan.getDestinationTask().getReferenceObject() instanceof TMLCPrimitiveComponent) {*/
-								/*if (!toSecureRev.get(dest).contains(orig)) {
-								  toSecureRev.get(dest).add(orig);
-								  }*/
-								/*}
-								  else {
-								  TMLChannel chantmp = oldmodel.getChannelByShortName("__"+chan.getName());
-								  System.out.println("Channel found "+ chantmp);
-								  }
-
-								  }*/
+                                /*    if (autoStrongAuth) {
+                                /*          if (chan.getOriginTask().getReferenceObject() instanceof TMLCPrimitiveComponent && chan.getDestinationTask().getReferenceObject() instanceof TMLCPrimitiveComponent) {*/
+                                /*if (!toSecureRev.get(dest).contains(orig)) {
+                                  toSecureRev.get(dest).add(orig);
+                                  }*/
+                                /*}
+                                  else {
+                                  TMLChannel chantmp = oldmodel.getChannelByShortName("__"+chan.getName());
+                                  System.out.println("Channel found "+ chantmp);
+                                  }
+
+                                  }*/
                                     if (hsmTasks.contains(orig.getName().split("__")[1])) {
                                         SecurityPattern secPattern = new SecurityPattern("hsmSec_" + secName, SecurityPattern.SYMMETRIC_ENC_PATTERN, overhead, "", encComp, decComp, "", "", "");
                                         secPattern.originTask = "HSM_" + taskHSMMap.get(orig.getName().replaceAll(title + "__", ""));
@@ -578,10 +578,10 @@ public class SecurityGenerationForTMAP implements Runnable {
                                             hsmChannelMap.get(taskHSMMap.get(orig.getName().split("__")[1])).add(hsmchan);
                                             hsmSecOutChannels.get(orig).add(chanName);
 
-										/*if (autoStrongAuth) {
-										  nonceOutChannels.get(orig).add(chanName);
-										  hsmchan.nonceName="nonce_" + dest.getName().split("__")[1] + "_" + orig.getName().split("__")[1];
-										  }*/
+                                        /*if (autoStrongAuth) {
+                                          nonceOutChannels.get(orig).add(chanName);
+                                          hsmchan.nonceName="nonce_" + dest.getName().split("__")[1] + "_" + orig.getName().split("__")[1];
+                                          }*/
                                         }
                                     } else {
                                         if (!macInChannels.get(orig).contains(chanName)) {
@@ -589,9 +589,9 @@ public class SecurityGenerationForTMAP implements Runnable {
                                             SecurityPattern secPattern = new SecurityPattern("autoEncrypt_" + secName, SecurityPattern.SYMMETRIC_ENC_PATTERN, overhead, "", encComp, decComp, "", "", "");
                                             secPattern.originTask = orig.getName().replaceAll(title + "__", "");
                                             channelSecMap.put(chanName, secPattern);
-										/*   if (autoStrongAuth) {
-										     nonceOutChannels.get(orig).add(chanName);
-										     }*/
+                                        /*   if (autoStrongAuth) {
+                                             nonceOutChannels.get(orig).add(chanName);
+                                             }*/
                                         }
                                     }
 
@@ -601,17 +601,17 @@ public class SecurityGenerationForTMAP implements Runnable {
                                             HSMChannel hsmchan = new HSMChannel(chanName, dest.getName().split("__")[1], HSMChannel.DEC);
                                             hsmChannelMap.get(taskHSMMap.get(dest.getName().split("__")[1])).add(hsmchan);
                                             hsmSecInChannels.get(dest).add(chanName);
-										/*if (chan.checkAuth && autoStrongAuth) {
-										  nonceInChannels.get(dest).add(chanName);
-										  hsmchan.nonceName="nonce_" + dest.getName().split("__")[1] + "_" + orig.getName().split("__")[1];
-										  }*/
+                                        /*if (chan.checkAuth && autoStrongAuth) {
+                                          nonceInChannels.get(dest).add(chanName);
+                                          hsmchan.nonceName="nonce_" + dest.getName().split("__")[1] + "_" + orig.getName().split("__")[1];
+                                          }*/
                                         }
                                     } else {
                                         if (!secInChannels.get(dest).contains(chanName)) {
                                             secInChannels.get(dest).add(chanName);
-										/*if (chan.checkAuth && autoStrongAuth) {
-										  nonceInChannels.get(dest).add(chanName);
-										  }*/
+                                        /*if (chan.checkAuth && autoStrongAuth) {
+                                          nonceInChannels.get(dest).add(chanName);
+                                          }*/
                                         }
                                     }
                                 }
@@ -1057,7 +1057,7 @@ public class SecurityGenerationForTMAP implements Runnable {
                             //Receive any nonces if ensuring authenticity
                             TMLReadChannel rd = new TMLReadChannel("", taskAD.getReferenceObject());
                             //System.out.println("tmlc " + tmlc);
-                            //					System.out.println("Checking "+ tmlc.getDestinationTask() + " " + tmlc.getOriginTask());
+                            //System.out.println("Checking "+ tmlc.getDestinationTask() + " " + tmlc.getOriginTask());
                             List<TMLChannel> matches = tmlmodel.getChannels(tmlc.getDestinationTask(), tmlc.getOriginTask());
 
                             if (matches.size() > 0) {
diff --git a/src/main/java/tmltranslator/patternhandling/TMRGeneration.java b/src/main/java/tmltranslator/patternhandling/TMRGeneration.java
index 1bb60747a4773e1d14a98010d207cf63570c521d..0ef3a7c8c22c89ba6faaaab912204b1ce1a83d66 100644
--- a/src/main/java/tmltranslator/patternhandling/TMRGeneration.java
+++ b/src/main/java/tmltranslator/patternhandling/TMRGeneration.java
@@ -53,36 +53,36 @@ import tmltranslator.*;
 import java.util.*;
  
 public class TMRGeneration implements Runnable {
-	private Map<String, List<String>> selectedSensorsTasks;
-	private String selectedRecieverTask;
+    private Map<String, List<String>> selectedSensorsTasks;
+    private String selectedRecieverTask;
     private String interpretersCompTime;
     private String voterCompTime;
     private String voterTimeOut;
-	private TMLMapping<?> tmap;
+    private TMLMapping<?> tmap;
 
     public TMRGeneration(Map<String, List<String>> selectedSensorsTasks, String selectedRecieverTask, String interpretersCompTime, String voterCompTime, String voterTimeOut, TMLMapping<?> tmap) {
-		this.selectedSensorsTasks = selectedSensorsTasks;
-		this.selectedRecieverTask = selectedRecieverTask;
-		this.interpretersCompTime = interpretersCompTime;
-		this.voterCompTime = voterCompTime;
-		this.voterTimeOut = voterTimeOut;
-		this.tmap = tmap;
-	}
+        this.selectedSensorsTasks = selectedSensorsTasks;
+        this.selectedRecieverTask = selectedRecieverTask;
+        this.interpretersCompTime = interpretersCompTime;
+        this.voterCompTime = voterCompTime;
+        this.voterTimeOut = voterTimeOut;
+        this.tmap = tmap;
+    }
     
-	public TMLMapping<?> startThread() {
-		Thread t = new Thread(this);
-		t.start();
-		try {
-			t.join();
-		}
-		catch (Exception e) {
-			TraceManager.addDev("Error in TMR Generation Thread");
-		}
-		return tmap;
-	}
+    public TMLMapping<?> startThread() {
+        Thread t = new Thread(this);
+        t.start();
+        try {
+            t.join();
+        }
+        catch (Exception e) {
+            TraceManager.addDev("Error in TMR Generation Thread");
+        }
+        return tmap;
+    }
 
     public void run() {
-    	TraceManager.addDev("Adding TMR");
+        TraceManager.addDev("Adding TMR");
         if (tmap == null) {
             return;
         }
@@ -139,7 +139,7 @@ public class TMRGeneration implements Runnable {
             }
             tmap = tmrIntegration(tmap, channelsSensorReceiverList, parameters);
         }
-	} 
+    } 
 
     TMLMapping<?> duplicateSensor(TMLMapping<?> _tmap, List<TMLChannel> _channelsBetweenSensorAndReceiver, String newSensorName) {
 
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index 15dde278071e44f50324277988306753f32691a2..df958d7277182a88b78f827a24cde85456a45a90 100644
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -1629,7 +1629,11 @@ public class GTURTLEModeling {
         try {
             String archTabName = ((CorrespondanceTGElement)(tmap.getCorrespondanceList())).getTG(tmap.getArch().getFirstCPU()).getTDiagramPanel().tp.getNameOfTab();
             String appTabName = ((TGComponent)tmap.getTMLModeling().getReference()).getTDiagramPanel().tp.getNameOfTab();
-            gui.drawTMLAndTMAPSpecification(tmap, appTabName + "_tmr", archTabName + "_tmr");
+            DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+            Date date = new Date();
+            String dateAndTime = dateFormat.format(date);
+            gui.drawTMLSpecification(tmap.getTMLModeling(), appTabName + "_tmr", dateAndTime);
+            gui.drawTMAPSpecification(tmap, archTabName + "_tmr", dateAndTime);
         } catch (MalformedTMLDesignException e) {
             TraceManager.addDev("Error when Drawing TML");
         }
@@ -1655,7 +1659,11 @@ public class GTURTLEModeling {
         tmap = (TMLMapping<TGComponent>) integratePatternTMAP(appTabName, patternPath, patternName, configPatternPath, tmap);
         try {
             String archTabName = ((CorrespondanceTGElement)(tmap.getCorrespondanceList())).getTG(tmap.getArch().getFirstCPU()).getTDiagramPanel().tp.getNameOfTab();
-            gui.drawTMLAndTMAPSpecification(tmap, appTabName + "_" + patternName, archTabName + "_" + patternName);
+            DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+            Date date = new Date();
+            String dateAndTime = dateFormat.format(date);
+            gui.drawTMLSpecification(tmap.getTMLModeling(), appTabName + "_" + patternName, dateAndTime);
+            gui.drawTMAPSpecification(tmap, archTabName + "_" + patternName, dateAndTime);
         } catch (MalformedTMLDesignException e) {
             TraceManager.addDev("Error when Drawing TML");
         }
@@ -1836,7 +1844,11 @@ public class GTURTLEModeling {
 
             try {
                 String archTabName = ((CorrespondanceTGElement)(tmap.getCorrespondanceList())).getTG(tmap.getArch().getFirstCPU()).getTDiagramPanel().tp.getNameOfTab();
-                gui.drawTMLAndTMAPSpecification(tmap, appTabName + "_enc", archTabName + "_enc");
+                DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+                Date date = new Date();
+                String dateAndTime = dateFormat.format(date);
+                gui.drawTMLSpecification(tmap.getTMLModeling(), appTabName + "_enc", dateAndTime);
+                gui.drawTMAPSpecification(tmap, archTabName + "_enc", dateAndTime);
             } catch (MalformedTMLDesignException e) {
                 TraceManager.addDev("Error when Drawing TML");
             }
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index 5e52a0a94bf4cc62fcb907557cb3be10d57eb39d..daf87705a2502b9bcb7c3c083af8b9c782145850 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -1902,11 +1902,13 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
         TraceManager.addDev("Draw Spec 4");
     }
 
-    public void drawTMLSpecification(TMLModeling tmlm, String title) throws MalformedTMLDesignException {
-        DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
-        Date date = new Date();
-        String dateAndTime = dateFormat.format(date);
-        String tabName = title + "_" + dateAndTime;
+    public void drawTMLSpecification(TMLModeling tmlm, String title, String suffix) throws MalformedTMLDesignException {
+        if (suffix == "" || suffix == null) {
+            DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+            Date date = new Date();
+            suffix = dateFormat.format(date);
+        } 
+        String tabName = title + "_" + suffix;
         TraceManager.addDev("Draw TML Spec 1");
         int index = createTMLComponentDesign(tabName);
         TraceManager.addDev("Draw TML Spec 2");
@@ -1917,11 +1919,13 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
         TraceManager.addDev("Draw TML Spec 4");
     }
 
-    public void drawTMAPSpecification(TMLMapping tmap, String title) throws MalformedTMLDesignException {
-        DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
-        Date date = new Date();
-        String dateAndTime = dateFormat.format(date);
-        String tabName = title + "_" + dateAndTime;
+    public void drawTMAPSpecification(TMLMapping tmap, String title, String suffix) throws MalformedTMLDesignException {
+        if (suffix == "" || suffix == null) {
+            DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+            Date date = new Date();
+            suffix = dateFormat.format(date);
+        } 
+        String tabName = title + "_" + suffix;
         TraceManager.addDev("Draw TMAP Spec 1");
         int index = createTMLArchitecture(tabName + "_Mapping");
         TraceManager.addDev("Draw TMAP Spec 2");
@@ -1932,7 +1936,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
         TraceManager.addDev("Draw TMAP Spec 4");
     }
 
-    public void drawTMLAndTMAPSpecification(TMLMapping tmap, String titleApp, String titleArch) throws MalformedTMLDesignException {
+    /*public void drawTMLAndTMAPSpecification(TMLMapping tmap, String titleApp, String titleArch) throws MalformedTMLDesignException {
         DateFormat dateFormat = new SimpleDateFormat("HHmmss");
         Date date = new Date();
         String dateAndTime = dateFormat.format(date);
@@ -1955,7 +1959,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
         DrawerTMAPModeling drawerArch = new DrawerTMAPModeling(this);
         drawerArch.drawTMAPModelingPanel(tmap, tmlap);
         TraceManager.addDev("Draw TMAP Spec 4");
-    }
+    }*/
 
     // Creates the status bar.
     private JLabel createStatusBar() {
@@ -5627,7 +5631,10 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
             }
 
             try {
-                drawTMLSpecification(ts.getTMLModeling(), tmlfile.getName());
+                DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+                Date date = new Date();
+                String dateAndTime = dateFormat.format(date);
+                drawTMLSpecification(ts.getTMLModeling(), tmlfile.getName(), dateAndTime);
             } catch (MalformedTMLDesignException e) {
                 TraceManager.addDev("Error in drawing spec: " + e.getMessage());
                 status.setText("ERROR: " + e.getMessage());
@@ -5663,9 +5670,12 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
             TMLMapping tmap = ts.getTMLMapping();
 
             try {
-                drawTMLSpecification(tmap.getTMLModeling(), tmlfile.getName());
+                DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+                Date date = new Date();
+                String dateAndTime = dateFormat.format(date);
+                drawTMLSpecification(tmap.getTMLModeling(), tmlfile.getName(), dateAndTime);
                 TraceManager.addDev("Drawing TMAP spec");
-                drawTMAPSpecification(tmap, tmlfile.getName());
+                drawTMAPSpecification(tmap, tmlfile.getName(), dateAndTime);
             } catch (MalformedTMLDesignException e) {
                 TraceManager.addDev("Error in drawing spec: " + e.getMessage());
                 status.setText("ERROR: " + e.getMessage());
diff --git a/src/main/java/ui/util/DefaultText.java b/src/main/java/ui/util/DefaultText.java
index 8269f6011a24d2c40f842f7380806df0101030ec..cd6a05482046e5c60db7db4b4d0c5aea4249d937 100755
--- a/src/main/java/ui/util/DefaultText.java
+++ b/src/main/java/ui/util/DefaultText.java
@@ -50,8 +50,8 @@ package ui.util;
  */
 public class DefaultText {
 
-    public static String BUILD = "14609";
-    public static String DATE = "2023/11/15 03:21:27 CET";
+    public static String BUILD = "14617";
+    public static String DATE = "2023/11/23 03:21:05 CET";
 
     public static StringBuffer sbAbout = makeAbout();
 
diff --git a/src/main/java/ui/window/JDialogPatternHandling.java b/src/main/java/ui/window/JDialogPatternHandling.java
index fa39890726f2cb642be67e7f11be892fb99f8c7e..3170bda6c17875e2f4b01d233815cd65b8ca0645 100644
--- a/src/main/java/ui/window/JDialogPatternHandling.java
+++ b/src/main/java/ui/window/JDialogPatternHandling.java
@@ -371,13 +371,13 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
         jp01.add(labelSelectPattern, c01);
         //addComponent(jp01, labelSelectPattern, 0, curY, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH);
         jListNoSelectedTasksAsPattern = new JList<String>(noSelectedTasksAsPattern);
-		jPanelPatternSelection = new JPanel();
-		jPanelPatternSelection.setPreferredSize(new Dimension(250, 200));
-		GridBagConstraints c02 = new GridBagConstraints();
-		c02.gridwidth = 1;
-		c02.gridheight = 1;
-		c02.fill= GridBagConstraints.BOTH;
-     	jListNoSelectedTasksAsPattern.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+        jPanelPatternSelection = new JPanel();
+        jPanelPatternSelection.setPreferredSize(new Dimension(250, 200));
+        GridBagConstraints c02 = new GridBagConstraints();
+        c02.gridwidth = 1;
+        c02.gridheight = 1;
+        c02.fill= GridBagConstraints.BOTH;
+         jListNoSelectedTasksAsPattern.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
 
         jListNoSelectedTasksAsPattern.addListSelectionListener(this);
         JScrollPane scrollPane1 = new JScrollPane(jListNoSelectedTasksAsPattern);
@@ -394,14 +394,14 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
         buttonAddAllTasksAsPattern.addActionListener(this);
         buttonAddAllTasksAsPattern.setActionCommand("allTasksSelectedAsPattern");
         buttonPanel.add(buttonAddAllTasksAsPattern, c13);
-		//buttonAddAllTasksAsPattern.setEnabled(false);
+        //buttonAddAllTasksAsPattern.setEnabled(false);
 
         buttonAddSelectedTasksAsPattern = new JButton(IconManager.imgic48);
         buttonAddSelectedTasksAsPattern.setPreferredSize(new Dimension(50, 25));
         buttonAddSelectedTasksAsPattern.addActionListener(this);
         buttonAddSelectedTasksAsPattern.setActionCommand("addTaskAsPattern");
         buttonPanel.add(buttonAddSelectedTasksAsPattern, c13);
-		//buttonAddSelectedTasksAsPattern.setEnabled(false);
+        //buttonAddSelectedTasksAsPattern.setEnabled(false);
 
         buttonPanel.add(new JLabel(" "), c13);
 
@@ -410,7 +410,7 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
         buttonRemoveSelectedTasksAsPattern.setPreferredSize(new Dimension(50, 25));
         buttonRemoveSelectedTasksAsPattern.setActionCommand("removeTaskAsPattern");
         buttonPanel.add(buttonRemoveSelectedTasksAsPattern, c13);
-		//buttonRemoveSelectedTasksAsPattern.setEnabled(false);
+        //buttonRemoveSelectedTasksAsPattern.setEnabled(false);
 
         buttonRemoveAllTasksAsPattern = new JButton(IconManager.imgic44);
         buttonRemoveAllTasksAsPattern.addActionListener(this);
@@ -419,8 +419,8 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
         buttonPanel.add(buttonRemoveAllTasksAsPattern, c13);
         jPanelPatternSelection.add(buttonPanel, c02);
         buttonPanel.setPreferredSize(new Dimension(50, 200));
-		//buttonRemoveAllTasksAsPattern.setEnabled(false);
-		
+        //buttonRemoveAllTasksAsPattern.setEnabled(false);
+        
         jListSelectedTasksAsPattern = new JList<String>(selectedTasksAsPattern);
 
         jListSelectedTasksAsPattern.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -563,7 +563,7 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
 
 
         jListConnectedPorts = new JList<String>(connectedPorts);
-		JPanel jPanelPatternIntegration = new JPanel();
+        JPanel jPanelPatternIntegration = new JPanel();
         jPanelPatternIntegration.setLayout(new GridBagLayout());
         GridBagConstraints cPatternIntegration = new GridBagConstraints();
         cPatternIntegration.gridx = 0;
@@ -572,7 +572,7 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
         cPatternIntegration.fill = GridBagConstraints.HORIZONTAL;
         cPatternIntegration.anchor = GridBagConstraints.LINE_START;
         
-		//jPanelPatternIntegration.setPreferredSize(new Dimension(600, 130));
+        //jPanelPatternIntegration.setPreferredSize(new Dimension(600, 130));
         jListConnectedPorts.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
 
         jListConnectedPorts.addListSelectionListener(this);
@@ -678,10 +678,10 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
         //cPortConfigurationMain.gridwidth = GridBagConstraints.REMAINDER;
 
         jListConfigPorts = new JList<String>(configuredPorts);
-		JPanel jPanelConfigPorts = new JPanel(new GridBagLayout());
+        JPanel jPanelConfigPorts = new JPanel(new GridBagLayout());
         jPanelConfigPorts.setLayout(new GridBagLayout());
         GridBagConstraints cConfigPorts = new GridBagConstraints();
-		//jPanelConfigPorts.setPreferredSize(new Dimension(200, 100));
+        //jPanelConfigPorts.setPreferredSize(new Dimension(200, 100));
         jListConfigPorts.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
 
         jListConfigPorts.addListSelectionListener(this);
@@ -967,7 +967,7 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
 
 
         jListMappedTasks = new JList<String>(mappedTasks);
-		JPanel jPanelMappedTasks = new JPanel();
+        JPanel jPanelMappedTasks = new JPanel();
         jPanelMappedTasks.setLayout(new GridBagLayout());
         GridBagConstraints cMappedTasks = new GridBagConstraints();
         cMappedTasks.gridx = 0;
@@ -1077,7 +1077,7 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
 
 
         jListMappedChannels = new JList<String>(mappedChannels);
-		JPanel jPanelMappedChannels = new JPanel();
+        JPanel jPanelMappedChannels = new JPanel();
         jPanelMappedChannels.setLayout(new GridBagLayout());
         GridBagConstraints cMappedChannels = new GridBagConstraints();
         cMappedChannels.gridx = 0;
@@ -1163,7 +1163,7 @@ public class JDialogPatternHandling extends JDialog implements ActionListener, L
         jpCloneTask.add(jFieldNewClonedTaskName, cCloneTask);
 
         jListClonedTasks = new JList<String>(clonedTasks);
-		JPanel jPanelClonedTasks = new JPanel();
+        JPanel jPanelClonedTasks = new JPanel();
         jPanelClonedTasks.setLayout(new GridBagLayout());
         GridBagConstraints cClonedTasks = new GridBagConstraints();
         cClonedTasks.gridx = 0;
diff --git a/tiftranslator/build.gradle b/tiftranslator/build.gradle
index 36c342267821e90ade9b3cc66116e21eb86b5f33..a622f51cb6985ba313a217b25d527563a57738b7 100644
--- a/tiftranslator/build.gradle
+++ b/tiftranslator/build.gradle
@@ -21,7 +21,7 @@ dependencies {
     compileOnly name: 'commons-io-2.5'
     compileOnly name: 'jsoup-1.8.1'
     compileOnly name: 'commons-codec-1.10'
-    compileOnly name: 'jna-3.3.0'
+    compileOnly name: 'jna-5.13.0'
     implementation name: 'commons-math3-3.6.1'
     implementation name: 'jfreechart-1.6.0'
     implementation name: 'json-java'
diff --git a/tmltranslator/build.gradle b/tmltranslator/build.gradle
index 61d653a683d8fed1ba67b39f7ea01b0232f8379e..771fc6144432729ca55314c2fca1bb188e98d7d2 100644
--- a/tmltranslator/build.gradle
+++ b/tmltranslator/build.gradle
@@ -37,7 +37,7 @@ dependencies {
     implementation name: 'commons-math3-3.6.1'
     implementation name: 'jautomata-core'
     implementation name: 'com.microsoft.z3'
-    compileOnly name: 'jna-3.3.0'
+    compileOnly name: 'jna-5.13.0'
     implementation name: 'jgrapht-core-1.3.0'
     implementation name: 'jgrapht-ext-1.3.0'
     implementation name: 'jgrapht-io-1.3.0'
diff --git a/ttool-cli/build.gradle b/ttool-cli/build.gradle
index 681b99068fac81ce500999966b9e7f3cc6935188..7b90feca37605f164f5643775da5e665c92caea0 100644
--- a/ttool-cli/build.gradle
+++ b/ttool-cli/build.gradle
@@ -47,7 +47,7 @@ implementation name: 'xercesImpl-2.12.0'
     
     implementation name: 'jautomata-core'
     implementation name: 'com.microsoft.z3'
-    implementation name: 'jna-3.3.0'
+    implementation name: 'jna-5.13.0'
     implementation name: 'jgrapht-core-1.3.0'
     implementation name: 'jgrapht-ext-1.3.0'
     implementation name: 'jgrapht-io-1.3.0'
diff --git a/ttool/build.gradle b/ttool/build.gradle
index 0aaa65af230250e8b498e1caecb91e14612d7c14..dc3e7405c2ce30fc8b561b539e6699e0588fc876 100644
--- a/ttool/build.gradle
+++ b/ttool/build.gradle
@@ -51,7 +51,7 @@ dependencies {
     implementation name: 'assertj/assertj-swing/3.8.0/assertj-swing-3.8.0-sources'
     implementation name: 'assertj/assertj-swing-junit/3.8.0/assertj-swing-junit-3.8.0'
     implementation name: 'assertj/assertj-swing-junit/3.8.0/assertj-swing-junit-3.8.0-sources'
-    implementation name: 'jna-3.3.0'
+    implementation name: 'jna-5.13.0'
     implementation name: 'jgrapht-core-1.3.0'
     implementation name: 'jgrapht-ext-1.3.0'
     implementation name: 'jgrapht-io-1.3.0'
diff --git a/ttool/src/test/java/cli/CLIPatternHandlingTest.java b/ttool/src/test/java/cli/CLIPatternHandlingTest.java
index 5ee0b0ad13cb3b62dab5ea7939ff6267e43221e1..3226e0238906a3e14bcdcd05cf4101d32151d0ed 100644
--- a/ttool/src/test/java/cli/CLIPatternHandlingTest.java
+++ b/ttool/src/test/java/cli/CLIPatternHandlingTest.java
@@ -94,14 +94,13 @@ public class CLIPatternHandlingTest extends AbstractTest implements InterpreterO
     private StringBuilder outputResult;
     private List<String> errorOutputs = new ArrayList<String>();
     
-	
-	public CLIPatternHandlingTest() {
-	    //
+    public CLIPatternHandlingTest() {
+        //
     }
-	
+    
     public void exit(int reason) {
-	    TraceManager.addDev("Exit reason=" + reason);
-	    assertTrue(reason == 0);
+        TraceManager.addDev("Exit reason=" + reason);
+        assertTrue(reason == 0);
     }
 
     public void printError(String error) {
@@ -110,11 +109,11 @@ public class CLIPatternHandlingTest extends AbstractTest implements InterpreterO
     }
 
     public void print(String s) {
-	    TraceManager.addDev("info from interpreter:" + s);
-	    outputResult.append(s);
+        TraceManager.addDev("info from interpreter:" + s);
+        outputResult.append(s);
     }
-	
-	@Test
+    
+    @Test
     public void testIntegratingTMR() throws Exception {
         String filePathCreateTMR = getBaseResourcesDir() + PATH_PATTERNS[0] +  PATH_CLI_TO_CREATE_PATTERNS[0];
         String script;
diff --git a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/apply-tmr-in-modelWithOneSensor b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/apply-tmr-in-modelWithOneSensor
index 0cb6a393e473d08fb2c2435d3db4529e29b58c69..1f6e8e57e852b14f6bf02108fc92940e860a6161 100644
--- a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/apply-tmr-in-modelWithOneSensor
+++ b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/apply-tmr-in-modelWithOneSensor
@@ -1,4 +1,4 @@
-pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithOneSensor.tmap
-pa a -p resources/test/cli/testPatternHandling/tmr/
-pa a -pc resources/test/cli/testPatternHandling/tmr/modelWithOneSensor-config.json
-pa a -g resources/test/cli/testPatternHandling/tmr/modelsAfterIntegratingTMR/ modelWithOneSensorIntegTMR
+pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithOneSensor.tmap  # Path of the model in which we will integrate the pattern.
+pa a -p resources/test/cli/testPatternHandling/tmr/  # Path of the pattern that we want to integrate.
+pa a -pc resources/test/cli/testPatternHandling/tmr/modelWithOneSensor-config.json  # Path of the configuration json file.
+pa a -g resources/test/cli/testPatternHandling/tmr/modelsAfterIntegratingTMR/ modelWithOneSensorIntegTMR  # Generate TMAP file of the model after intergrating the pattern. The generated file will be located in the given path and will have "modelWithOneSensorIntegTMR" as name.
diff --git a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/apply-tmr-in-modelWithThreeSensors b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/apply-tmr-in-modelWithThreeSensors
index 5af221b880609dd97adb2bf5a1728a0785ed4dc8..f35a8cea8359ce9df6cad855b112a3396e92292b 100644
--- a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/apply-tmr-in-modelWithThreeSensors
+++ b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/apply-tmr-in-modelWithThreeSensors
@@ -1,4 +1,4 @@
-pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithThreeSensors.tmap
-pa a -p resources/test/cli/testPatternHandling/tmr/
-pa a -pc resources/test/cli/testPatternHandling/tmr/modelWithThreeSensors-config.json
-pa a -g resources/test/cli/testPatternHandling/tmr/modelsAfterIntegratingTMR/ modelWithThreeSensorsIntegTMR
+pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithThreeSensors.tmap  # Path of the model in which we will integrate the pattern.
+pa a -p resources/test/cli/testPatternHandling/tmr/  # Path of the pattern that we want to integrate.
+pa a -pc resources/test/cli/testPatternHandling/tmr/modelWithThreeSensors-config.json  # Path of the configuration json file.
+pa a -g resources/test/cli/testPatternHandling/tmr/modelsAfterIntegratingTMR/ modelWithThreeSensorsIntegTMR  # Generate TMAP file of the model after intergrating the pattern. The generated file will be located in the given path and will have "modelWithThreeSensorsIntegTMR" as name.
diff --git a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/configurate-tmr-for-modelWithOneSensor b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/configurate-tmr-for-modelWithOneSensor
index 3f0a43c53589feb2918972880e2c76ca3707b439..4a8a7119462dead1d9177daf39989f4f0b97e25d 100644
--- a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/configurate-tmr-for-modelWithOneSensor
+++ b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/configurate-tmr-for-modelWithOneSensor
@@ -1,29 +1,29 @@
-pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithOneSensor.tmap
-pa sc -p resources/test/cli/testPatternHandling/tmr/
-pa sc -sp
-pa sc -ct SensorClone Sensor
-pa sc -ct SensorClone2 Sensor
-pa sc -ctl
-pa sc -ctr SensorClone
-pa sc -ct SensorClone1 Sensor
-pa sc -plnc
-pa sc -pl InterpreterC.dataC
-pa sc -co InterpreterA.dataA Sensor.sensorData
-pa sc -co InterpreterB.dataB SensorClone1.sensorData 
-pa sc -co InterpreterC.dataC SensorClone2.sensorData
-pa sc -co Voter.resultData Receiver.sensorData
-pa sc -cor InterpreterA.dataA
-pa sc -co InterpreterA.dataA Sensor.sensorData
-pa sc -co Voter.moveto_FAIL_SAFE Receiver.sensorData NEW
-pa sc -col
-pa sc -cptl
-pa sc -cpd ALL
-pa sc -tctl
-pa sc -tcn SensorClone1 BusEnvironment
-pa sc -tcm SensorClone2 SensorClone1
-pa sc -tcn Voter MainBus
-pa sc -mcn SensorClone1.sensorData BusReceiver
-pa sc -mcm InterpreterA.resA SensorClone1.sensorData
-pa sc -mctl
-pa sc -ua Timer dataReceivingTimeout 1000
-pa sc -m resources/test/cli/testPatternHandling/tmr/modelWithOneSensor-config.json
+pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithOneSensor.tmap  # Path of the model in which we will integrate the pattern.
+pa sc -p resources/test/cli/testPatternHandling/tmr/  # Path of the pattern that we want to integrate.
+pa sc -sp  # Get the name of the selected pattern.
+pa sc -ct SensorClone Sensor  # Create a task clone named SensorClone from the task Sensor.
+pa sc -ct SensorClone2 Sensor  # Create a task clone named SensorClone2 from the task Sensor.
+pa sc -ctl  # Get list of cloned tasks.
+pa sc -ctr SensorClone  # Remove the cloned task SensorClone.
+pa sc -ct SensorClone1 Sensor  # Create a task clone named SensorClone1 from the task Sensor.
+pa sc -plnc  # Get the list of pattern's ports that should be connected.
+pa sc -pl InterpreterC.dataC  # Get the list of available ports in model that could be used to connect with InterpreterC.dataC.
+pa sc -co InterpreterA.dataA Sensor.sensorData  # Connect InterpreterA.dataA (pattern side) with Sensor.sensorData (model side).
+pa sc -co InterpreterB.dataB SensorClone1.sensorData  # Connect InterpreterB.dataB (pattern side) with SensorClone1.sensorData (model side).
+pa sc -co InterpreterC.dataC SensorClone2.sensorData  # Connect InterpreterC.dataC (pattern side) with SensorClone2.sensorData (model side).
+pa sc -co Voter.resultData Receiver.sensorData  # Connect Voter.resultData (pattern side) with Receiver.sensorData (model side).
+pa sc -cor InterpreterA.dataA  # Remove the connection of InterpreterA.dataA.
+pa sc -co InterpreterA.dataA Sensor.sensorData  # Connect InterpreterA.dataA (pattern side) with Sensor.sensorData (model side).
+pa sc -co Voter.moveto_FAIL_SAFE Receiver.sensorData NEW  # Connect Voter.moveto_FAIL_SAFE (pattern side) with a New port.
+pa sc -col  # get the list of connections already made.
+pa sc -cptl  # get list of ports to be configured.
+pa sc -cpd ALL  # Choose to remove all the ports as decision.
+pa sc -tctl  # Get list of tasks to be mapped. 
+pa sc -tcn SensorClone1 BusEnvironment  # Map task SensorClone1 in a new CPU that will be linked to the bus BusEnvironment.
+pa sc -tcm SensorClone2 SensorClone1  # Map task SensorClone2 in the same CPU as SensorClone1.
+pa sc -tcn Voter MainBus  # Map task Voter in a new CPU that will be linked to the bus MainBus.
+pa sc -mcn SensorClone1.sensorData BusReceiver  # Map channel SensorClone1.sensorData in a new Memory that will be linked to the bus BusReceiver.
+pa sc -mcm InterpreterA.resA SensorClone1.sensorData  # Map channel InterpreterA.resA in the same Memory as SensorClone1.sensorData.
+pa sc -mctl  # Get list of channels to be mapped.
+pa sc -ua Timer dataReceivingTimeout 1000  # Change the value of the attribut dataReceivingTimeout to 1000.
+pa sc -m resources/test/cli/testPatternHandling/tmr/modelWithOneSensor-config.json  # Create the configuration json file by giving a name and a path for this json file.
diff --git a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/configurate-tmr-for-modelWithThreeSensors b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/configurate-tmr-for-modelWithThreeSensors
index dec9cdaa649379bd400d177816113939f24ee78e..525b45a04ae63b7d06bc4fc3fc9fb45b850a50b1 100644
--- a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/configurate-tmr-for-modelWithThreeSensors
+++ b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/configurate-tmr-for-modelWithThreeSensors
@@ -1,16 +1,15 @@
-pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithThreeSensors.tmap
-pa sc -p resources/test/cli/testPatternHandling/tmr/
-pa sc -sp
-pa sc -ctl
-pa sc -plnc
-pa sc -pl InterpreterC.dataC
-pa sc -co InterpreterA.dataA Sensor1.sensorData1
-pa sc -co InterpreterB.dataB Sensor2.sensorData2
-pa sc -co InterpreterC.dataC Sensor3.sensorData3
-pa sc -co Voter.resultData Receiver.sensorData1
-pa sc -co Voter.moveto_FAIL_SAFE Receiver.sensorData1 NEW
-pa sc -cpd ALL
-pa sc -tcn InterpreterB MainBus
-pa sc -tcm InterpreterA InterpreterB
-pa sc -ua Timer dataReceivingTimeout 500
-pa sc -m resources/test/cli/testPatternHandling/tmr/modelWithThreeSensors-config.json
+pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithThreeSensors.tmap  # Path of the model in which we will integrate the pattern.
+pa sc -p resources/test/cli/testPatternHandling/tmr/  # Path of the pattern that we want to integrate.
+pa sc -sp  # Get the name of the selected pattern.
+pa sc -plnc  # Get the list of pattern's ports that should be connected.
+pa sc -pl InterpreterC.dataC  # Get the list of available ports in model that could be used to connect with InterpreterC.dataC.
+pa sc -co InterpreterA.dataA Sensor1.sensorData1  # Connect InterpreterA.dataA (pattern side) with Sensor1.sensorData1 (model side).
+pa sc -co InterpreterB.dataB Sensor2.sensorData2  # Connect InterpreterB.dataB (pattern side) with Sensor2.sensorData2 (model side).
+pa sc -co InterpreterC.dataC Sensor3.sensorData3  # Connect InterpreterC.dataC (pattern side) with Sensor3.sensorData3 (model side).
+pa sc -co Voter.resultData Receiver.sensorData1  # Connect Voter.resultData (pattern side) with Sensor.sensorData (model side).
+pa sc -co Voter.moveto_FAIL_SAFE Receiver.sensorData1 NEW  # Connect Voter.moveto_FAIL_SAFE (pattern side) with a New port.
+pa sc -cpd ALL  # Choose to remove all the ports as decision.
+pa sc -tcn InterpreterB MainBus  # Map task InterpreterB in a new CPU that will be linked to the bus MainBus.
+pa sc -tcm InterpreterA InterpreterB  # Map task InterpreterA in the same CPU as InterpreterB.
+pa sc -ua Timer dataReceivingTimeout 500  # Change the value of the attribut dataReceivingTimeout to 500.
+pa sc -m resources/test/cli/testPatternHandling/tmr/modelWithThreeSensors-config.json  # Create the configuration json file by giving a name and a path for this json file.
diff --git a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/create-tmr b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/create-tmr
index 2e16045700f0046a4f188984ee51df856d99cad3..6d4519b91bd04d66e784e1bacb178847b571d0f6 100644
--- a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/create-tmr
+++ b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/create-tmr
@@ -1,9 +1,9 @@
-pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/tmrPattern.tmap
-pa c -n tmr
-pa c -p resources/test/cli/testPatternHandling/
-pa c -t
-pa c -a Voter Timer InterpreterA InterpreterB
-pa c -r Timer
-pa c -a InterpreterC Timer
-pa c -l
-pa c -m
\ No newline at end of file
+pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/tmrPattern.tmap  # Path of the model from which we will create a pattern.
+pa c -n tmr  # Give a name to the pattern to create.
+pa c -p resources/test/cli/testPatternHandling/  # Path where patthern files will be created.
+pa c -t  # Show the tasks names of the model "tmrPattern".
+pa c -a Voter Timer InterpreterA InterpreterB  # Select the tasks that will make up the pattern.
+pa c -r Timer  # Remove the task Timer from the list of tasks that will make up the pattern.
+pa c -a InterpreterC Timer  # Add new elements in the previous list of tasks.
+pa c -l  # Get the current tasks that will constitue the pattern.
+pa c -m  # Make the pattern.
diff --git a/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/incomplete-configuration-tmr-for-modelWithOneSensor b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/incomplete-configuration-tmr-for-modelWithOneSensor
new file mode 100644
index 0000000000000000000000000000000000000000..ca4792847bc010136dfa818c454dc70fdba408e0
--- /dev/null
+++ b/ttool/src/test/resources/cli/testPatternHandling/tmr/cli/incomplete-configuration-tmr-for-modelWithOneSensor
@@ -0,0 +1,26 @@
+pa dltmap ../src/test/resources/cli/testPatternHandling/tmr/input/modelsToIntegrateTMR/modelWithOneSensor.tmap  # Path of the model in which we will integrate the pattern.
+pa sc -p resources/test/cli/testPatternHandling/tmr/  # Path of the pattern that we want to integrate.
+pa sc -sp  # Get the name of the selected pattern.
+pa sc -ct SensorClone Sensor  # Create a task clone named SensorClone from the task Sensor.
+pa sc -ct SensorClone2 Sensor  # Create a task clone named SensorClone2 from the task Sensor.
+pa sc -ctl  # Get list of cloned tasks.
+pa sc -ctr SensorClone  # Remove the cloned task SensorClone.
+pa sc -ct SensorClone1 Sensor  # Create a task clone named SensorClone1 from the task Sensor.
+pa sc -plnc  # Get the list of pattern's ports that should be connected.
+pa sc -pl InterpreterC.dataC  # Get the list of available ports in model that could be used to connect with InterpreterC.dataC.
+pa sc -co InterpreterA.dataA Sensor.sensorData  # Connect InterpreterA.dataA (pattern side) with Sensor.sensorData (model side).
+pa sc -co InterpreterB.dataB SensorClone1.sensorData  # Connect InterpreterB.dataB (pattern side) with SensorClone1.sensorData (model side).
+pa sc -co InterpreterC.dataC SensorClone2.sensorData  # Connect InterpreterC.dataC (pattern side) with SensorClone2.sensorData (model side).
+pa sc -co Voter.resultData Receiver.sensorData  # Connect Voter.resultData (pattern side) with Receiver.sensorData (model side).
+pa sc -col  # get the list of connections already made.
+pa sc -cptl  # get list of ports to be configured.
+pa sc -cpd ALL  # Choose to remove all the ports as decision.
+pa sc -tctl  # Get list of tasks to be mapped. 
+pa sc -tcn SensorClone1 BusEnvironment  # Map task SensorClone1 in a new CPU that will be linked to the bus BusEnvironment.
+pa sc -tcm SensorClone2 SensorClone1  # Map task SensorClone2 in the same CPU as SensorClone1.
+pa sc -tcn Voter MainBus  # Map task Voter in a new CPU that will be linked to the bus MainBus.
+pa sc -mcn SensorClone1.sensorData BusReceiver  # Map channel SensorClone1.sensorData in a new Memory that will be linked to the bus BusReceiver.
+pa sc -mcm InterpreterA.resA SensorClone1.sensorData  # Map channel InterpreterA.resA in the same Memory as SensorClone1.sensorData.
+pa sc -mctl  # Get list of channels to be mapped.
+pa sc -ua Timer dataReceivingTimeout 1000  # Change the value of the attribut dataReceivingTimeout to 1000.
+pa sc -m resources/test/cli/testPatternHandling/tmr/modelWithOneSensor-incomplete-config.json  # Create the configuration json file by giving a name and a path for this json file.
diff --git a/webcrawler/client/build.gradle b/webcrawler/client/build.gradle
index 389fdee413964edec22aa6832fb619ce6a7a9e97..ad1b8615c8f04c441562c1f65da2b98c83a37c6a 100644
--- a/webcrawler/client/build.gradle
+++ b/webcrawler/client/build.gradle
@@ -23,7 +23,7 @@ dependencies {
     compileOnly name: 'JavaPlot'
     compileOnly name: 'jaxen-1.1.6'
     compileOnly name: 'opencloud'
-    compileOnly name: 'jna-3.3.0'
+    compileOnly name: 'jna-5.13.0'
     implementation name: 'commons-math3-3.6.1'
     implementation name: 'jfreechart-1.6.0'
     implementation name: 'json-java'
diff --git a/webcrawler/server/build.gradle b/webcrawler/server/build.gradle
index 98cf4fc26e55d10791aafcc003e170ede4285f2f..965410a33f00f472880c87988265fd3597c27156 100644
--- a/webcrawler/server/build.gradle
+++ b/webcrawler/server/build.gradle
@@ -23,7 +23,7 @@ dependencies {
     implementation name: 'JavaPlot'
     implementation name: 'jaxen-1.1.6'
     implementation name: 'opencloud'
-    compileOnly name: 'jna-3.3.0'
+    compileOnly name: 'jna-5.13.0'
     implementation name: 'commons-math3-3.6.1'
     implementation name: 'jfreechart-1.6.0'
     implementation name: 'json-java'