diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index f69d5e2c2186b6d38f2a83d88af6dd92ebdc2879..ce9792f900900919cec52a788793999e6ce319bf 100755
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -36,9 +36,6 @@
  * knowledge of the CeCILL license and that you accept its terms.
  */
 
-
-
-
 package ui;
 
 import avatartranslator.*;
@@ -1078,16 +1075,16 @@ public class GTURTLEModeling {
 
 
         //ProVerif analysis
-        ArrayList<String> nonAuthChans = new ArrayList<String>();
-        ArrayList<String> nonSecChans = new ArrayList<String>();
+        List<String> nonAuthChans = new ArrayList<String>();
+        List<String> nonSecChans = new ArrayList<String>();
 
         proverifAnalysis(tmap, nonAuthChans, nonSecChans);
 
         TGConnector fromStart;
-        HashMap<String, HSMChannel> secChannels = new HashMap<String, HSMChannel>();
+        Map<String, HSMChannel> secChannels = new HashMap<String, HSMChannel>();
         //Add a HSM for each selected CPU on the component diagram
         for (String cpuName: selectedCpuTasks.keySet()){
-            HashMap<String, HSMChannel> hsmChannels = new HashMap<String, HSMChannel>();
+            Map<String, HSMChannel> hsmChannels = new HashMap<String, HSMChannel>();
             TMLCPrimitiveComponent hsm = new TMLCPrimitiveComponent(0, 500, tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxY(), false, null, tcdp);
             TAttribute isEnc = new TAttribute(2, "isEnc", "true", 4);
             hsm.getAttributes().add(isEnc);
@@ -1127,11 +1124,11 @@ public class GTURTLEModeling {
             //System.out.println("nonSecChans "+ nonSecChans);
             for (TMLCPrimitiveComponent comp: comps){
 
-                HashMap<String, HSMChannel> compChannels = new HashMap<String, HSMChannel>();
+                Map<String, HSMChannel> compChannels = new HashMap<String, HSMChannel>();
                 String compName=comp.getValue();
                 TMLActivityDiagramPanel tad = t.getTMLActivityDiagramPanel(compName);
-                HashSet<TGComponent> channelInstances = new HashSet<TGComponent>();
-                HashSet<TGComponent> secOperators = new HashSet<TGComponent>();
+                Set<TGComponent> channelInstances = new HashSet<TGComponent>();
+                Set<TGComponent> secOperators = new HashSet<TGComponent>();
                 isEnc = new TAttribute(2, "isEnc", "true", 4);
                 comp.getAttributes().add(isEnc);
                 //Find all unsecured channels
@@ -1939,11 +1936,14 @@ public class GTURTLEModeling {
         int arch = gui.tabs.indexOf(tmap.tmlap);
         gui.cloneRenameTab(arch,"enc");
         TMLArchiPanel newarch = (TMLArchiPanel) gui.tabs.get(gui.tabs.size()-1);
+        
         return autoSecure(gui, "enc", tmap,newarch,autoConf,autoWeakAuth, autoStrongAuth);
     }
+    
     public TMLMapping<TGComponent> autoSecure(MainGUI gui, String name, TMLMapping<TGComponent> map, TMLArchiPanel newarch){
         return autoSecure(gui,name,map,newarch,"100","0","100",true,false,false);
     }
+    
     public TMLMapping<TGComponent> autoSecure(MainGUI gui, String name, TMLMapping<TGComponent> map, TMLArchiPanel newarch, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
         return autoSecure(gui,name,map,newarch,"100","0","100",autoConf,autoWeakAuth, autoStrongAuth);
     }
@@ -1967,11 +1967,12 @@ public class GTURTLEModeling {
         TMLArchiPanel newarch = (TMLArchiPanel) gui.tabs.get(gui.tabs.size()-1);
         return autoSecure(gui,"enc", tmap,newarch,encComp, overhead,decComp,autoConf,autoWeakAuth, autoStrongAuth);
     }
+    
     public TMLMapping<TGComponent> autoSecure(MainGUI gui, String name, TMLMapping<TGComponent> map, TMLArchiPanel newarch, String encComp, String overhead, String decComp){
         return autoSecure(gui,name, tmap,newarch,encComp, overhead,decComp,true,false, false);
     }
 
-    public void proverifAnalysis(TMLMapping<TGComponent> map,  ArrayList<String> nonAuthChans, ArrayList<String> nonSecChans){
+    public void proverifAnalysis(TMLMapping<TGComponent> map,  List<String> nonAuthChans, List<String> nonSecChans){
         if (map==null){
             TraceManager.addDev("No mapping");
             return;
@@ -2029,24 +2030,24 @@ public class GTURTLEModeling {
     }
 
     public TMLMapping<TGComponent> autoSecure(MainGUI gui, String name, TMLMapping<TGComponent> map, TMLArchiPanel newarch, String encComp, String overhead, String decComp, boolean autoConf, boolean autoWeakAuth, boolean autoStrongAuth){
-        HashMap<TMLTask, java.util.List<TMLTask>> toSecure = new HashMap<TMLTask, java.util.List<TMLTask>>();
-        HashMap<TMLTask, java.util.List<TMLTask>> toSecureRev = new HashMap<TMLTask, java.util.List<TMLTask>>();
-        HashMap<TMLTask, java.util.List<String>> secOutChannels = new HashMap<TMLTask, java.util.List<String>>();
-        HashMap<TMLTask, java.util.List<String>> secInChannels = new HashMap<TMLTask, java.util.List<String>>();
-        HashMap<TMLTask, java.util.List<String>> nonceOutChannels = new HashMap<TMLTask, java.util.List<String>>();
-        HashMap<TMLTask, java.util.List<String>> nonceInChannels = new HashMap<TMLTask, java.util.List<String>>();
-        HashMap<TMLTask, java.util.List<String>> macOutChannels = new HashMap<TMLTask, java.util.List<String>>();
-        HashMap<TMLTask, java.util.List<String>> macInChannels = new HashMap<TMLTask, java.util.List<String>>();
-        HashMap<TMLTask, java.util.List<String>> macNonceOutChannels = new HashMap<TMLTask, java.util.List<String>>();
-        HashMap<TMLTask, java.util.List<String>> macNonceInChannels = new HashMap<TMLTask, java.util.List<String>>();
+        Map<TMLTask, List<TMLTask>> toSecure = new HashMap<TMLTask, List<TMLTask>>();
+        Map<TMLTask, List<TMLTask>> toSecureRev = new HashMap<TMLTask, List<TMLTask>>();
+        Map<TMLTask, List<String>> secOutChannels = new HashMap<TMLTask, List<String>>();
+        Map<TMLTask, List<String>> secInChannels = new HashMap<TMLTask, List<String>>();
+        Map<TMLTask, List<String>> nonceOutChannels = new HashMap<TMLTask, List<String>>();
+        Map<TMLTask, List<String>> nonceInChannels = new HashMap<TMLTask, List<String>>();
+        Map<TMLTask, List<String>> macOutChannels = new HashMap<TMLTask, List<String>>();
+        Map<TMLTask, List<String>> macInChannels = new HashMap<TMLTask, List<String>>();
+        Map<TMLTask, List<String>> macNonceOutChannels = new HashMap<TMLTask, List<String>>();
+        Map<TMLTask, List<String>> macNonceInChannels = new HashMap<TMLTask, List<String>>();
         TraceManager.addDev("mapping " + map.getSummaryTaskMapping());
-        ArrayList<String> nonAuthChans = new ArrayList<String>();
-        ArrayList<String> nonSecChans = new ArrayList<String>();
+        List<String> nonAuthChans = new ArrayList<String>();
+        List<String> nonSecChans = new ArrayList<String>();
 
         proverifAnalysis(map, nonAuthChans, nonSecChans);
 
         TMLModeling<TGComponent> tmlmodel = map.getTMLModeling();
-        java.util.List<TMLChannel> channels = tmlmodel.getChannels();
+        List<TMLChannel> channels = tmlmodel.getChannels();
         for (TMLChannel channel: channels){
             for (TMLCPrimitivePort p: channel.ports){
                 channel.checkConf = channel.checkConf || p.checkConf;
@@ -2071,16 +2072,16 @@ public class GTURTLEModeling {
         newarch.renameMapping(tabName, tabName+"_"+name);
 
         for (TMLTask task: map.getTMLModeling().getTasks()){
-            java.util.List<String> tmp = new ArrayList<String>();
-            java.util.List<String> tmp2 = new ArrayList<String>();
-            java.util.List<TMLTask> tmp3 = new ArrayList<TMLTask>();
-            java.util.List<TMLTask> tmp4 = new ArrayList<TMLTask>();
-            java.util.List<String> tmp5 = new ArrayList<String>();
-            java.util.List<String> tmp6 = new ArrayList<String>();
-            java.util.List<String> tmp7 = new ArrayList<String>();
-            java.util.List<String> tmp8 = new ArrayList<String>();
-            java.util.List<String> tmp9 = new ArrayList<String>();
-            java.util.List<String> tmp10 = new ArrayList<String>();
+            List<String> tmp = new ArrayList<String>();
+            List<String> tmp2 = new ArrayList<String>();
+            List<TMLTask> tmp3 = new ArrayList<TMLTask>();
+            List<TMLTask> tmp4 = new ArrayList<TMLTask>();
+            List<String> tmp5 = new ArrayList<String>();
+            List<String> tmp6 = new ArrayList<String>();
+            List<String> tmp7 = new ArrayList<String>();
+            List<String> tmp8 = new ArrayList<String>();
+            List<String> tmp9 = new ArrayList<String>();
+            List<String> tmp10 = new ArrayList<String>();
             secInChannels.put(task, tmp);
             secOutChannels.put(task, tmp2);
             toSecure.put(task,tmp3);
@@ -2290,7 +2291,7 @@ public class GTURTLEModeling {
                 int yShift=50;
                 TMLChannel tmlc = tmlmodel.getChannelByName(title +"__"+channel);
                 //First, find the connector that points to it. We will add the encryption, nonce operators directly before the write channel operator
-                HashSet<TGComponent> channelInstances = new HashSet<TGComponent>();
+                Set<TGComponent> channelInstances = new HashSet<TGComponent>();
                 for (TGComponent tg: tad.getComponentList()){
                     if (tg instanceof TMLADWriteChannel){
                         TMLADWriteChannel writeChannel = (TMLADWriteChannel) tg;
@@ -2629,13 +2630,13 @@ public class GTURTLEModeling {
     public boolean securePath(TMLMapping<TGComponent> map, TMLTask t1, TMLTask t2){
         //Check if a path between two tasks is secure
         boolean secure=true;
-        java.util.List<HwLink> links = map.getTMLArchitecture().getHwLinks();
+        List<HwLink> links = map.getTMLArchitecture().getHwLinks();
         HwExecutionNode node1 = (HwExecutionNode) map.getHwNodeOf(t1);
         HwExecutionNode node2 = (HwExecutionNode) map.getHwNodeOf(t2);
-        java.util.List<HwNode> found = new ArrayList<HwNode>();
-        java.util.List<HwNode> done = new ArrayList<HwNode>();
-        java.util.List<HwNode> path = new ArrayList<HwNode>();
-        Map<HwNode, java.util.List<HwNode>> pathMap = new HashMap<HwNode, java.util.List<HwNode>>();
+        List<HwNode> found = new ArrayList<HwNode>();
+        List<HwNode> done = new ArrayList<HwNode>();
+        List<HwNode> path = new ArrayList<HwNode>();
+        Map<HwNode, List<HwNode>> pathMap = new HashMap<HwNode, List<HwNode>>();
         TraceManager.addDev("Links " + links);
         if (node1==node2){
             return true;
@@ -2643,7 +2644,7 @@ public class GTURTLEModeling {
         for (HwLink link: links){
             if (link.hwnode == node1){
                 found.add(link.bus);
-                java.util.List<HwNode> tmp = new ArrayList<HwNode>();
+                List<HwNode> tmp = new ArrayList<HwNode>();
                 tmp.add(link.bus);
                 pathMap.put(link.bus, tmp);
             }
@@ -2659,7 +2660,7 @@ public class GTURTLEModeling {
                     }
                     if (!done.contains(link.hwnode) && !found.contains(link.hwnode) && link.hwnode instanceof HwBridge){
                         found.add(link.hwnode);
-                        java.util.List<HwNode> tmp = new ArrayList<HwNode>(pathMap.get(curr));
+                        List<HwNode> tmp = new ArrayList<HwNode>(pathMap.get(curr));
                         tmp.add(link.hwnode);
                         pathMap.put(link.hwnode, tmp);
                     }
@@ -2667,7 +2668,7 @@ public class GTURTLEModeling {
                 else if (curr == link.hwnode){
                     if (!done.contains(link.bus) && !found.contains(link.bus)){
                         found.add(link.bus);
-                        java.util.List<HwNode> tmp = new ArrayList<HwNode>(pathMap.get(curr));
+                        List<HwNode> tmp = new ArrayList<HwNode>(pathMap.get(curr));
                         tmp.add(link.bus);
                         pathMap.put(link.bus, tmp);
                     }
@@ -2699,7 +2700,7 @@ public class GTURTLEModeling {
         if (tmap==null){
             return;
         }
-        java.util.List<HwLink> links = tmap.getArch().getHwLinks();
+        List<HwLink> links = tmap.getArch().getHwLinks();
         //Find all Security Patterns, if they don't have an associated memory at encrypt and decrypt, map them
         TMLModeling<TGComponent> tmlm = tmap.getTMLModeling();
         if (tmlm.securityTaskMap ==null){
@@ -2714,9 +2715,9 @@ public class GTURTLEModeling {
                     boolean keyFound=false;
                     HwExecutionNode node1 = (HwExecutionNode) tmap.getHwNodeOf(t);
                     //Try to find memory using only private buses
-                    java.util.List<HwNode> toVisit = new ArrayList<HwNode>();
-                    //  java.util.List<HwNode> toMemory = new ArrayList<HwNode>();
-                    java.util.List<HwNode> complete = new ArrayList<HwNode>();
+                    List<HwNode> toVisit = new ArrayList<HwNode>();
+                    //  List<HwNode> toMemory = new ArrayList<HwNode>();
+                    List<HwNode> complete = new ArrayList<HwNode>();
                     for (HwLink link:links){
                         if (link.hwnode==node1){
                             if (link.bus.privacy==1){
@@ -3204,8 +3205,6 @@ public class GTURTLEModeling {
 
     }
 
-
-
     public void saveInFile(File file, String s) {
         TraceManager.addDev("Saving in file " + file.getAbsolutePath() + " size of file=" + s.length());
         //TraceManager.addDev("Length of s=" + s.length());
@@ -3910,7 +3909,6 @@ public class GTURTLEModeling {
             tdp.repaint();
         }
 
-
         TraceManager.addDev("Selecting backward mode");
         selectBackwardMode();
         undoRunning = false;
@@ -3948,6 +3946,9 @@ public class GTURTLEModeling {
         removeAllComponents();
         mgui.reinitMainTabbedPane();
 
+        // Issue #42: the selected tabs should be memorized before incrementing the pointer
+        final Point prevSelectedTabs = savedPanels.elementAt( pointerOperation );
+
         try {
             pointerOperation ++;
             loadModelingFromXML(savedOperations.elementAt(pointerOperation));
@@ -3955,9 +3956,9 @@ public class GTURTLEModeling {
             TraceManager.addError("Exception in forward: " + e.getMessage());
         }
 
-        Point p = savedPanels.elementAt(pointerOperation);
-        if (p != null) {
-            TDiagramPanel tdp = mgui.selectTab(p);
+        //Point prevSelectedTabs = savedPanels.elementAt(pointerOperation);
+        if ( prevSelectedTabs != null ) {
+            TDiagramPanel tdp = mgui.selectTab( prevSelectedTabs );
             tdp.mode = TDiagramPanel.NORMAL;
             tdp.setDraw(true);
             tdp.repaint();