diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
index 37627a2d46fc9cd7f700f7980864127814cc5163..76ec7b9f786218ebf39a90ff5a8cf344aaace7dc 100755
--- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
+++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
@@ -1415,13 +1415,17 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 			GraphicLib.centerOnParent(jdstmlc);
             jdstmlc.setVisible(true); 
  
-			HashMap<String, ArrayList<String>> deviceTaskMap = new HashMap<String, ArrayList<String>>();
-			for (HwNode node : tmap.getTMLArchitecture().getHwNodes()){
-				deviceTaskMap.put(node.getName(), new ArrayList<String>());
-			}
-			for (TMLTask task: tmap.getTMLModeling().getTasks()){
+			LinkedHashMap<String, ArrayList<String>> deviceTaskMap = new LinkedHashMap<String, ArrayList<String>>();
+			for (String name: tmlComponentsToValidate){
+				TMLTask task = tmap.getTMLModeling().getTMLTaskByName(name);
+				if (task==null){
+					continue;
+				}
 				HwNode node = tmap.getHwNodeOf(task);
-				if (node!=null && tmlComponentsToValidate.contains(task.getName())){
+				if (node!=null) {
+					if (!deviceTaskMap.containsKey(node.getName())){
+						deviceTaskMap.put(node.getName(), new ArrayList<String>());
+					}
 					deviceTaskMap.get(node.getName()).add(task.getName());
 				}
 			}
diff --git a/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java b/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java
index ea2b45a77e27dd5c43371a89d5df4bdd6b0e097f..e227cc4945bbe0dabdaa8e5b0b33cc1bf2678066 100644
--- a/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java
+++ b/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java
@@ -57,6 +57,7 @@ import java.util.Hashtable;
 import java.util.Vector;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 
 /**
  * Class JSimulationSDPanel
@@ -109,7 +110,7 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
     // Or the list is described in the trace (header information)
     private Vector <String> entityNames;
 
-	private HashMap<String, ArrayList<String>> deviceTaskMap = new HashMap<String, ArrayList<String>>();
+	private LinkedHashMap<String, ArrayList<String>> deviceTaskMap = new LinkedHashMap<String, ArrayList<String>>();
 
     private final int NO_MODE = 0;
     private final int FILE_MODE = 1;
@@ -179,7 +180,7 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
         this.repaint();
     }
 
-	public void setDevices(HashMap<String, ArrayList<String>> map){
+	public void setDevices(LinkedHashMap<String, ArrayList<String>> map){
 		deviceTaskMap = map;
 		for (String device: deviceTaskMap.keySet()){
 			for (String task: deviceTaskMap.get(device)){
@@ -1067,32 +1068,14 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
         }
 
 
-        //TraceManager.addDev("1");
-
         // Time
         tmp = extract(trans, "time");
         if (tmp == null) {
             return;
         }
 
-        //TraceManager.addDev("2 tmp=" + tmp);
 
         try {
-            //index0 = tmp.indexOf('.');
-            //if (index0 == -1) {
-                //TraceManager.addDev("Invalid time value");
-              //  return;
-            //}
-            //tmp1 = tmp.substring(0, index0);
-            //tmp2 = Conversion.removeStartingCharacters(tmp.substring(index0+1, tmp.length()), "0");
-            //TraceManager.addDev("2 tmp1=" + tmp1 + " tmp2=" + tmp2);
-            //value1 = Integer.decode(tmp1);
-           // if (tmp2.length() == 0) {
-             //   value2 = 0;
-           // } else {
-             //   value2 = Integer.decode(tmp2);
-            //}
-           // value = ((long)value1)*1000000000+value2;
             gt.startingTime = Long.valueOf(tmp);
             gt.finishTime = Long.valueOf(tmp);
         } catch (Exception e) {
@@ -1100,17 +1083,15 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
             return;
         }
 
-        //TraceManager.addDev("3");
-
         // Name of the block
         tmp = extract(trans, "block");
         if (tmp == null) {
             return;
         }
 
-        //TraceManager.addDev("4");
 
         //addEntityNameIfApplicable(tmp);
+        //Show traces of only the selected tasks and ignore transactions if the task is missing
         gt.entityName = tmp;
         if (!entityNames.contains(tmp)){
         	return;
diff --git a/src/main/java/ui/window/JDialogSelectTasks.java b/src/main/java/ui/window/JDialogSelectTasks.java
index e4e2cabd5440cf470ab4ec7d9235e1be52a38bec..ac84c197c4ee1ac74e4ae508a91fb4067a82ca0a 100644
--- a/src/main/java/ui/window/JDialogSelectTasks.java
+++ b/src/main/java/ui/window/JDialogSelectTasks.java
@@ -51,6 +51,7 @@ import java.awt.event.ActionListener;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Vector;
+import java.util.Collections;
 
 
 /**
@@ -76,6 +77,9 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L
     private JButton addOneValidated;
     private JButton addOneIgnored;
     private JButton allIgnored;
+    
+    private JButton shiftUp;
+    private JButton shiftDown;
 
     /**
      * Creates new form
@@ -169,7 +173,7 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L
         // ignored list
         panel1 = new JPanel();
         panel1.setLayout(new BorderLayout());
-        panel1.setBorder(new javax.swing.border.TitledBorder("Ignored components"));
+        panel1.setBorder(new javax.swing.border.TitledBorder("Ignored Tasks"));
         listIgnored = new JList<String>(ign);
         //listIgnored.setPreferredSize(new Dimension(200, 250));
         listIgnored.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -218,10 +222,28 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L
 
         c.add(panel3, c2);
 
+
+        shiftUp = new JButton(IconManager.imgic78);
+        shiftUp.addActionListener(this);
+        shiftUp.setPreferredSize(new Dimension(50, 25));
+        shiftUp.setActionCommand("shiftUp");
+        panel3.add(shiftUp, c1);
+
+        c.add(panel3, c2);
+
+
+        shiftDown = new JButton(IconManager.imgic79);
+        shiftDown.addActionListener(this);
+        shiftDown.setPreferredSize(new Dimension(50, 25));
+        shiftDown.setActionCommand("shiftDown");
+        panel3.add(shiftDown, c1);
+
+        c.add(panel3, c2);
+
         // validated list
         panel2 = new JPanel();
         panel2.setLayout(new BorderLayout());
-        panel2.setBorder(new javax.swing.border.TitledBorder("Used components"));
+        panel2.setBorder(new javax.swing.border.TitledBorder("Displayed Tasks"));
         listValidated = new JList<String>(val);
         //listValidated.setPreferredSize(new Dimension(200, 250));
         listValidated.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -259,9 +281,31 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L
             allValidated();
         } else if (command.equals("allIgnored")) {
             allIgnored();
+        } else if (command.equals("shiftUp")) {
+            shiftUp();
+        } else if (command.equals("shiftDown")) {
+            shiftDown();
         }
     }
 
+	private void shiftUp(){
+	   int index = listValidated.getSelectedIndices()[0];
+	   
+	   Collections.swap(val, index, index-1);
+       listValidated.setListData(val);
+       setButtons();
+	}
+
+
+	private void shiftDown(){
+	   int index = listValidated.getSelectedIndices()[0];
+	   
+	   Collections.swap(val, index, index+1);
+       listValidated.setListData(val);
+       setButtons();
+	}
+
+
 
     private void addOneIgnored() {
         int[] list = listValidated.getSelectedIndices();
@@ -357,6 +401,20 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L
             allIgnored.setEnabled(true);
             closeButton.setEnabled(true);
         }
+        if (i2 < 1){
+        	shiftUp.setEnabled(false);
+        	
+		}
+		else {
+			shiftUp.setEnabled(true);
+		}
+		
+		if (i2==val.size()-1 || i2==-1){
+			shiftDown.setEnabled(false);
+		}
+		else {
+			shiftDown.setEnabled(true);
+		}
     }