diff --git a/src/main/java/tmltranslator/TMLComparingMethod.java b/src/main/java/tmltranslator/TMLComparingMethod.java
index f6c1bbddaa2196060e72bb056ef77ec8e49f05e0..29f4c3154dbd3b8580f7e8e5ad756e82e93858cb 100644
--- a/src/main/java/tmltranslator/TMLComparingMethod.java
+++ b/src/main/java/tmltranslator/TMLComparingMethod.java
@@ -55,8 +55,8 @@ public class TMLComparingMethod {
         list1 = new ArrayList<>(list1);
         list2 = new ArrayList<>(list2);
 
-        Collections.sort(list1, Comparator.comparing(TMLElement::getID));
-        Collections.sort(list2, Comparator.comparing(TMLElement::getID));
+        Collections.sort(list1, Comparator.comparing(TMLElement::getName));
+        Collections.sort(list2, Comparator.comparing(TMLElement::getName));
 
         boolean test;
 
@@ -192,9 +192,14 @@ public class TMLComparingMethod {
         }
 
         boolean test;
-        for (SecurityPattern sp : map1.keySet()) {
-            test = isHwMemoryListEquals(map1.get(sp), map2.get(sp));
-            if (!test) return false;
+        for (SecurityPattern spMap1 : map1.keySet()) {
+            for (SecurityPattern spMap2 : map2.keySet()) {
+                if (spMap1.getName().equals(spMap2.getName())) {
+                    test = isHwMemoryListEquals(map1.get(spMap1), map2.get(spMap2));
+                    if (!test) return false;
+                    break;
+                }
+            }
         }
 
         return true;
@@ -250,8 +255,22 @@ public class TMLComparingMethod {
 
         boolean test;
 
-        for (int i = 0; i < list1.size(); i++) {
-            test =  list1.get(i).equalSpec(list2.get(i));
+        for (TMLActivityElement tmlActivityElement : list1) {
+            test = tmlActivityElement.equalSpec(list2.get(0));
+            if (test) {
+                list2.remove(0);
+            } else if (list2.size() > 1) {
+                int comp = 1;
+                while (tmlActivityElement.getName().equals(list2.get(comp).getName())) {
+                    test = tmlActivityElement.equalSpec(list2.get(comp));
+                    if (test) {
+                        list2.remove(comp);
+                        break;
+                    } else {
+                        comp += 1;
+                    }
+                }
+            }
             if (!test) return false;
         }
 
diff --git a/src/main/java/tmltranslator/TMLTextSpecification.java b/src/main/java/tmltranslator/TMLTextSpecification.java
index a7903cc125494afd77332b0699c5947ae159f4bc..ecc268ef908fb346170f516c46113d7938b2f2ca 100755
--- a/src/main/java/tmltranslator/TMLTextSpecification.java
+++ b/src/main/java/tmltranslator/TMLTextSpecification.java
@@ -2790,13 +2790,12 @@ public class TMLTextSpecification<E> {
                     if ((_split[10].compareTo("" + DECRYPTION_PROCESS) == 0) || (_split[10].compareTo("" + ENCRYPTION_PROCESS) == 0)) {
                         //Security operation
                         TraceManager.addDev("Found security pattern: " + _split[2]);
-                        TMLExecC execc = new TMLExecC("encrypt_" + _split[2], null);
+                        TMLExecC execc = new TMLExecC(_split[2], null);
                         execc.setAction(_split[1]);
                         SecurityPattern sp = securityPatternMap.get(_split[2]);
                         execc.setSecurityPattern(sp);
                         if (_split[10].compareTo("" + DECRYPTION_PROCESS) == 0) {
                             execc.setDecryptionProcess(true);
-                            execc.setName("decrypt_" + _split[2]);
                         }
                         if (!tmlm.getSecurityTaskMap().containsKey(sp)) {
                             tmlm.getSecurityTaskMap().put(sp, new ArrayList<TMLTask>());
diff --git a/src/main/java/tmltranslator/patternhandling/PatternIntegration.java b/src/main/java/tmltranslator/patternhandling/PatternIntegration.java
index a5813c0478395e56327eb8562856a1b1c93483f2..2b26dba8fc744049977ac11a72c3553fab279313 100644
--- a/src/main/java/tmltranslator/patternhandling/PatternIntegration.java
+++ b/src/main/java/tmltranslator/patternhandling/PatternIntegration.java
@@ -1855,8 +1855,8 @@ public class PatternIntegration implements Runnable {
             if (_appTabName != "") {
                 _tmapModel = putBackPrefixNames(_tmapModel, _appTabName);
             
-                SecurityGenerationForTMAP secgen = new SecurityGenerationForTMAP(_appTabName, _tmapModel, "100", "0", "100", new HashMap<String,
-                        java.util.List<String>>(), false);
+                SecurityGenerationForTMAP secgen = new SecurityGenerationForTMAP(_appTabName, _tmapModel, "100", "0", "100", new ArrayList<>(),
+                        false);
                 _tmapModel = secgen.startThread();
                 _tmapModel = secgen.autoMapKeys();
                 _tmapModel = removePrefixNames(_tmapModel);
diff --git a/src/main/java/tmltranslator/patternhandling/SecurityGenerationForTMAP.java b/src/main/java/tmltranslator/patternhandling/SecurityGenerationForTMAP.java
index 59b9d81e7199f90ab84ea4d3e5036a0165c64b26..46ef82b662cd127cb530651460ae5adf47ab941b 100644
--- a/src/main/java/tmltranslator/patternhandling/SecurityGenerationForTMAP.java
+++ b/src/main/java/tmltranslator/patternhandling/SecurityGenerationForTMAP.java
@@ -54,6 +54,7 @@ import avatartranslator.AvatarSpecification;
 import avatartranslator.toproverif.AVATAR2ProVerif;
 import common.ConfigurationTTool;
 import launcher.RshClient;
+import myutil.FileUtils;
 import myutil.TraceManager;
 import org.apache.commons.math3.util.Pair;
 import proverifspec.*;
@@ -73,7 +74,7 @@ public class SecurityGenerationForTMAP implements Runnable {
     private final String encComp;
     private final String overhead;
     private final String decComp;
-    private final Map<String, List<String>> selectedCPUTasks;
+    private final List<String> selectedTasks;
     private final boolean linkedHSMs;
 
     private final Map<TMLTask, List<TMLTask>> taskAndItsHSMMap = new HashMap<>();
@@ -89,13 +90,13 @@ public class SecurityGenerationForTMAP implements Runnable {
     private final Map<Pair<TMLTask, TMLChannel>, TMLChannel> channelFromHsmMap = new HashMap<>();
 
     public SecurityGenerationForTMAP(String appName, TMLMapping<?> tmap, String encComp, String overhead, String decComp,
-                                     Map<String, List<String>> selectedCPUTasks, boolean isLinkedHSMs) {
+                                     List<String> selectedTasks, boolean isLinkedHSMs) {
         this.appName = appName;
         this.tmap = tmap;
         this.overhead = overhead;
         this.decComp = decComp;
         this.encComp = encComp;
-        this.selectedCPUTasks = selectedCPUTasks;
+        this.selectedTasks = selectedTasks;
         this.linkedHSMs = isLinkedHSMs;
     }
     
@@ -121,16 +122,14 @@ public class SecurityGenerationForTMAP implements Runnable {
 
         AVATAR2ProVerif avatar2proverif = new AVATAR2ProVerif(avatarspec);
         try {
-            avatar2proverif.generateProVerif(true, true, 3, true, true);
-            //warnings = avatar2proverif.getWarnings();
+            ProVerifSpec proverifSpec =avatar2proverif.generateProVerif(true, true, 3, true, true);
 
-            if (!avatar2proverif.saveInFile("pvspec")) {
-                return;
-            }
+            FileUtils.saveFile(ConfigurationTTool.ProVerifCodeDirectory + "pvspec", proverifSpec.getStringSpec());
 
             RshClient rshc = new RshClient(ConfigurationTTool.ProVerifVerifierHost);
 
-            rshc.setCmd(ConfigurationTTool.ProVerifVerifierPath + " -in pitype pvspec");
+            rshc.setCmd(ConfigurationTTool.ProVerifVerifierPath + " -in pitype " + ConfigurationTTool.ProVerifCodeDirectory +  "pvspec");
+            TraceManager.addDev(ConfigurationTTool.ProVerifVerifierPath + " -in pitype " + ConfigurationTTool.ProVerifCodeDirectory +  "pvspec");
             rshc.sendExecuteCommandRequest();
             Reader data = rshc.getDataReaderFromProcess();
 
@@ -265,33 +264,18 @@ public class SecurityGenerationForTMAP implements Runnable {
 
         proverifAnalysis(tmap, nonConfChans, nonWeakAuthChans, nonStrongAuthChans);
 
-        for (String cpuName : selectedCPUTasks.keySet()) {
-            for (String task : selectedCPUTasks.get(cpuName)) {
-                String taskLongName = appName + "__" + task;
-                initHSMArchDiagram(tmap.getTaskByName(taskLongName));
-            }
+        for (String task : selectedTasks) {
+            String taskLongName = appName + "__" + task;
+            initHSMArchDiagram(tmap.getTaskByName(taskLongName));
         }
 
-        //ToSecure keeps a tmap of origin task: {dest task} for which security operators need to be added
-        //ToSecureRev keeps a tmap of dest task: {origin task} for which security operators need to be added
-
-        //SecOutChannels are channels which need symmetric encryption operators added
-        //SecInChannels are channels which need sym decryption operators added
-        //nonceInChannels are channels which need to send a nonce before receiving the channel data
-        //nonceOutChannels are channels which need to receive a nonce before sending the channel data
-        //macInChannels are channels which need verifymac operators added
-        //macOutChannels are channels which need mac operators added
-
-        //hsmSecInChannels need to send data to the hsm to decrypt after receiving channel data
-        //hsmSecOutChannels need to send data to the hsm to encrypt before sending channel data
-
         //With the proverif results, check which channels need to be secured
 
-        HashSet<TMLChannel> chAddCSA = new HashSet<>();
-        HashSet<TMLChannel> chAddCWA = new HashSet<>();
-        HashSet<TMLChannel> chAddSA = new HashSet<>();
-        HashSet<TMLChannel> chAddWA = new HashSet<>();
-        HashSet<TMLChannel> chAddC = new HashSet<>();
+        LinkedHashSet<TMLChannel> chAddCSA = new LinkedHashSet<>();
+        LinkedHashSet<TMLChannel> chAddCWA = new LinkedHashSet<>();
+        LinkedHashSet<TMLChannel> chAddSA = new LinkedHashSet<>();
+        LinkedHashSet<TMLChannel> chAddWA = new LinkedHashSet<>();
+        LinkedHashSet<TMLChannel> chAddC = new LinkedHashSet<>();
 
         for (TMLChannel chan : tmlmodel.getChannels()) {
             boolean nonConf = nonConfChans.contains(chan);
@@ -319,7 +303,6 @@ public class SecurityGenerationForTMAP implements Runnable {
             }
         }
         for (TMLChannel ch : chAddCSA) {
-            //SecurityPattern spNonce = FindOrCreateNonceSecurityPattern(ch.getOriginTask(), ch.getDestinationTask());
             SecurityPattern spNonce = findOrCreateNonceSecurityPattern(ch);
             boolean nonceChannelExist = nonceChannelIsCreated(ch);
             TMLChannel chNonce = findOrCreateNonceChannel(ch);
@@ -335,7 +318,7 @@ public class SecurityGenerationForTMAP implements Runnable {
                     encComp, decComp, spNonce.getName(), "", "");
             handleSecurityGoalsForChannels(tmlmodel, ch, secPattern, !nonceChannelExist, spNonce, chNonce, linkedHSMs);
         }
-        HashSet<TMLChannel> chAddCAndCWA = new HashSet<>(chAddCWA);
+        LinkedHashSet<TMLChannel> chAddCAndCWA = new LinkedHashSet<>(chAddCWA);
         chAddCAndCWA.addAll(chAddC);
 
         for (TMLChannel ch : chAddCAndCWA) {
@@ -386,17 +369,6 @@ public class SecurityGenerationForTMAP implements Runnable {
         for (TMLTask hsmTask : hsmTaskOperationMap.keySet()) {
             buildHSMActivityDiagram(hsmTask, hsmTaskOperationMap.get(hsmTask));
             TMLTask taskOfHSM = hsmTaskRequestMap.get(hsmTask).getOriginTasks().get(0);
-//            for (TMLChannel ch : tmlmodel.getChannels(hsmTask)) {
-//                boolean isMappedToMem = false;
-//                for (HwCommunicationNode commNode : taskHSMCommunicationNodesMap.get(taskOfHSM)) {
-//                    if (!isMappedToMem || !(commNode instanceof HwMemory)) {
-//                        tmap.addCommToHwCommNode(ch, commNode);
-//                    }
-//                    if (commNode instanceof HwMemory) {
-//                        isMappedToMem = true;
-//                    }
-//                }
-//            }
             updateHSMArchDiagram(hsmTask, taskAndHSMBusMap.get(taskOfHSM));
         }
     }
@@ -408,12 +380,12 @@ public class SecurityGenerationForTMAP implements Runnable {
         List<TMLReadChannel> listRd = readOperatorsOfChannel(ch.getDestinationTask(), ch);
         TMLTask hsmTaskForOriginTask = null;
         TMLTask hsmTaskForDestinationTask = null;
-        TMLChannel chToHSM = null;
-        TMLChannel chFromHSM = null;
+        TMLChannel chToHSM;
+        TMLChannel chFromHSM;
         TMLChannel chToDestinationHSM = null;
         TMLChannel chFromOriginHSM = null;
-        TMLChannel chSendNonceToHSM = null;
-        TMLChannel chReceiveNonceFromHSM = null;
+        TMLChannel chSendNonceToHSM;
+        TMLChannel chReceiveNonceFromHSM;
         if (taskAndItsHSMMap.containsKey(ch.getOriginTask())) {
             hsmTaskForOriginTask = initHSMTaskDiagram(ch.getOriginTask(), "Encrypt_" + ch.getChannelName());
         }
@@ -439,6 +411,7 @@ public class SecurityGenerationForTMAP implements Runnable {
                     chFromHSM = findOrCreateChannelFromHSM(hsmTaskForOriginTask, ch.getDestinationTask(), ch);
                     chFromHSM.checkConf = true;
                     chFromHSM.checkAuth = true;
+                    chFromHSM.setDestinationTask(ch.getDestinationTask());
                     chFromOriginHSM = chFromHSM;
                 }
             }
@@ -555,7 +528,7 @@ public class SecurityGenerationForTMAP implements Runnable {
             }
             try {
                 if (chFromOriginHSM != null) {
-                    addDecryptionADConnectedToOtherHSM(ch.getOriginTask(), listRd, secPattern, chFromOriginHSM);
+                    addDecryptionADConnectedToOtherHSM(ch.getDestinationTask(), listRd, secPattern, chFromOriginHSM);
                 } else {
                     addDecryptionAD(ch.getDestinationTask(), listRd, secPattern);
                 }
@@ -585,102 +558,135 @@ public class SecurityGenerationForTMAP implements Runnable {
         }
     }
 
-    private void mergeToCommNodeList(List<HwCommunicationNode> listCommNode, Map<TMLChannel, Set<HwCommunicationNode>> chCommNodesMap, TMLChannel ch) {
+    private void mergeBusToCommNodeList(List<HwCommunicationNode> listCommNode, Map<TMLChannel, Set<HwCommunicationNode>> chCommNodesMap,
+                                      TMLChannel ch) {
+        for (HwCommunicationNode commNode : listCommNode) {
+            if (!(commNode instanceof HwMemory)) {
+                chCommNodesMap.get(ch).add(commNode);
+            }
+        }
+    }
+
+    private void mergeMemoryToCommNodeList(List<HwCommunicationNode> listCommNode, Map<TMLChannel, Set<HwCommunicationNode>> chCommNodesMap,
+                                        TMLChannel ch) {
         for (HwCommunicationNode commNode : listCommNode) {
-            if (!(commNode instanceof HwMemory) || chCommNodesMap.get(ch).stream().noneMatch(c -> c instanceof HwMemory)) {
-                TraceManager.addDev("add : " + commNode.getName() + " To : " + ch.getChannelName());
+            if ((commNode instanceof HwMemory) || chCommNodesMap.get(ch).stream().noneMatch(c -> c instanceof HwMemory)) {
                 chCommNodesMap.get(ch).add(commNode);
             }
         }
     }
 
+    private HwBus getAssociatedBusOfTask(TMLTask task) {
+        HwExecutionNode execNode = tmap.getHwNodeOf(task);
+        for (HwLink link : tmap.getArch().getHwLinks()) {
+            if (link.hwnode == execNode) {
+                return link.bus;
+            }
+        }
+        return null;
+    }
+
+    private HwMemory getAssociatedMemoryOfBus(HwBus bus) {
+        for (HwLink link : tmap.getArch().getHwLinks()) {
+            if (link.bus == bus && link.hwnode instanceof HwMemory) {
+                return (HwMemory) link.hwnode;
+            }
+        }
+        return null;
+    }
+
     private Map<TMLChannel, Set<HwCommunicationNode>> mapHSMChannelsInCommunicationNodes(TMLTask hsmTaskForOriginTask,
                                                                                          TMLTask hsmTaskForDestinationTask, TMLChannel ch) {
         Map<TMLChannel, Set<HwCommunicationNode>> chCommNodesMap = new HashMap<>();
         TMLModeling<?> tmlmodel = tmap.getTMLModeling();
         if (hsmTaskForOriginTask != null) {
-            TraceManager.addDev("hsmTaskForOriginTask = " + hsmTaskForOriginTask.getTaskName());
             TMLTask taskOfHSM = hsmTaskRequestMap.get(hsmTaskForOriginTask).getOriginTasks().get(0);
             for (TMLChannel chHSMOrigin : tmlmodel.getChannelsFromMe(hsmTaskForOriginTask)) {
                 if (!chCommNodesMap.containsKey(chHSMOrigin)) {
-                    chCommNodesMap.put(chHSMOrigin, new HashSet<>());
+                    chCommNodesMap.put(chHSMOrigin, new LinkedHashSet<>());
                 }
                 if (taskHSMCommunicationNodesMap.containsKey(taskOfHSM)) {
-                    mergeToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMOrigin);
+                    mergeBusToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMOrigin);
+                    mergeMemoryToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMOrigin);
                 }
                 TMLTask corresTask = null;
                 if (hsmTaskRequestMap.containsKey(chHSMOrigin.getDestinationTask())) {
                     corresTask = hsmTaskRequestMap.get(chHSMOrigin.getDestinationTask()).getOriginTasks().get(0);
                 }
                 if (corresTask != null && taskHSMCommunicationNodesMap.containsKey(corresTask)) {
-                    mergeToCommNodeList(taskHSMCommunicationNodesMap.get(corresTask), chCommNodesMap, chHSMOrigin);
-                    mergeToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMOrigin);
-                } else if (!chHSMOrigin.getDestinationTask().equals(ch.getOriginTask())) {
-                    mergeToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMOrigin);
+                    mergeBusToCommNodeList(taskHSMCommunicationNodesMap.get(corresTask), chCommNodesMap, chHSMOrigin);
+                    mergeBusToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMOrigin);
+                } else if (chHSMOrigin.getDestinationTask().equals(ch.getOriginTask())) {
+                    chCommNodesMap.get(chHSMOrigin).add(getAssociatedBusOfTask(chHSMOrigin.getDestinationTask()));
+                } else {
+                    mergeBusToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMOrigin);
                 }
             }
 
             for (TMLChannel chHSMOrigin : tmlmodel.getChannelsToMe(hsmTaskForOriginTask)) {
-                TraceManager.addDev("chHSMOrigin = " + chHSMOrigin.getChannelName());
                 if (!chCommNodesMap.containsKey(chHSMOrigin)) {
-                    chCommNodesMap.put(chHSMOrigin, new HashSet<>());
+                    chCommNodesMap.put(chHSMOrigin, new LinkedHashSet<>());
                 }
                 if (taskHSMCommunicationNodesMap.containsKey(taskOfHSM)) {
-                    TraceManager.addDev("containsKey(hsmTaskForOriginTask)");
-                    mergeToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMOrigin);
+                    mergeBusToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMOrigin);
                 }
                 TMLTask corresTask = null;
                 if (hsmTaskRequestMap.containsKey(chHSMOrigin.getOriginTask())) {
                     corresTask = hsmTaskRequestMap.get(chHSMOrigin.getOriginTask()).getOriginTasks().get(0);
                 }
                 if (corresTask != null && taskHSMCommunicationNodesMap.containsKey(corresTask)) {
-                    TraceManager.addDev("containsKey(chHSMOrigin.getOriginTask()) = " + corresTask.getTaskName());
-                    mergeToCommNodeList(taskHSMCommunicationNodesMap.get(corresTask), chCommNodesMap, chHSMOrigin);
-                    mergeToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMOrigin);
-                } else if (!chHSMOrigin.getOriginTask().equals(ch.getOriginTask())) {
-                    TraceManager.addDev("chHSMOrigin.getOriginTask() != ch.getOriginTask()");
-                    TraceManager.addDev("chHSMOrigin.getOriginTask() = " + chHSMOrigin.getOriginTask().getTaskName());
-                    TraceManager.addDev("ch.getOriginTask() = " + ch.getOriginTask().getTaskName());
-                    mergeToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMOrigin);
+                    mergeBusToCommNodeList(taskHSMCommunicationNodesMap.get(corresTask), chCommNodesMap, chHSMOrigin);
+                    mergeBusToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMOrigin);
+                } else if (chHSMOrigin.getOriginTask().equals(ch.getOriginTask())) {
+                    mapChannelsInArch(chCommNodesMap, taskOfHSM, chHSMOrigin);
+                } else {
+                    mergeBusToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMOrigin);
+                    mapChannelsInArch(chCommNodesMap, taskOfHSM, chHSMOrigin);
                 }
             }
         }
         if (hsmTaskForDestinationTask != null) {
-            TMLTask taskOfHSM = hsmTaskRequestMap.get(hsmTaskForOriginTask).getOriginTasks().get(0);
+            TMLTask taskOfHSM = hsmTaskRequestMap.get(hsmTaskForDestinationTask).getOriginTasks().get(0);
             for (TMLChannel chHSMDestination : tmlmodel.getChannelsFromMe(hsmTaskForDestinationTask)) {
                 if (!chCommNodesMap.containsKey(chHSMDestination)) {
-                    chCommNodesMap.put(chHSMDestination, new HashSet<>());
+                    chCommNodesMap.put(chHSMDestination, new LinkedHashSet<>());
                 }
                 if (taskHSMCommunicationNodesMap.containsKey(taskOfHSM)) {
-                    mergeToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMDestination);
+                    mergeBusToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMDestination);
+                    mergeMemoryToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMDestination);
                 }
                 TMLTask corresTask = null;
                 if (hsmTaskRequestMap.containsKey(chHSMDestination.getDestinationTask())) {
                     corresTask = hsmTaskRequestMap.get(chHSMDestination.getDestinationTask()).getOriginTasks().get(0);
                 }
                 if (corresTask != null && taskHSMCommunicationNodesMap.containsKey(corresTask)) {
-                    mergeToCommNodeList(taskHSMCommunicationNodesMap.get(corresTask), chCommNodesMap, chHSMDestination);
-                    mergeToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMDestination);
-                } else if (!chHSMDestination.getDestinationTask().equals(ch.getDestinationTask())) {
-                    mergeToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMDestination);
+                    mergeBusToCommNodeList(taskHSMCommunicationNodesMap.get(corresTask), chCommNodesMap, chHSMDestination);
+                    mergeBusToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMDestination);
+                } else if (chHSMDestination.getDestinationTask().equals(ch.getDestinationTask())) {
+                    chCommNodesMap.get(chHSMDestination).add(getAssociatedBusOfTask(chHSMDestination.getDestinationTask()));
+                } else {
+                    mergeBusToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMDestination);
                 }
             }
             for (TMLChannel chHSMDestination : tmlmodel.getChannelsToMe(hsmTaskForDestinationTask)) {
                 if (!chCommNodesMap.containsKey(chHSMDestination)) {
-                    chCommNodesMap.put(chHSMDestination, new HashSet<>());
+                    chCommNodesMap.put(chHSMDestination, new LinkedHashSet<>());
                 }
                 if (taskHSMCommunicationNodesMap.containsKey(taskOfHSM)) {
-                    mergeToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMDestination);
+                    mergeBusToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMDestination);
                 }
                 TMLTask corresTask = null;
                 if (hsmTaskRequestMap.containsKey(chHSMDestination.getOriginTask())) {
                     corresTask = hsmTaskRequestMap.get(chHSMDestination.getOriginTask()).getOriginTasks().get(0);
                 }
                 if (corresTask != null && taskHSMCommunicationNodesMap.containsKey(corresTask)) {
-                    mergeToCommNodeList(taskHSMCommunicationNodesMap.get(corresTask), chCommNodesMap, chHSMDestination);
-                    mergeToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMDestination);
-                } else if (!chHSMDestination.getOriginTask().equals(ch.getDestinationTask())) {
-                    mergeToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMDestination);
+                    mergeBusToCommNodeList(taskHSMCommunicationNodesMap.get(corresTask), chCommNodesMap, chHSMDestination);
+                    mergeBusToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMDestination);
+                } else if (chHSMDestination.getOriginTask().equals(ch.getDestinationTask())) {
+                    mapChannelsInArch(chCommNodesMap, taskOfHSM, chHSMDestination);
+                } else {
+                    mergeBusToCommNodeList(tmap.getAllCommunicationNodesOfChannel(ch), chCommNodesMap, chHSMDestination);
+                    mapChannelsInArch(chCommNodesMap, taskOfHSM, chHSMDestination);
                 }
             }
         }
@@ -688,6 +694,23 @@ public class SecurityGenerationForTMAP implements Runnable {
         return chCommNodesMap;
     }
 
+    private void mapChannelsInArch(Map<TMLChannel, Set<HwCommunicationNode>> chCommNodesMap, TMLTask taskOfHSM, TMLChannel chHSMDestination) {
+        List<HwCommunicationNode> listCommNode = new ArrayList<>();
+        HwBus bus = getAssociatedBusOfTask(chHSMDestination.getOriginTask());
+        if (bus != null) {
+            listCommNode.add(bus);
+            mergeBusToCommNodeList(listCommNode, chCommNodesMap, chHSMDestination);
+            HwMemory mem = getAssociatedMemoryOfBus(bus);
+            if (mem != null) {
+                listCommNode.clear();
+                listCommNode.add(mem);
+                mergeMemoryToCommNodeList(listCommNode, chCommNodesMap, chHSMDestination);
+            } else {
+                mergeMemoryToCommNodeList(taskHSMCommunicationNodesMap.get(taskOfHSM), chCommNodesMap, chHSMDestination);
+            }
+        }
+    }
+
     private TMLTask initHSMTaskDiagram(TMLTask task, String nameHSM) {
         String hsmTaskNameInit = appName + "__" + "HSM_" + task.getTaskName() + "_" + nameHSM;
         int index = 0;
@@ -706,7 +729,7 @@ public class SecurityGenerationForTMAP implements Runnable {
             }
         }
 
-        String hsmRequestNameInit = "req_" + hsm.getTaskName();
+        String hsmRequestNameInit = appName + "__" + "req_" + hsm.getTaskName();
         int indexRequest = 0;
         String hsmRequestName = hsmRequestNameInit;
         while (tmap.getTMLModeling().getRequestByName(hsmRequestName) != null) {
@@ -717,6 +740,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         request.addOriginTask(task);
         request.setDestinationTask(hsm);
         hsm.setRequest(request);
+        hsm.setRequested(true);
         //task.setRequest(request);
        // request.addParam(new TMLType(TMLType.NATURAL));
         tmap.getTMLModeling().addRequest(request);
@@ -813,7 +837,7 @@ public class SecurityGenerationForTMAP implements Runnable {
     private TMLActivityElement addBranchHSM(TMLTask hsmTask, TMLChannel dataCh, TMLChannel retrieveDataCh, SecurityPattern sp,
                                             boolean isEncryption) throws TMLCheckingError {
         TMLActivity hsmTaskAD = hsmTask.getActivityDiagram();
-        TMLReadChannel rd = new TMLReadChannel(dataCh.getChannelName(), hsmTaskAD.getReferenceObject());
+        TMLReadChannel rd = new TMLReadChannel(dataCh.getName(), hsmTaskAD.getReferenceObject());
         rd.addChannel(dataCh);
         rd.setNbOfSamples("1");
         if (!isEncryption) {
@@ -828,7 +852,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         hsmTaskAD.addElement(exec);
         rd.addNext(exec);
 
-        TMLWriteChannel wr = new TMLWriteChannel(retrieveDataCh.getChannelName(), hsmTaskAD.getReferenceObject());
+        TMLWriteChannel wr = new TMLWriteChannel(retrieveDataCh.getName(), hsmTaskAD.getReferenceObject());
         wr.addChannel(retrieveDataCh);
         hsmTaskAD.addElement(wr);
         wr.setNbOfSamples("1");
@@ -849,7 +873,7 @@ public class SecurityGenerationForTMAP implements Runnable {
                                             boolean isEncryption, TMLActivityElement header, TMLActivityElement bottom) throws TMLCheckingError {
         TMLActivity hsmTaskAD = hsmTask.getActivityDiagram();
 
-        TMLReadChannel rd = new TMLReadChannel(dataCh.getChannelName(), hsmTaskAD.getReferenceObject());
+        TMLReadChannel rd = new TMLReadChannel(dataCh.getName(), hsmTaskAD.getReferenceObject());
         rd.addChannel(dataCh);
         rd.setNbOfSamples("1");
         if (!isEncryption) {
@@ -865,7 +889,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         hsmTaskAD.addElement(exec);
         rd.addNext(exec);
 
-        TMLWriteChannel wr = new TMLWriteChannel(retrieveDataCh.getChannelName(), hsmTaskAD.getReferenceObject());
+        TMLWriteChannel wr = new TMLWriteChannel(retrieveDataCh.getName(), hsmTaskAD.getReferenceObject());
         wr.addChannel(retrieveDataCh);
         hsmTaskAD.addElement(wr);
         wr.setNbOfSamples("1");
@@ -891,7 +915,7 @@ public class SecurityGenerationForTMAP implements Runnable {
             exec.setAction(Integer.toString(sp.getEncTime()));
             hsmTaskAD.addElement(exec);
 
-            TMLWriteChannel wr = new TMLWriteChannel(nonceCh.getChannelName(), hsmTaskAD.getReferenceObject());
+            TMLWriteChannel wr = new TMLWriteChannel(nonceCh.getName(), hsmTaskAD.getReferenceObject());
             wr.addChannel(nonceCh);
             hsmTaskAD.addElement(wr);
             wr.setNbOfSamples("1");
@@ -900,7 +924,7 @@ public class SecurityGenerationForTMAP implements Runnable {
 
             return new Pair<>(exec, wr);
         } else {
-            TMLReadChannel rd = new TMLReadChannel(nonceCh.getChannelName(), hsmTaskAD.getReferenceObject());
+            TMLReadChannel rd = new TMLReadChannel(nonceCh.getName(), hsmTaskAD.getReferenceObject());
             rd.addChannel(nonceCh);
             rd.setSecurityPattern(sp);
             rd.setNbOfSamples("1");
@@ -918,12 +942,12 @@ public class SecurityGenerationForTMAP implements Runnable {
         //reqSend.addParam(Integer.toString(indexRequest));
         taskAD.addElement(reqSend);
 
-        TMLWriteChannel wr = new TMLWriteChannel(dataCh.getChannelName(), taskAD.getReferenceObject());
+        TMLWriteChannel wr = new TMLWriteChannel(dataCh.getName(), taskAD.getReferenceObject());
         wr.addChannel(dataCh);
         wr.setNbOfSamples(comm.getNbOfSamples());
         taskAD.addElement(wr);
 
-        TMLReadChannel rd = new TMLReadChannel(retrieveDataCh.getChannelName(), taskAD.getReferenceObject());
+        TMLReadChannel rd = new TMLReadChannel(retrieveDataCh.getName(), taskAD.getReferenceObject());
         rd.addChannel(retrieveDataCh);
         rd.setNbOfSamples(comm.getNbOfSamples());
         taskAD.addElement(rd);
@@ -933,13 +957,13 @@ public class SecurityGenerationForTMAP implements Runnable {
         comm.setSecurityPattern(sp);
 
         if (comm instanceof TMLWriteChannel) {
-            TMLWriteChannel wrNonceToHSM = new TMLWriteChannel(chNonceWithHSM.getChannelName(), taskAD.getReferenceObject());
+            TMLWriteChannel wrNonceToHSM = new TMLWriteChannel(chNonceWithHSM.getName(), taskAD.getReferenceObject());
             wrNonceToHSM.addChannel(chNonceWithHSM);
             wrNonceToHSM.setNbOfSamples("1");
             wrNonceToHSM.setSecurityPattern(spNonce);
             taskAD.addElement(wrNonceToHSM);
 
-            TMLReadChannel rdNonce = new TMLReadChannel(chNonce.getChannelName(), taskAD.getReferenceObject());
+            TMLReadChannel rdNonce = new TMLReadChannel(chNonce.getName(), taskAD.getReferenceObject());
             rdNonce.addChannel(chNonce);
             rdNonce.setNbOfSamples("1");
             rdNonce.setSecurityPattern(spNonce);
@@ -955,13 +979,13 @@ public class SecurityGenerationForTMAP implements Runnable {
             rd.addNext(comm);
 
         } else if (comm instanceof TMLReadChannel) {
-            TMLReadChannel rdNonceFromHSM = new TMLReadChannel(chNonceWithHSM.getChannelName(), taskAD.getReferenceObject());
+            TMLReadChannel rdNonceFromHSM = new TMLReadChannel(chNonceWithHSM.getName(), taskAD.getReferenceObject());
             rdNonceFromHSM.addChannel(chNonceWithHSM);
             rdNonceFromHSM.setNbOfSamples("1");
             rdNonceFromHSM.setSecurityPattern(spNonce);
             taskAD.addElement(rdNonceFromHSM);
 
-            TMLWriteChannel wrNonce = new TMLWriteChannel(chNonce.getChannelName(), taskAD.getReferenceObject());
+            TMLWriteChannel wrNonce = new TMLWriteChannel(chNonce.getName(), taskAD.getReferenceObject());
             wrNonce.addChannel(chNonce);
             wrNonce.setNbOfSamples("1");
             wrNonce.setSecurityPattern(spNonce);
@@ -989,12 +1013,12 @@ public class SecurityGenerationForTMAP implements Runnable {
         //reqSend.addParam(Integer.toString(indexRequest));
         taskAD.addElement(reqSend);
 
-        TMLWriteChannel wr = new TMLWriteChannel(dataCh.getChannelName(), taskAD.getReferenceObject());
+        TMLWriteChannel wr = new TMLWriteChannel(dataCh.getName(), taskAD.getReferenceObject());
         wr.addChannel(dataCh);
         wr.setNbOfSamples(comm.getNbOfSamples());
         taskAD.addElement(wr);
 
-        TMLReadChannel rd = new TMLReadChannel(retrieveDataCh.getChannelName(), taskAD.getReferenceObject());
+        TMLReadChannel rd = new TMLReadChannel(retrieveDataCh.getName(), taskAD.getReferenceObject());
         rd.addChannel(retrieveDataCh);
         rd.setNbOfSamples(comm.getNbOfSamples());
         taskAD.addElement(rd);
@@ -1029,7 +1053,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         TMLActivityElement origNextComm = comm.getNextElement(0);
 
         if (comm instanceof TMLWriteChannel) {
-            TMLWriteChannel wr = new TMLWriteChannel(dataCh.getChannelName(), taskAD.getReferenceObject());
+            TMLWriteChannel wr = new TMLWriteChannel(dataCh.getName(), taskAD.getReferenceObject());
             wr.addChannel(dataCh);
             wr.setNbOfSamples(comm.getNbOfSamples());
             taskAD.addElement(wr);
@@ -1038,7 +1062,7 @@ public class SecurityGenerationForTMAP implements Runnable {
             taskAD.removeElement(comm);
             wr.addNext(origNextComm);
         } else if (comm instanceof TMLReadChannel) {
-            TMLReadChannel rd = new TMLReadChannel(dataCh.getChannelName(), taskAD.getReferenceObject());
+            TMLReadChannel rd = new TMLReadChannel(dataCh.getName(), taskAD.getReferenceObject());
             rd.addChannel(dataCh);
             rd.setNbOfSamples(comm.getNbOfSamples());
             taskAD.addElement(rd);
@@ -1076,7 +1100,7 @@ public class SecurityGenerationForTMAP implements Runnable {
             taskAD.addElement(exec);
 
             readComm.replaceChannelWith(readComm.getChannel(0), chToDestHSM);
-
+            readComm.setName(chToDestHSM.getName());
             readComm.setSecurityPattern(sp);
             TMLActivityElement origNextComm = readComm.getNextElement(0);
             readComm.setNewNext(origNextComm, exec);
@@ -1093,7 +1117,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         exec.setAction(Integer.toString(spNonce.getEncTime()));
         taskAD.addElement(exec);
         for (TMLReadChannel readComm : readComms) {
-            TMLWriteChannel wrNonce = new TMLWriteChannel(nonceCh.getChannelName(), taskAD.getReferenceObject());
+            TMLWriteChannel wrNonce = new TMLWriteChannel(nonceCh.getName(), taskAD.getReferenceObject());
             wrNonce.addChannel(nonceCh);
             wrNonce.setNbOfSamples("1");
             wrNonce.setSecurityPattern(spNonce);
@@ -1113,7 +1137,7 @@ public class SecurityGenerationForTMAP implements Runnable {
                 headerElement.setNewNext(origNextComm, exec);
                 exec.addNext(origNextComm);
             } else {
-                TMLWriteChannel wrNonce = new TMLWriteChannel(nonceCh.getChannelName(), taskAD.getReferenceObject());
+                TMLWriteChannel wrNonce = new TMLWriteChannel(nonceCh.getName(), taskAD.getReferenceObject());
                 wrNonce.addChannel(nonceCh);
                 wrNonce.setNbOfSamples("1");
                 wrNonce.setSecurityPattern(spNonce);
@@ -1133,7 +1157,7 @@ public class SecurityGenerationForTMAP implements Runnable {
                                    TMLActivityElement headerElement) {
         TMLActivity taskAD = task.getActivityDiagram();
         for(TMLWriteChannel writeCh : writeComms) {
-            TMLReadChannel rdNonce = new TMLReadChannel(nonceCh.getChannelName(), taskAD.getReferenceObject());
+            TMLReadChannel rdNonce = new TMLReadChannel(nonceCh.getName(), taskAD.getReferenceObject());
             rdNonce.addChannel(nonceCh);
             rdNonce.setNbOfSamples("1");
             rdNonce.setSecurityPattern(spNonce);
@@ -1143,7 +1167,7 @@ public class SecurityGenerationForTMAP implements Runnable {
             rdNonce.addNext(writeCh);
         }
         if (writeComms.size() > 1) {
-            TMLReadChannel rdNonce = new TMLReadChannel(nonceCh.getChannelName(), taskAD.getReferenceObject());
+            TMLReadChannel rdNonce = new TMLReadChannel(nonceCh.getName(), taskAD.getReferenceObject());
             rdNonce.addChannel(nonceCh);
             rdNonce.setNbOfSamples("1");
             rdNonce.setSecurityPattern(spNonce);
@@ -1189,6 +1213,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         taskAD.addElement(exec);
         if (writeComms.size() == 1) {
             writeComms.get(0).replaceChannelWith(writeComms.get(0).getChannel(0), chToDestHSM);
+            writeComms.get(0).setName(chToDestHSM.getName());
             TMLActivityElement prevOfWrite = taskAD.getPrevious(writeComms.get(0));
             prevOfWrite.setNewNext(writeComms.get(0), exec);
             exec.addNext(writeComms.get(0));
@@ -1199,6 +1224,7 @@ public class SecurityGenerationForTMAP implements Runnable {
             exec.addNext(origNextHeader);
             for (TMLWriteChannel writeComm : writeComms) {
                 writeComm.replaceChannelWith(writeComm.getChannel(0), chToDestHSM);
+                writeComm.setName(chToDestHSM.getName());
                 writeComm.setSecurityPattern(sp);
             }
         }
@@ -1255,7 +1281,8 @@ public class SecurityGenerationForTMAP implements Runnable {
             return channelTochannelNonceMap.get(ch);
         }
 
-        String channelNameInit = "nonceCh" + ch.getDestinationTask().getTaskName() + "_" + ch.getOriginTask().getTaskName() + "_" + ch.getChannelName();
+        String channelNameInit =
+                appName + "__" + "nonceCh" + ch.getDestinationTask().getTaskName() + "_" + ch.getOriginTask().getTaskName() + "_" + ch.getChannelName();
         int index = 0;
         String channelName = channelNameInit;
         while (tmap.getChannelByName(channelName) != null) {
@@ -1279,7 +1306,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         }
         TMLTask originTaskOfNonce = chNonce.getOriginTask();
         TMLTask destinationTaskOfNonce = chNonce.getDestinationTask();
-        String channelNameHSMInit = "dataNonceCh" + destinationTaskOfNonce.getTaskName() + "_" + originTaskOfNonce.getTaskName();
+        String channelNameHSMInit = appName + "__" + "dataNonceCh" + destinationTaskOfNonce.getTaskName() + "_" + originTaskOfNonce.getTaskName();
         int indexHSM = 0;
         String channelNameHSM = channelNameHSMInit;
         while (tmap.getChannelByName(channelNameHSM) != null) {
@@ -1302,7 +1329,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         }
         TMLTask originTaskOfNonce = chNonce.getOriginTask(); ;
         TMLTask destinationTaskOfNonce = chNonce.getDestinationTask();
-        String channelNameHSMInit = "retDataNonceCh" + destinationTaskOfNonce.getTaskName() + "_" + originTaskOfNonce.getTaskName();
+        String channelNameHSMInit = appName + "__" + "retDataNonceCh" + destinationTaskOfNonce.getTaskName() + "_" + originTaskOfNonce.getTaskName();
         int indexHSM = 0;
         String channelNameHSM = channelNameHSMInit;
         while (tmap.getChannelByName(channelNameHSM) != null) {
@@ -1325,7 +1352,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         if (channelToHsmMap.containsKey(taskChannelPair)) {
             return channelToHsmMap.get(taskChannelPair);
         }
-        String channelNameHSMInit = "dataCh_" + task.getTaskName() + "_" + ch.getChannelName();
+        String channelNameHSMInit = appName + "__" + "dataCh_" + task.getTaskName() + "_" + ch.getChannelName();
         int indexHSM = 0;
         String channelNameHSM = channelNameHSMInit;
         while (tmap.getChannelByName(channelNameHSM) != null) {
@@ -1348,7 +1375,7 @@ public class SecurityGenerationForTMAP implements Runnable {
         if (channelFromHsmMap.containsKey(taskChannelPair)) {
             return channelFromHsmMap.get(taskChannelPair);
         }
-        String channelNameHSMInit = "retDataCh_" + task.getTaskName() + "_" + ch.getChannelName();
+        String channelNameHSMInit = appName + "__" + "retDataCh_" + task.getTaskName() + "_" + ch.getChannelName();
         int indexHSM = 0;
         String channelNameHSM = channelNameHSMInit;
         while (tmap.getChannelByName(channelNameHSM) != null) {
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index 31c433f3b33aa83f03263006339a821f5137e754..478a8a618c6f3e64a55e82342f47af11cc8aa770 100644
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -1788,7 +1788,7 @@ public class GTURTLEModeling {
 
     @SuppressWarnings("unchecked")
     public void autoSecure(MainGUI gui, String encComp, String overhead, String decComp, Vector<String> channelsToAddSec,
-                           Map<String, List<String>> selectedCpuTasks, boolean isLinkedHsm) {
+                           List<String> selectedCpuTasks, boolean isLinkedHsm) {
         if (tmap == null) {
             return;
         }
diff --git a/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java b/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java
index e913f9f1c536fa6c36edbfd57dd5e94d220319e1..024ef4ee6a8c69bc2205d2335d256fec517e19bf 100755
--- a/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java
+++ b/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java
@@ -73,7 +73,7 @@ public class TMLArchiCommunicationArtifact extends TGCWithoutInternalComponent i
     protected String referenceCommunicationName = "TMLCommunication";
     protected String communicationName = "name";
     protected String typeName = "channel";
-    protected int priority = 5; // Between 0 and 10
+    protected int priority = 0; // Between 0 and 10
     protected ArrayList<String> mappedElements = new ArrayList<>();
 
     public TMLArchiCommunicationArtifact(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father,
diff --git a/src/main/java/ui/tmldd/TMLArchiEventArtifact.java b/src/main/java/ui/tmldd/TMLArchiEventArtifact.java
index 4ca1529387d58a4c5b0e81e6986b13a294f13f54..c052fbe474cb533b57a72793f7639e3ebcceedf0 100755
--- a/src/main/java/ui/tmldd/TMLArchiEventArtifact.java
+++ b/src/main/java/ui/tmldd/TMLArchiEventArtifact.java
@@ -69,7 +69,7 @@ public class TMLArchiEventArtifact extends TGCWithoutInternalComponent implement
     protected String referenceEventName = "TMLEvent";
     protected String eventName = "name";
     protected String typeName = "event";
-    protected int priority = 5; // Between 0 and 10
+    protected int priority = 0; // Between 0 and 10
 
     public TMLArchiEventArtifact(
                                  int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp)     {
diff --git a/src/main/java/ui/tmldd/TMLArchiKey.java b/src/main/java/ui/tmldd/TMLArchiKey.java
index df0b12822cbd74551d1eb9b997a6559ac6144244..66304079015e697e73d805efe4d4d882267450d3 100755
--- a/src/main/java/ui/tmldd/TMLArchiKey.java
+++ b/src/main/java/ui/tmldd/TMLArchiKey.java
@@ -74,7 +74,7 @@ public class TMLArchiKey extends TGCWithoutInternalComponent implements Swallowe
     protected String oldValue = "";
     protected String referenceKey = "TMLKey";
     protected String typeName = "key";
-    protected int priority = 5; // Between 0 and 10
+    protected int priority = 0; // Between 0 and 10
 
     public TMLArchiKey(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp)  {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
diff --git a/src/main/java/ui/tmldd/TMLArchiPortArtifact.java b/src/main/java/ui/tmldd/TMLArchiPortArtifact.java
index ecc0ba86a43063bd2bcae768223819fea1e9560c..b7d0d73292b3ef17913b5aab758938c15a07b3ed 100644
--- a/src/main/java/ui/tmldd/TMLArchiPortArtifact.java
+++ b/src/main/java/ui/tmldd/TMLArchiPortArtifact.java
@@ -104,7 +104,7 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
     protected String endAddress = "";
     protected List<String> bufferParameters = new ArrayList<String>();
     protected String bufferType = "noBuffer";
-    protected int priority = 5; // Between 0 and 10
+    protected int priority = 0; // Between 0 and 10
 
     public TMLArchiPortArtifact(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp)  {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
diff --git a/src/main/java/ui/window/JDialogProverifVerification.java b/src/main/java/ui/window/JDialogProverifVerification.java
index 8e32b33d45cab8f30fe386227a5665bbf96fe07c..44b731c08c92fa23d941dd766f52d4eb5aeb33a6 100644
--- a/src/main/java/ui/window/JDialogProverifVerification.java
+++ b/src/main/java/ui/window/JDialogProverifVerification.java
@@ -57,7 +57,6 @@ import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.PipedInputStream;
 import java.io.PipedOutputStream;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -87,7 +86,6 @@ import proverifspec.ProVerifOutputListener;
 import proverifspec.ProVerifQueryAuthResult;
 import proverifspec.ProVerifQueryResult;
 import proverifspec.ProVerifResultTraceStep;
-import tmltranslator.TMLMapping;
 import ui.*;
 import ui.interactivesimulation.JFrameSimulationSDPanel;
 import ui.util.IconManager;
@@ -125,8 +123,6 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
 
     private static boolean DRAW_AVATAR = false;
 
-    private JLabel labelError;
-
     protected MainGUI mgui;
     private AvatarDesignPanel adp;
 
@@ -1574,7 +1570,6 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
     public void run() {
         TraceManager.addDev("Thread started");
         File testFile;
-        Map<String, List<String>> selectedCpuTasks = new HashMap<String, java.util.List<String>>();
         int currentPosY = 0;
         int stepY = 10; 
         if (jp1.getSelectedIndex() == 2) {
@@ -1700,31 +1695,8 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
                         encCC = encTime.getText();
                         decCC = decTime.getText();
                         secOv = secOverhead.getText();
-                        TMLMapping map;
-                        if (addHSM.isSelected() && selectedTasks.size()>0) {
-                            
-
-                            for (String task : selectedTasks) {
-                                String cpu = taskCpuMap.get(task);
-                                if (selectedCpuTasks.containsKey(cpu)) {
-                                    selectedCpuTasks.get(cpu).add(task);
-                                } else {
-                                    ArrayList<String> tasks = new ArrayList<String>();
-                                    tasks.add(task);
-                                    selectedCpuTasks.put(cpu, tasks);
-                                }
-                            }
-                            //mgui.gtm.addHSM(mgui, selectedCpuTasks);
-                        }
                         if (autoConf.isSelected() || autoWeakAuth.isSelected() || autoStrongAuth.isSelected()) {
-                            /*if (custom.isSelected()) {
-                                map = mgui.gtm.autoSecure(mgui, encCC, secOv, decCC, autoConf.isSelected(), autoWeakAuth.isSelected(),
-                                        autoStrongAuth.isSelected(), selectedCpuTasks);
-                            } else {
-                                map = mgui.gtm.autoSecure(mgui, "100", "0", "100", autoConf.isSelected(),
-                                        autoWeakAuth.isSelected(), autoStrongAuth.isSelected(), selectedCpuTasks);
-                            }*/
-                            mgui.gtm.autoSecure(mgui, encCC, secOv, decCC, selectedChannelsToAddSec, selectedCpuTasks, linkHSMs.isSelected());
+                            mgui.gtm.autoSecure(mgui, encCC, secOv, decCC, selectedChannelsToAddSec, selectedTasks, linkHSMs.isSelected());
                         }
                     } 
                     else if (autoMapKeys.isSelected()) {