diff --git a/src/ui/IconManager.java b/src/ui/IconManager.java
index 477422173cd2fdc5d01beeb5a7fd98f04a4f75f6..c2442e18b47c41f5da9733ddd41acb4b72a3a62b 100755
--- a/src/ui/IconManager.java
+++ b/src/ui/IconManager.java
@@ -153,7 +153,8 @@ public class IconManager {
     public static ImageIcon imgic5100, imgic5102, imgic5104, imgic5106, imgic5108;
     public static ImageIcon imgic5110, imgic5112, imgic5113,imgic5114;
     public static ImageIcon imgic5200;
-    public static ImageIcon imgic7000;
+    //Security
+    public static ImageIcon imgic7000, imgic7001;
 
     // Delegate ports image removed, by Solange
     //public static ImageIcon imgic2102;
@@ -591,6 +592,7 @@ public class IconManager {
     private static String icon6003 = "images/toolbarButtonGraphics/general/safepragma24.gif";
     //Security stuff
     private static String icon7000 = "images/tmlcrypto.gif";
+    private static String icon7001 = "images/tmlfirewallnode.gif";
     public IconManager() {
 
     }
@@ -1001,6 +1003,7 @@ public class IconManager {
         imgic6002 = getIcon(icon6002);
 	imgic6003 = getIcon(icon6003);
 	imgic7000 = getIcon(icon7000);
+	imgic7001 = getIcon(icon7001);
     }
 
 } // Class
diff --git a/src/ui/MainGUI.java b/src/ui/MainGUI.java
index ef55246732a2de16a44969e3063620afdf4c3873..e6b64d28c44501bffbcb34ff805ac17dfbc9210b 100755
--- a/src/ui/MainGUI.java
+++ b/src/ui/MainGUI.java
@@ -1427,7 +1427,22 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
         }
         return list;
     }
+    public Vector<String> getTMLTasks(){
+        TURTLEPanel tp;
+        Vector<String> list = new Vector<String>();
 
+        for(int i=0; i<tabs.size(); i++) {
+            tp = (TURTLEPanel)(tabs.elementAt(i));
+            if (tp instanceof TMLDesignPanel) {
+                list.addAll(((TMLDesignPanel)tp).getAllTMLTaskNames(mainTabbedPane.getTitleAt(i)));
+            }
+	    if (tp instanceof TMLComponentDesignPanel) {
+                list.addAll(((TMLComponentDesignPanel)tp).getAllTMLTaskNames(mainTabbedPane.getTitleAt(i)));
+            }
+        }
+	
+        return list;
+    }
     public Vector getAllApplicationTMLTasksAttributes() {
 
         TURTLEPanel tp;
@@ -8902,9 +8917,11 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
             actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_COMMUNICATION_ARTIFACT);
         } else if (command.equals(actions[TGUIAction.TMLARCHI_KEY].getActionCommand())) {
             actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_KEY);
+        } else if (command.equals(actions[TGUIAction.TMLARCHI_FIREWALL].getActionCommand())) {
+            actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_FIREWALL);
         } else if (command.equals(actions[TGUIAction.TMLARCHI_PORT_ARTIFACT].getActionCommand())) {
             actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_PORT_ARTIFACT);
-
+	
 
 
             // Communication patterns
diff --git a/src/ui/TGComponentManager.java b/src/ui/TGComponentManager.java
index 4b0f3fd08e9962a403f5d7d1a9b090540074dfe4..32561c4a19be52b058d74aeb2ba4c2c70daccea3 100755
--- a/src/ui/TGComponentManager.java
+++ b/src/ui/TGComponentManager.java
@@ -254,6 +254,7 @@ public class TGComponentManager {
     public static final int TMLARCHI_KEY = 1111;
     public static final int TMLARCHI_VGMNNODE = 1112;
     public static final int TMLARCHI_CROSSBARNODE = 1113;
+    public static final int TMLARCHI_FIREWALL = 1114;
 
     public static final int TMLCTD_CCOMPONENT = 1200;
     public static final int TMLCTD_CPORT = 1201;
@@ -1094,6 +1095,9 @@ public class TGComponentManager {
         case TMLARCHI_BRIDGENODE:
             tgc = new TMLArchiBridgeNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
             break;
+        case TMLARCHI_FIREWALL:
+            tgc = new TMLArchiFirewallNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
+            break;
         case TMLARCHI_HWANODE:
             tgc = new TMLArchiHWANode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
             break;
@@ -1771,6 +1775,8 @@ public class TGComponentManager {
             return TMLARCHI_CPNODE;
         } else if (tgc instanceof TMLArchiBridgeNode) {
             return TMLARCHI_BRIDGENODE;
+        } else if (tgc instanceof TMLArchiFirewallNode) {
+            return TMLARCHI_FIREWALL;
         } else if (tgc instanceof TMLArchiHWANode) {
             return TMLARCHI_HWANODE;
         } else if (tgc instanceof TMLArchiMemoryNode) {
diff --git a/src/ui/TGUIAction.java b/src/ui/TGUIAction.java
index 83bcb7f622d489aa6383f4890799144ccf22cb92..a507a88f6918f09d4959cf22b779c828f6375297 100755
--- a/src/ui/TGUIAction.java
+++ b/src/ui/TGUIAction.java
@@ -222,6 +222,7 @@ public class TGUIAction extends AbstractAction {
     public static final int TMLARCHI_DMANODE = 364;
     public static final int TMLARCHI_BRIDGENODE = 225;
     public static final int TMLARCHI_KEY = 435;
+    public static final int TMLARCHI_FIREWALL = 436;
 
     public static final int TMLCP_EDIT = 378;
     public static final int TMLCP_CONNECTOR = 379;
@@ -394,7 +395,7 @@ public class TGUIAction extends AbstractAction {
     public static final int ADD_CHANNELARTIFACT = 411;
     public static final int ADD_VGMNNODE = 401;
     public static final int ADD_CROSSBARNODE = 421;
-   
+ 
   // -------------------------------------------------------------    
     public static final int DEPLOY_AVATAR_DIAGRAM = 418;
     public static final int EXTRAC_DEPLOY_PARAM_TO_FILE = 419;
@@ -965,6 +966,7 @@ public class TGUIAction extends AbstractAction {
         actions[TMLARCHI_MEMORYNODE] = new TAction("add-tmlarchi-memorynode", "Add a memory node", IconManager.imgic1108, IconManager.imgic1108, "Memory node", "Add a memory node to the currently opened DIPLODOCUS architecture diagram", 0);
         actions[TMLARCHI_DMANODE] = new TAction("add-tmlarchi-dmanode", "Add a DMA node", IconManager.imgic1110, IconManager.imgic1110, "DMA node", "Add a DMA node to the currently opened DIPLODOCUS architecture diagram", 0);
         actions[TMLARCHI_KEY] = new TAction("add-tmlarchi-key", "Map a key", IconManager.imgic1118, IconManager.imgic1118, "Map a key", "Map a key onto a node in the currently opened DIPLODOCUS architecture diagram", 0);
+	actions[TMLARCHI_FIREWALL] = new TAction("add-tmlarchi-firewall", "Add a Firewall", IconManager.imgic7001, IconManager.imgic7001, "Add a Firewall", "Add a Firewall in the currently opened DIPLODOCUS architecture diagram",0);
 
         actions[TMLCP_EDIT] = new TAction("edit-tmlcp-diagram", "Edit communication pattern diagram", IconManager.imgic100, IconManager.imgic101, "Edit communication pattern diagram", "Make it possible to edit the currently opened communication pattern diagram", 0);
         actions[TMLCP_CONNECTOR] = new TAction("add-tmlcp-connector", "Add CP Connector", IconManager.imgic202, IconManager.imgic202, "Connector", "Add a Connector between two components of the currently opened communication pattern diagram", 0);
diff --git a/src/ui/TMLComponentDesignPanel.java b/src/ui/TMLComponentDesignPanel.java
index 24d4158b4728ac1356722e03e74f592c45bb8c3a..39934522ddb9ab6a5071391593352b93eae34c16 100755
--- a/src/ui/TMLComponentDesignPanel.java
+++ b/src/ui/TMLComponentDesignPanel.java
@@ -191,6 +191,9 @@ public class TMLComponentDesignPanel extends TURTLEPanel {
 		public Vector getAllTMLTasksAttributes() {
 			return tmlctdp.getAllTMLTasksAttributes();
 		}
+    public ArrayList<String> getAllTMLTaskNames(String _name) {
+	return tmlctdp.getAllTMLTaskNames(_name);
+    }
 
     public void getListOfBreakPoints(ArrayList<Point> points) {
         TGComponent tgc;
diff --git a/src/ui/tmlcompd/TMLComponentTaskDiagramPanel.java b/src/ui/tmlcompd/TMLComponentTaskDiagramPanel.java
index 4794b3ffe77b5d6d0e96eea4a78f83ac74551468..28e958498963d0c45263dbe45d451d3c55e5d492 100755
--- a/src/ui/tmlcompd/TMLComponentTaskDiagramPanel.java
+++ b/src/ui/tmlcompd/TMLComponentTaskDiagramPanel.java
@@ -1208,20 +1208,20 @@ public class TMLComponentTaskDiagramPanel extends TDiagramPanel implements TDPWi
         }
     }
 
-    /*public ArrayList<String> getAllTMLTaskNames(String _topname) {
+    public ArrayList<String> getAllTMLTaskNames(String _topname) {
       TGComponent tgc;
       Iterator iterator = componentList.listIterator();
       ArrayList<String> list = new ArrayList<String>();
 
       while(iterator.hasNext()) {
       tgc = (TGComponent)(iterator.next());
-      if (tgc instanceof TMLTaskOperator) {
-      list.add(_topname + "::" + ((TMLTaskOperator)tgc).getTaskName());
+      if (tgc instanceof TMLCPrimitiveComponent) {
+      list.add(_topname + "::" + ((TMLCPrimitiveComponent)tgc).getValue());
       }
       }
 
       return list;
-      }*/
+      }
 
     /*public ArrayList<String> getAllTMLCommunicationNames(String _topname) {
       TGComponent tgc;
diff --git a/src/ui/tmldd/TMLArchiDiagramToolBar.java b/src/ui/tmldd/TMLArchiDiagramToolBar.java
index 1336a52c699305fb74e36b1ad93198b749d7ac79..8c2fcff5858452554d40af8f714dacf16caaad0e 100755
--- a/src/ui/tmldd/TMLArchiDiagramToolBar.java
+++ b/src/ui/tmldd/TMLArchiDiagramToolBar.java
@@ -77,6 +77,7 @@ public class TMLArchiDiagramToolBar extends TToolBar  implements ActionListener
         mgui.actions[TGUIAction.TMLARCHI_ARTIFACT].setEnabled(b);
         mgui.actions[TGUIAction.TMLARCHI_COMMUNICATION_ARTIFACT].setEnabled(b);
         mgui.actions[TGUIAction.TMLARCHI_KEY].setEnabled(b);
+        mgui.actions[TGUIAction.TMLARCHI_FIREWALL].setEnabled(b);
         mgui.actions[TGUIAction.TMLARCHI_PORT_ARTIFACT].setEnabled(b);
         mgui.actions[TGUIAction.TMLARCHI_EVENT_ARTIFACT].setEnabled(b);
         mgui.actions[TGUIAction.TMLARCHI_MEMORYNODE].setEnabled(b);
@@ -156,6 +157,8 @@ public class TMLArchiDiagramToolBar extends TToolBar  implements ActionListener
         button.addMouseListener(mgui.mouseHandler);
         button = this.add(mgui.actions[TGUIAction.TMLARCHI_KEY]);
         button.addMouseListener(mgui.mouseHandler);
+        button = this.add(mgui.actions[TGUIAction.TMLARCHI_FIREWALL]);
+        button.addMouseListener(mgui.mouseHandler);
         this.addSeparator();
 
         button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_ATTR]);