diff --git a/src/ui/networkmodelloader/JDialogLoadingNetworkModel.java b/src/ui/networkmodelloader/JDialogLoadingNetworkModel.java
index a96007d3c9f018ce7e51116009b21504a0a80486..da8da2a6b4853f3b3f30d5588f4b6a27dc705024 100644
--- a/src/ui/networkmodelloader/JDialogLoadingNetworkModel.java
+++ b/src/ui/networkmodelloader/JDialogLoadingNetworkModel.java
@@ -60,10 +60,10 @@ import myutil.*;
 
 public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements ActionListener, Runnable, LoaderFacilityInterface, CallbackLoaderInterface  {
 
-    public final static String [] FEATURES = {"all",  "diplodocus", "avatar", "sysml-sec", "assumptions", "requirements", "attacktrees", "properties", "partitioning", "analysis", "design", "prototyping", "security protocol"};
+    public final static String [] FEATURES = {"all",  "diplodocus", "avatar", "sysml-sec", "assumptions", "requirements", "attacktrees", "properties", "partitioning", "analysis", "design", "prototyping", "securityprotocol"};
 
     public final static String [] PROPS = {"safety", "security", "performance"};
-    
+
     private ArrayList<NetworkModel> listOfModels;
 
     protected Frame f;
@@ -131,13 +131,13 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac
         c.setLayout(new BorderLayout());
         //setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 
-        
 
-	JPanel lowPart = new JPanel(new BorderLayout());
+
+        JPanel lowPart = new JPanel(new BorderLayout());
 
         jta = new ScrolledJTextArea();
         jta.setEditable(false);
-	jta.setLineWrap(true);
+        jta.setLineWrap(true);
         jta.setMargin(new Insets(10, 10, 10, 10));
         jta.setTabSize(3);
         jta.append("Connecting to " + url + ".\n Please wait ...\n\n");
@@ -146,23 +146,27 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac
         textAreaWriter = new JTextAreaWriter( jta );
 
         jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
-	jsp.setPreferredSize(new Dimension(400, 200));
-
-	JPanel options = new JPanel();
-	featureList = new JComboBox<String>(FEATURES);
-	featureList.addActionListener(this);
-	options.add(featureList);
-
-	props = new JCheckBox[PROPS.length];
-	for (int i=0; i<props.length; i++) {
-	    props[i] = new JCheckBox(PROPS[i]);
-	    props[i].addActionListener(this);
-	    props[i].setSelected(true);
-	    options.add(props[i]);
-	}
-	
-	lowPart.add(options, BorderLayout.NORTH);
+        jsp.setPreferredSize(new Dimension(400, 200));
+
+        JPanel options = new JPanel();
+
+	JLabel infoModels = new JLabel("Not loaded");
+	options.add(infoModels);
 	
+        featureList = new JComboBox<String>(FEATURES);
+        featureList.addActionListener(this);
+        options.add(featureList);
+
+        props = new JCheckBox[PROPS.length];
+        for (int i=0; i<props.length; i++) {
+            props[i] = new JCheckBox(PROPS[i]);
+            props[i].addActionListener(this);
+            props[i].setSelected(true);
+            options.add(props[i]);
+        }
+
+        lowPart.add(options, BorderLayout.NORTH);
+
 
         lowPart.add(jsp, BorderLayout.CENTER);
 
@@ -181,11 +185,11 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac
 
         lowPart.add(jp2, BorderLayout.SOUTH);
 
-	c.add(lowPart, BorderLayout.SOUTH);
+        c.add(lowPart, BorderLayout.SOUTH);
 
-	panel = new NetworkModelPanel(this, listOfModels, this, jta);
+        panel = new NetworkModelPanel(this, listOfModels, this, jta, infoModels);
         jsp = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
-	panel.setJSP(jsp);
+        panel.setJSP(jsp);
 
         c.add(jsp, BorderLayout.CENTER);
     }
@@ -194,24 +198,24 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac
         //String command = evt.getActionCommand();
 
         // Compare the action command to the known actions.
-	if (evt.getSource() == stop) {
+        if (evt.getSource() == stop) {
             cancel();
-	    return ;
+            return ;
         } else if (evt.getSource() == featureList) {
-	    featureSelectionMade();
-	    return;
-	}
-
-	for (int i = 0; i<props.length; i++) {
-	    if (evt.getSource() == props[i]) {
-		panel.setProperty(i, props[i].isSelected());
-		return;
-	    }
-	}
+            featureSelectionMade();
+            return;
+        }
+
+        for (int i = 0; i<props.length; i++) {
+            if (evt.getSource() == props[i]) {
+                panel.setProperty(i, props[i].isSelected());
+                return;
+            }
+        }
     }
 
     public void featureSelectionMade() {
-	panel.setFeatureSelectedIndex(featureList.getSelectedIndex());
+        panel.setFeatureSelectedIndex(featureList.getSelectedIndex());
     }
 
     public void cancel() {
@@ -223,84 +227,84 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac
         // Loading main file describing models, giving information on this, and filling the array of models
         // Accsing the main file
         try {
-	    /*HttpURLConnection connection;
-	    TraceManager.addDev("URL: going to create it to: " + url);
-            URL mainFile = new URL(url);
-	    TraceManager.addDev("URL creation");
-	    connection = (HttpURLConnection)(mainFile.openConnection());
-	    TraceManager.addDev("Connection setup 0");
-	    String redirect = connection.getHeaderField("Location");
-	    if (redirect != null){
-		TraceManager.addDev("Redirection found");
-		connection = (HttpURLConnection)(new URL(redirect).openConnection());
-	    }
-	    //connection.setRequestMethod("GET");
-	    //connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
-	    TraceManager.addDev("Connection setup 1");*/
-	    BufferedReader in = URLManager.getBufferedReader(url);
+            /*HttpURLConnection connection;
+              TraceManager.addDev("URL: going to create it to: " + url);
+              URL mainFile = new URL(url);
+              TraceManager.addDev("URL creation");
+              connection = (HttpURLConnection)(mainFile.openConnection());
+              TraceManager.addDev("Connection setup 0");
+              String redirect = connection.getHeaderField("Location");
+              if (redirect != null){
+              TraceManager.addDev("Redirection found");
+              connection = (HttpURLConnection)(new URL(redirect).openConnection());
+              }
+              //connection.setRequestMethod("GET");
+              //connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
+              TraceManager.addDev("Connection setup 1");*/
+            BufferedReader in = URLManager.getBufferedReader(url);
             jta.append("Connection established...\n");
             String inputLine;
-	    NetworkModel nm = null;
+            NetworkModel nm = null;
             while ((inputLine = in.readLine()) != null) {
-		if (inputLine.startsWith("#FILE")) {
-		    nm = new NetworkModel(inputLine.substring(5, inputLine.length()).trim());
-		    listOfModels.add(nm);
-		}
-		
-		if (inputLine.startsWith("-FEATURES")) {
-		    if (nm != null) {
-			String tmp = inputLine.substring(9, inputLine.length()).trim().toLowerCase();
-			for (int i=1; i<FEATURES.length; i++) {
-			    nm.features[i] = tmp.indexOf(FEATURES[i]) != -1;
-			}
-			//nm.type = NetworkModel.stringToNetworkModelType(inputLine.substring(5, inputLine.length()).trim());
-		    }
-		}
-
-		if (inputLine.startsWith("-PROPS")) {
-		    if (nm != null) {
-			String tmp = inputLine.substring(6, inputLine.length()).trim().toLowerCase();
-			for (int i=0; i<PROPS.length; i++) {
-			    nm.props[i] = tmp.indexOf(PROPS[i]) != -1;
-			}
-			//nm.type = NetworkModel.stringToNetworkModelType(inputLine.substring(5, inputLine.length()).trim());
-		    }
-		}
-
-		if (inputLine.startsWith("-AUTHOR")) {
-		    if (nm != null) {
-			nm.author = inputLine.substring(7, inputLine.length()).trim();
-		    }
-		}
-	    
-
-		if (inputLine.startsWith("-DESCRIPTION")) {
-		    if (nm != null) {
-			nm.description = inputLine.substring(12, inputLine.length()).trim();
-		    }
-		}
-
-		if (inputLine.startsWith("-IMG")) {
-		    if (nm != null) {
-			nm.image = inputLine.substring(4, inputLine.length()).trim();
-			TraceManager.addDev("Dealing with image:" + nm.image);
-			nm.bi = URLManager.getBufferedImageFromURL(URLManager.getBaseURL(url) + nm.image);
-		    }
-		}
-		
+                if (inputLine.startsWith("#FILE")) {
+                    nm = new NetworkModel(inputLine.substring(5, inputLine.length()).trim());
+                    listOfModels.add(nm);
+                }
+
+                if (inputLine.startsWith("-FEATURES")) {
+                    if (nm != null) {
+                        String tmp = inputLine.substring(9, inputLine.length()).trim().toLowerCase();
+                        for (int i=1; i<FEATURES.length; i++) {
+                            nm.features[i] = tmp.indexOf(FEATURES[i]) != -1;
+                        }
+                        //nm.type = NetworkModel.stringToNetworkModelType(inputLine.substring(5, inputLine.length()).trim());
+                    }
+                }
+
+                if (inputLine.startsWith("-PROPS")) {
+                    if (nm != null) {
+                        String tmp = inputLine.substring(6, inputLine.length()).trim().toLowerCase();
+                        for (int i=0; i<PROPS.length; i++) {
+                            nm.props[i] = tmp.indexOf(PROPS[i]) != -1;
+                        }
+                        //nm.type = NetworkModel.stringToNetworkModelType(inputLine.substring(5, inputLine.length()).trim());
+                    }
+                }
+
+                if (inputLine.startsWith("-AUTHOR")) {
+                    if (nm != null) {
+                        nm.author = inputLine.substring(7, inputLine.length()).trim();
+                    }
+                }
+
+
+                if (inputLine.startsWith("-DESCRIPTION")) {
+                    if (nm != null) {
+                        nm.description = inputLine.substring(12, inputLine.length()).trim();
+                    }
+                }
+
+                if (inputLine.startsWith("-IMG")) {
+                    if (nm != null) {
+                        nm.image = inputLine.substring(4, inputLine.length()).trim();
+                        //TraceManager.addDev("Dealing with image:" + nm.image);
+                        //nm.bi = URLManager.getBufferedImageFromURL(URLManager.getBaseURL(url) + nm.image);
+                    }
+                }
+
                 //System.out.println(inputLine);
-		
-	    }
-		jta.append("\n" + listOfModels.size() + " remote models found.\nSelect a model to download it locally and open it.\n\n");
-	    mode = LISTED;
-	    panel.preparePanel();
-	    panel.repaint();
+
+            }
+            jta.append("\n" + listOfModels.size() + " remote models found.\nSelect a model to download it locally and open it.\n\n");
+            mode = LISTED;
+            panel.preparePanel(url);
+            panel.repaint();
             in.close();
 
-	    // Wait 5seconds before refreshing panel
-	    Thread.sleep(5000);
-	    panel.repaint();
-	    
+            // Wait 5seconds before refreshing panel
+            Thread.sleep(5000);
+            panel.repaint();
+
         } catch (Exception e) {
             jta.append("Error: " + e.getMessage() + " when retreiving file " + url );
         }
@@ -336,31 +340,31 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac
 
     // LoaderFacilityInterface
     public void load(int index) {
-	String fileName = listOfModels.get(index).fileName;
-	jta.append("Loading model: " + fileName);
-	String urlToLoad = URLManager.getBaseURL(url) + fileName;
-	URLManager urlm = new URLManager();
-	filePath = ConfigurationTTool.FILEPath + "/" + fileName;
-	boolean ok = urlm.downloadFile(ConfigurationTTool.FILEPath + "/" + fileName, urlToLoad,this);
-	if (!ok) {
-	    jta.append("Model transfer failed\nPlease, select another model, or retry\n");
-	    panel.reactivateSelection();
-	}
+        String fileName = listOfModels.get(index).fileName;
+        jta.append("Loading model: " + fileName);
+        String urlToLoad = URLManager.getBaseURL(url) + fileName;
+        URLManager urlm = new URLManager();
+        filePath = ConfigurationTTool.FILEPath + "/" + fileName;
+        boolean ok = urlm.downloadFile(ConfigurationTTool.FILEPath + "/" + fileName, urlToLoad,this);
+        if (!ok) {
+            jta.append("Model transfer failed\nPlease, select another model, or retry\n");
+            panel.reactivateSelection();
+        }
     }
 
     // CallbackLoaderInterface
     public void loadDone() {
-	jta.append("Model transfered, opening it in TTool\n");
-	this.dispose();
-	mgui.openProjectFromFile(new File(filePath));
+        jta.append("Model transfered, opening it in TTool\n");
+        this.dispose();
+        mgui.openProjectFromFile(new File(filePath));
     }
 
     public void loadFailed() {
-	jta.append("Model transfer failed\nPlease, select another model, or retry\n");
-	panel.reactivateSelection();
+        jta.append("Model transfer failed\nPlease, select another model, or retry\n");
+        panel.reactivateSelection();
     }
 
-    
+
     // JTA manipulation by external objects
     public void appendOut(String s) {
         jta.append(s);
diff --git a/src/ui/networkmodelloader/NetworkModelPanel.java b/src/ui/networkmodelloader/NetworkModelPanel.java
index 0cd7769a83a590d171c7ffbf6279234f3547318f..50ed192de8a7bbf5c4e6502328353db1b3fc06a9 100644
--- a/src/ui/networkmodelloader/NetworkModelPanel.java
+++ b/src/ui/networkmodelloader/NetworkModelPanel.java
@@ -59,7 +59,7 @@ import ui.*;
 
 
 
-public class NetworkModelPanel extends JPanel implements MouseListener, MouseMotionListener {
+public class NetworkModelPanel extends JPanel implements Runnable, MouseListener, MouseMotionListener {
 
     private static int ImgSizeX = 220;
     private static int ImgSizeY = 120;
@@ -82,17 +82,22 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
 
     private JTextArea jta;
     private JScrollPane jsp;
+    private JLabel infoModels;
+    private int nbOfModels = -1;
 
     private int featureSelectedIndex = 0;
     private boolean props[];
-    
-	
 
-    public NetworkModelPanel(LoaderFacilityInterface _loader, ArrayList<NetworkModel> _listOfModels, ActionListener _listener, JTextArea _jta) {
+    private String url;
+
+
+
+    public NetworkModelPanel(LoaderFacilityInterface _loader, ArrayList<NetworkModel> _listOfModels, ActionListener _listener, JTextArea _jta, JLabel _infoModels) {
         loader = _loader;
         listOfModels = _listOfModels;
         listener = _listener;
         jta = _jta;
+	infoModels = _infoModels;
 
         //Dimension pSize = new Dimension(500, 400);
         Dimension mSize = new Dimension(400, 300);
@@ -102,13 +107,13 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
         setBackground(new java.awt.Color(250, 250, 250));
         setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
 
-	// properties
-	props = new boolean[JDialogLoadingNetworkModel.PROPS.length];
-	for (int i=0; i<props.length; i++) {
-	    props[i] = true;
-	}
+        // properties
+        props = new boolean[JDialogLoadingNetworkModel.PROPS.length];
+        for (int i=0; i<props.length; i++) {
+            props[i] = true;
+        }
 
-	// Mouse management
+        // Mouse management
         addMouseMotionListener(this);
         addMouseListener(this);
     }
@@ -120,20 +125,17 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
 
     public void setFeatureSelectedIndex(int _index) {
         featureSelectedIndex = _index;
-	indexOfSelected = -1;
+        indexOfSelected = -1;
         repaint();
     }
 
     public void setProperty(int _index, boolean _mode) {
-	props[_index] = _mode;
-	indexOfSelected = -1;
-	repaint();
+        props[_index] = _mode;
+        indexOfSelected = -1;
+        repaint();
     }
 
-
-    public void preparePanel() {
-        //int cptColumn = 0;
-        //int cptRow = 0;
+    public void run() {
         for(NetworkModel button: listOfModels) {
             //Dimension d = new Dimension(buttonSizeX, buttonSizeY);
             //button.setPreferredSize(d);
@@ -145,39 +147,41 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
               button.setToolTipText(button.description);
               }*/
 
-            if (button.bi != null) {
-                TraceManager.addDev("Adding image");
+            if (button.image != null) {
+                //TraceManager.addDev("Adding image");
+                button.bi = URLManager.getBufferedImageFromURL(URLManager.getBaseURL(url) + button.image);
+                if (button.bi != null) {
+                    /*BufferedImage newImage = new BufferedImage(ImgSizeX, ImgSizeY, button.bi.getType());
+                      Graphics g = newImage.createGraphics();
+                      g.drawImage(button.bi, 0, 0, ImgSizeX, ImgSizeY, null);
+                      g.dispose();*/
+                    button.scaledImg = ImageManager.getScaledImage(button.bi, ImgSizeX, ImgSizeY);
+                    repaint();
+                }
 
-                /*BufferedImage newImage = new BufferedImage(ImgSizeX, ImgSizeY, button.bi.getType());
-                  Graphics g = newImage.createGraphics();
-                  g.drawImage(button.bi, 0, 0, ImgSizeX, ImgSizeY, null);
-                  g.dispose();*/
-                button.scaledImg = ImageManager.getScaledImage(button.bi, ImgSizeX, ImgSizeY);
             }
-
-            //button.setBorder(BorderFactory.createEmptyBorder());
-            //button.setContentAreaFilled(false);
-            //add(button);
-            /*cptColumn ++;
-              if (cptColumn == nbOfButtonsPerColumn) {
-              cptRow ++;
-              cptColumn = 0;
-              }*/
         }
     }
 
 
+    public void preparePanel(String _url) {
+	url = _url;
+        Thread t = new Thread(this);
+        t.start();
+    }
+
+
     private boolean hasAtLeastOneSelectedProperty(NetworkModel _nm) {
-	for (int i=0; i<props.length; i++) {
-	    if (props[i]) {
-		if (_nm.props[i]) {
-		    return true;
-		}
-	    }
-	}
-	return false;
+        for (int i=0; i<props.length; i++) {
+            if (props[i]) {
+                if (_nm.props[i]) {
+                    return true;
+                }
+            }
+        }
+        return false;
     }
-    
+
 
     @Override
     public void paintComponent(Graphics g) {
@@ -186,6 +190,8 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
         int cptRow = 0;
 
         int index = 0;
+	int modelsDrawn = 0;
+	
         for(NetworkModel button: listOfModels) {
             if ((button.features[featureSelectedIndex]) && hasAtLeastOneSelectedProperty(button)){
                 Color c = g.getColor();
@@ -199,6 +205,7 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
                     g.setColor(c);
                     GraphicLib.centerString(g, "No picture", tmpX, tmpY + buttonSizeY/2, buttonSizeX);
                 }
+		modelsDrawn ++;
 
                 GraphicLib.centerString(g, button.fileName, tmpX, tmpY + buttonSizeY + 15, buttonSizeX);
 
@@ -230,11 +237,11 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
                     g.setColor(c);
                 }
             } else {
-		button.x = -1;
+                button.x = -1;
                 button.y = -1;
                 button.width = -1;
                 button.height = -1;
-	    }
+            }
 
             index ++;
         }
@@ -245,13 +252,18 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
 
         if (!((currentPSize.getWidth() == pSize.getWidth()) && (currentPSize.getHeight() == pSize.getHeight()))) {
             if (jsp != null) {
-                TraceManager.addDev("repainting jsp");
+                //TraceManager.addDev("repainting jsp");
                 jsp.setViewportView(this);
                 //jsp.revalidate();
                 //jsp.repaint();
             }
         }
 
+	if ((modelsDrawn != nbOfModels) && (infoModels != null)) {
+	    nbOfModels = modelsDrawn;
+	    infoModels.setText(nbOfModels + " model(s)");
+	}
+
 
         //g.drawString(listOfModels.size() + " model(s) available", 20, 20);
         //g.drawRect(200, 200, 200, 200);
@@ -268,13 +280,13 @@ public class NetworkModelPanel extends JPanel implements MouseListener, MouseMot
             boolean found = false;;
             int index = 0;
             for(NetworkModel button: listOfModels) {
-		if ((button.features[featureSelectedIndex]) && hasAtLeastOneSelectedProperty(button)) {
-		    if ((e.getX() > button.x) && (e.getX() < button.x + button.width) &&  (e.getY() > button.y) && (e.getY() < button.y + button.height)) {
-			indexOfSelected = index;
-			found = true;
-			break;
-		    }
-		}
+                if ((button.features[featureSelectedIndex]) && hasAtLeastOneSelectedProperty(button)) {
+                    if ((e.getX() > button.x) && (e.getX() < button.x + button.width) &&  (e.getY() > button.y) && (e.getY() < button.y + button.height)) {
+                        indexOfSelected = index;
+                        found = true;
+                        break;
+                    }
+                }
                 index ++;
             }
             if (!found) {