diff --git a/.gitignore b/.gitignore
index b5481914bc59ea2336b683b570b8e1162ace40d8..952793a25e4e2c5fc3d7c5d266714414f721ca76 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,4 +18,3 @@
 /bin
 /release
 /TTool_install
-/ttool/src/test/resources/tmltranslator/DiplodocusSecurityTest/GeneratedPvspec
diff --git a/src/main/java/tmltranslator/TMLTextSpecification.java b/src/main/java/tmltranslator/TMLTextSpecification.java
index 28fe661c691e839e6702f0c94ef003232d714dd8..827bb057ef18130a2055637f94f8c47c529e3cd5 100755
--- a/src/main/java/tmltranslator/TMLTextSpecification.java
+++ b/src/main/java/tmltranslator/TMLTextSpecification.java
@@ -77,6 +77,9 @@ public class TMLTextSpecification<E> {
 
     public final static String EMPTY_KEY_NONCE = "-";
 
+    public final static int ENCRYPTION_PROCESS = 1;
+    public final static int DECRYPTION_PROCESS = 2;
+
 
     private String spec;
     private String title;
@@ -415,37 +418,37 @@ public class TMLTextSpecification<E> {
             return code + makeBehavior(task, elt.getNextElement(0));
 
         } else if (elt instanceof TMLExecC) {
-            if (elt.securityPattern == null) {
+            if (elt.getSecurityPattern() == null) {
                 code = "EXECC" + SP + modifyString(((TMLExecC) elt).getAction()) + CR;
             } else {
                 String type = "";
-                if (elt.securityPattern.type.equals(SecurityPattern.ASYMMETRIC_ENC_PATTERN)) {
+                if (elt.getSecurityPattern().getType().equals(SecurityPattern.ASYMMETRIC_ENC_PATTERN)) {
                     type = AENCRYPT;
-                } else if (elt.securityPattern.type.equals(SecurityPattern.SYMMETRIC_ENC_PATTERN)) {
+                } else if (elt.getSecurityPattern().getType().equals(SecurityPattern.SYMMETRIC_ENC_PATTERN)) {
                     type = SENCRYPT;
-                } else if (elt.securityPattern.type.equals(SecurityPattern.MAC_PATTERN)) {
+                } else if (elt.getSecurityPattern().getType().equals(SecurityPattern.MAC_PATTERN)) {
                     type = MAC;
-                } else if (elt.securityPattern.type.equals(SecurityPattern.NONCE_PATTERN)) {
+                } else if (elt.getSecurityPattern().getType().equals(SecurityPattern.NONCE_PATTERN)) {
                     type = NONCE;
-                } else if (elt.securityPattern.type.equals(SecurityPattern.HASH_PATTERN)) {
+                } else if (elt.getSecurityPattern().getType().equals(SecurityPattern.HASH_PATTERN)) {
                     type = HASH;
-                } else if (elt.securityPattern.type.equals(SecurityPattern.ADVANCED_PATTERN)) {
+                } else if (elt.getSecurityPattern().getType().equals(SecurityPattern.ADVANCED_PATTERN)) {
                     type = ADV;
                 }
 
-                String nonce = elt.securityPattern.nonce;
+                String nonce = elt.getSecurityPattern().getNonce();
                 if (nonce.length() == 0) {
                     nonce = EMPTY_KEY_NONCE;
                 }
 
-                String key = elt.securityPattern.nonce;
+                String key = elt.getSecurityPattern().getKey();
                 if (key.length() == 0) {
                     key = EMPTY_KEY_NONCE;
                 }
-
-                code = "EXECC" + SP + modifyString(((TMLExecC) elt).getAction()) + SP + elt.securityPattern.name + SP + type + SP +
-                        elt.securityPattern.encTime + SP + elt.securityPattern.decTime + SP + elt.securityPattern.overhead + SP +
-                        elt.securityPattern.size + SP + nonce + SP + key + SP + elt.securityPattern.process + CR;
+                int process = (((TMLExecC) elt).isDecryptionProcess()) ? DECRYPTION_PROCESS : ENCRYPTION_PROCESS;
+                code = "EXECC" + SP + modifyString(((TMLExecC) elt).getAction()) + SP + elt.getSecurityPattern().getName() + SP + type + SP +
+                        elt.getSecurityPattern().getEncTime() + SP + elt.getSecurityPattern().getDecTime() + SP + elt.getSecurityPattern().getOverhead() + SP +
+                        elt.getSecurityPattern().getSize() + SP + nonce + SP + key + SP + process + CR;
             }
             return code + makeBehavior(task, elt.getNextElement(0));
 
@@ -496,8 +499,8 @@ public class TMLTextSpecification<E> {
             }
             //TraceManager.addDev("Nb of samples in task " + task.getName() + " = " + tmlch.getNbOfSamples());
             code = code + modifyString(tmlch.getNbOfSamples());
-            if (elt.securityPattern != null) {
-                code = code + SP + elt.securityPattern.name + CR;
+            if (elt.getSecurityPattern() != null) {
+                code = code + SP + elt.getSecurityPattern().getName() + CR;
             } else {
                 code = code + CR;
             }
@@ -505,10 +508,10 @@ public class TMLTextSpecification<E> {
 
         } else if (elt instanceof TMLReadChannel) {
             tmlch = (TMLActivityElementChannel) elt;
-            if (elt.securityPattern == null) {
+            if (elt.getSecurityPattern() == null) {
                 code = "READ " + tmlch.getChannel(0).getName() + SP + modifyString(tmlch.getNbOfSamples()) + CR;
             } else {
-                code = "READ " + tmlch.getChannel(0).getName() + SP + modifyString(tmlch.getNbOfSamples()) + SP + elt.securityPattern.name + CR;
+                code = "READ " + tmlch.getChannel(0).getName() + SP + modifyString(tmlch.getNbOfSamples()) + SP + elt.getSecurityPattern().getName() + CR;
             }
             return code + makeBehavior(task, elt.getNextElement(0));
 
@@ -729,7 +732,11 @@ public class TMLTextSpecification<E> {
                     if (s1 != null) {
                         split = s1.split("\\s");
                         if (split.length > 0) {
-                            findSec(split);
+                            if (isInstruction(split[0], "EXECC")) {
+                                if (!findAndCheckSec(split)) {
+                                    addError(0, lineNb, 0, "The Security Pattern " + split[2] + " already exists");
+                                }
+                            }
                         }
                     }
 
@@ -771,55 +778,50 @@ public class TMLTextSpecification<E> {
         }
     }
 
-    public void findSec(String[] _split) {
-        if (isInstruction(_split[0], "EXECC")) {
-
-            if (_split.length > 10) {
-                TraceManager.addDev("Found EXECC in: " + _split.length + " name=" + _split[2] + " type=" + _split[3]);
+    public boolean findAndCheckSec(String[] _split) {
+        boolean isNewSec = true;
+        if (_split.length > 10) {
+            TraceManager.addDev("Found EXECC in: " + _split.length + " name=" + _split[2] + " type=" + _split[3]);
+            if (_split[10].compareTo("" + ENCRYPTION_PROCESS) == 0) {
                 String ccName = _split[2];
-                String type = _split[3];
-                String stringType = "";
-                int process;
-
-                if (type.equals(AENCRYPT)) {
-                    stringType = SecurityPattern.ASYMMETRIC_ENC_PATTERN;
-                } else if (type.equals(SENCRYPT)) {
-                    stringType = SecurityPattern.SYMMETRIC_ENC_PATTERN;
-                } else if (type.equals(HASH)) {
-                    stringType = SecurityPattern.HASH_PATTERN;
-                } else if (type.equals(MAC)) {
-                    stringType = SecurityPattern.MAC_PATTERN;
-                } else if (type.equals(NONCE)) {
-                    stringType = SecurityPattern.NONCE_PATTERN;
-                } else if (type.equals(ADV)) {
-                    stringType = SecurityPattern.ADVANCED_PATTERN;
-                }
-
-                if (stringType.length() > 0) {
-                    TraceManager.addDev("Found security pattern: " + ccName + " with type: " + stringType);
-                    String nonce = _split[8];
-                    if (_split[8].compareTo(EMPTY_KEY_NONCE) == 0) {
-                        nonce = "";
-                    }
-                    String key = _split[9];
-                    if (_split[9].compareTo(EMPTY_KEY_NONCE) == 0) {
-                        key = "";
-                    }
-                    process = SecurityPattern.DECRYPTION_PROCESS;
-                    if (_split[10].compareTo("" + SecurityPattern.ENCRYPTION_PROCESS) == 0) {
-                        process = SecurityPattern.ENCRYPTION_PROCESS;
+                if (securityPatternMap.containsKey(ccName)) {
+                    isNewSec = false;
+                } else {
+                    String type = _split[3];
+                    String stringType = "";
+                    if (type.equals(AENCRYPT)) {
+                        stringType = SecurityPattern.ASYMMETRIC_ENC_PATTERN;
+                    } else if (type.equals(SENCRYPT)) {
+                        stringType = SecurityPattern.SYMMETRIC_ENC_PATTERN;
+                    } else if (type.equals(HASH)) {
+                        stringType = SecurityPattern.HASH_PATTERN;
+                    } else if (type.equals(MAC)) {
+                        stringType = SecurityPattern.MAC_PATTERN;
+                    } else if (type.equals(NONCE)) {
+                        stringType = SecurityPattern.NONCE_PATTERN;
+                    } else if (type.equals(ADV)) {
+                        stringType = SecurityPattern.ADVANCED_PATTERN;
                     }
-                    SecurityPattern sp = new SecurityPattern(ccName, stringType, _split[6], _split[7], _split[4], _split[5], nonce, "",
-                            key);
-                    sp.process = process;
-                    if (securityPatternMap.get(ccName) == null) {
+                    if (!stringType.isEmpty()) {
+                        TraceManager.addDev("Found security pattern: " + ccName + " with type: " + stringType);
+                        String nonce = _split[8];
+                        if (_split[8].compareTo(EMPTY_KEY_NONCE) == 0) {
+                            nonce = "";
+                        }
+                        String key = _split[9];
+                        if (_split[9].compareTo(EMPTY_KEY_NONCE) == 0) {
+                            key = "";
+                        }
+                        SecurityPattern sp = new SecurityPattern(ccName, stringType, _split[6], _split[7], _split[4], _split[5], nonce, "",
+                                key);
                         tmlm.addSecurityPattern(sp);
+                        securityPatternMap.put(ccName, sp);
+                        TraceManager.addDev("Security pattern " + ccName + " added");
                     }
-                    securityPatternMap.put(ccName, sp);
-                    TraceManager.addDev("Security pattern " + ccName + " added");
                 }
             }
         }
+        return isNewSec;
     }
 
     public void addError(int _type, int _lineNb, int _charNb, String _msg) {
@@ -830,7 +832,7 @@ public class TMLTextSpecification<E> {
         errors.add(error);
     }
 
-    public int analyseInstruction(String _line, int _lineNb, String[] _split) {
+    public int analyseInstruction(String _line, int _lineNb, String[] _split) throws TMLCheckingError {
         String error;
         String params;
         String id;
@@ -1690,7 +1692,7 @@ public class TMLTextSpecification<E> {
 
             if (_split.length == 4) {
                 if (securityPatternMap.containsKey(_split[3])) {
-                    tmlrch.securityPattern = securityPatternMap.get(_split[3]);
+                    tmlrch.setSecurityPattern(securityPatternMap.get(_split[3]));
                 }
             }
 
@@ -1727,10 +1729,10 @@ public class TMLTextSpecification<E> {
             TMLWriteChannel tmlwch = new TMLWriteChannel(_split[1], null);
             if (_split.length > 3) {
                 if (securityPatternMap.containsKey(_split[_split.length - 1])) {
-                    tmlwch.securityPattern = securityPatternMap.get(_split[_split.length - 1]);
+                    tmlwch.setSecurityPattern(securityPatternMap.get(_split[_split.length - 1]));
                     TraceManager.addDev("Nb of samples in task " + task.getName() +
-                            " security pattern: " + tmlwch.securityPattern.name);
-                    tmlwch.securityPattern.originTask = task.getTaskName();
+                            " security pattern: " + tmlwch.getSecurityPattern().getName());
+                    //tmlwch.getSecurityPattern().setOriginTask(task.getTaskName());
                 }
                 for (int k = 0; k < _split.length - 3; k++) {
                     //TraceManager.addDev("Handling write channel 1.1");
@@ -2785,20 +2787,24 @@ public class TMLTextSpecification<E> {
 
             if (_split.length == 11) {
                 if (securityPatternMap.containsKey(_split[2])) {
-                    //Security operation
-                    TraceManager.addDev("Found security pattern: " + _split[2]);
-                    TMLExecC execc = new TMLExecC("execc", null);
-                    execc.setAction(_split[1]);
-//                    execc.securityPattern = securityPatternMap.get(_split[2]);
-                    SecurityPattern sp = new SecurityPattern(securityPatternMap.get(_split[2]));
-                    sp.process = SecurityPattern.DECRYPTION_PROCESS;
-                    if (_split[10].compareTo("" + SecurityPattern.ENCRYPTION_PROCESS)==0){
-                        sp.process = SecurityPattern.ENCRYPTION_PROCESS;
+                    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);
+                        execc.setAction(_split[1]);
+                        execc.setSecurityPattern(securityPatternMap.get(_split[2]));
+                        if (_split[10].compareTo("" + DECRYPTION_PROCESS) == 0) {
+                            execc.setDecryptionProcess(true);
+                            execc.setName("decrypt_" + _split[2]);
+                        }
+                        tmlae.addNext(execc);
+                        task.getActivityDiagram().addElement(execc);
+                        tmlae = execc;
+                    } else {
+                        error = "EXECC " + _split[2] + " has an unknown security process";
+                        addError(0, _lineNb, 0, error);
+                        return -1;
                     }
-                    execc.securityPattern = sp;
-                    tmlae.addNext(execc);
-                    task.getActivityDiagram().addElement(execc);
-                    tmlae = execc;
                 } else {
                     error = "An EXECC with a security configuration must contain a valid security configuration name " + (_split[2]);
                     addError(0, _lineNb, 0, error);
diff --git a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
index 1e1cdb967defe359ef4b6dacc8afc172807cbcd1..cbe62a043bfb61cc798a15b48d4cdacb7d289846 100644
--- a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
+++ b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
@@ -1706,9 +1706,7 @@ public class TML2Avatar {
         //TODO: Make state names readable
         //TODO: Put back numeric guards
         //TODO: Calculate for temp variable
-        if(tmlmap.getTMLModeling() != null) {
-            TraceManager.addDev(tmlmap.getTMLModeling().toString());
-            TraceManager.addDev(tmlmap.getTMLModeling().getTasks().size() +"");
+        if (tmlmap.getTMLModeling() != null) {
             if (tmlmap.getTMLModeling().getReference() != null) {
                 this.avspec = new AvatarSpecification("spec", referenceObject);
             } else {
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index b2116464f411aec0e05db53e420438cb751e2751..e90a2af40af322c0eaffe3a8c4069f2f69828d75 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -331,9 +331,6 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
     // Thread for autosave
     private PeriodicBehaviorThread pbt;
 
-    private JDialogLoadingNetworkModel jdlnm;
-
-
     private boolean hidden = false;
 
     public MainGUI(boolean _openLast, boolean _turtleOn, boolean _systemcOn, boolean _lotosOn, boolean _proactiveOn, boolean _tpnOn, boolean _osOn,
@@ -2871,7 +2868,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
              */
         }
 
-        jdlnm = new JDialogLoadingNetworkModel(frame, this,
+        JDialogLoadingNetworkModel jdlnm = new JDialogLoadingNetworkModel(frame, this,
                 "Opening a model from TTool's repository", ConfigurationTTool.URL_MODEL);
         GraphicLib.centerOnParent(jdlnm, 700, 800);
         jdlnm.setVisible(true); // blocked until dialog has been closed
@@ -4503,8 +4500,9 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
             }
         }
         // dtree.toBeUpdated();
-        if (forceTreeUpdate)
+        if (forceTreeUpdate) {
             dtree.forceUpdate();
+        }
         return ret;
     }
 
@@ -10480,8 +10478,4 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
         return tmlcpsList;
     }
 
-    public JDialogLoadingNetworkModel getJdlnm(){
-        return jdlnm;
-    }
-
 } // Class MainGUI
diff --git a/src/main/java/ui/networkmodelloader/JDialogLoadingNetworkModel.java b/src/main/java/ui/networkmodelloader/JDialogLoadingNetworkModel.java
index 9b81d26bbd59a7642c877383c263b4625ee12824..62c5687cbf1ce1a953c1b8315970f6b3ec248490 100644
--- a/src/main/java/ui/networkmodelloader/JDialogLoadingNetworkModel.java
+++ b/src/main/java/ui/networkmodelloader/JDialogLoadingNetworkModel.java
@@ -443,7 +443,4 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac
         jta.append(s);
     }
 
-    public ArrayList<NetworkModel> getListOfModels() {
-        return listOfModels;
-    }
 }
diff --git a/src/main/java/ui/networkmodelloader/NetworkModel.java b/src/main/java/ui/networkmodelloader/NetworkModel.java
index 647ecec380b39b4ddc91ab3a679af6b8020089ea..c7e71cc88048b7f98555d8b89d8659a90e9bc09c 100644
--- a/src/main/java/ui/networkmodelloader/NetworkModel.java
+++ b/src/main/java/ui/networkmodelloader/NetworkModel.java
@@ -79,10 +79,6 @@ public class NetworkModel  {
 	
     }
 
-    public String getFileName(){
-        return fileName;
-    }
-
     /*public static NetworkModelType stringToNetworkModelType(String type) {
 	type = type.toLowerCase();
 	if (type.compareTo("software design") == 0) {
diff --git a/src/main/java/ui/window/JDialogProverifVerification.java b/src/main/java/ui/window/JDialogProverifVerification.java
index 3c506740a95abd594be88f72b81fbda7edc1b7c7..af4f9a1ced8b3f45622f61a96ad17a0261da263f 100644
--- a/src/main/java/ui/window/JDialogProverifVerification.java
+++ b/src/main/java/ui/window/JDialogProverifVerification.java
@@ -126,7 +126,6 @@ import ui.util.IconManager;
 public class JDialogProverifVerification extends JDialog implements ActionListener, ListSelectionListener, MouseListener, Runnable,
         MasterProcessInterface, ProVerifOutputListener {
 
-
     private static final Insets insets = new Insets(0, 0, 0, 0);
     private static final Insets WEST_INSETS = new Insets(0, 0, 0, 0);
 
@@ -140,6 +139,7 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
     private static boolean MSG_DUPLICATION = true;
     private static boolean PI_CALCULUS = true;
     public static int LOOP_ITERATION = 1;
+
     public static String ADD_CONFIDENTIALITY = "Conf";
     public static String ADD_WEAK_AUTHENTICITY = "Integrity";
     public static String ADD_STRONG_AUTHENTICITY = "Strong Authenticity";
@@ -1768,10 +1768,10 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
                     this.rshc.sendExecuteCommandRequest();
                     RshClientReader reader = this.rshc.getDataReaderFromProcess();
 
-                    if (this.pvoa == null) {
+                    //if (this.pvoa == null) {
                         this.pvoa = mgui.gtm.getProVerifOutputAnalyzer();
                         this.pvoa.addListener(this);
-                    }
+                    //}
                     //try {
                         this.pvoa.analyzeOutput(reader, typedLanguage.isSelected());
                     /*} catch (Exception e) {