diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
index 2fc5d895475236ee9e09d72d698bf1fb346bf0c1..7d85aad1a95733a76abc2345409f00838e7d36c8 100755
--- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
+++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
@@ -1378,6 +1378,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
     }
 
 	public void resetSimTrace(){
+		msgTimes.clear();
 		channelIDMap.clear();
 		simtraces.clear();
 	}
@@ -1385,6 +1386,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 	public void writeSimTrace(){
 		try {
 			tmlSimPanel = new JFrameTMLSimulationPanel(new Frame(), mgui, "Simulation Transactions");
+
 			HashMap<String, ArrayList<String>> deviceTaskMap = new HashMap<String, ArrayList<String>>();
 			for (HwNode node : tmap.getTMLArchitecture().getHwNodes()){
 				deviceTaskMap.put(node.getName(), new ArrayList<String>());
@@ -1395,18 +1397,21 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 					deviceTaskMap.get(node.getName()).add(task.getName());
 				}
 			}
-			tmlSimPanel.getSDPanel().setDevices(deviceTaskMap);
 			pos = new PipedOutputStream();
 			pis = new PipedInputStream(pos, 4096);
 			tmlSimPanel.setFileReference(new BufferedReader(new InputStreamReader(pis)));
+			tmlSimPanel.getSDPanel().setDevices(deviceTaskMap);
+
 			bw = new BufferedWriter(new OutputStreamWriter(pos));	
 		/*	for (HwNode node: tmap.getTMLArchitecture().getHwNodes()) {
 				simtraces.add("time=0 block="+ node.getName()+" type=state_entering state=start");
 				simIndex++;
 			}*/
 			for (TMLTask task : tmap.getTMLModeling().getTasks()){
-				simtraces.add("time=0 block="+ task.getName()+" type=state_entering state=startState");
-				simIndex++;
+				if (!simtraces.contains("time=0 block="+ task.getName()+" type=state_entering state=startState")){
+					simtraces.add("time=0 block="+ task.getName()+" type=state_entering state=startState");
+					simIndex++;
+				}
 			}
 			
 
@@ -1438,8 +1443,9 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 	
 	public void writeArchitectureSimTrace(){
 	}
-
+/*
 	public void processDeviceTraces(SimulationTransaction tran){
+		System.out.println("tran " + tran.command + " " + tran.channelName);
 		String command = tran.command;
 		if (command.contains(" ")){
 			command = command.split(" ")[0];
@@ -1516,11 +1522,12 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 		} catch (Exception e){
 			System.out.println("Exception " + e);
 		}
-	}
+	}*/
     
 	protected void addTransactionToNode(SimulationTransaction tran){
-		//System.out.println("Command " + tran.command + " " + tran.deviceName);
+		//System.out.println("Command " + tran.command + " " + tran.deviceName + " " + tran.channelName);
 		String command = tran.command;
+
 		if (command.contains(" ")){
 			command = command.split(" ")[0];
 		}
@@ -1573,13 +1580,13 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 					}
 				}
 			}
-			else if (command.equals("SelectEvent")){
-				String trace="time="+tran.endTime+ " block=" + tran.taskName + " type=state_entering state=SelectEvent";
-				if (!simtraces.contains(trace)){
-					simtraces.add(trace);
+			else if ((command.equals("Send") || command.equals("Wait") || command.equals("SelectEvent"))  && tran.deviceName.contains("CPU") && !tran.channelName.startsWith("reqChannel")){
+				if (command.equals("SelectEvent")){
+					String trace="time="+tran.endTime+ " block=" + tran.taskName + " type=state_entering state=SelectEvent";
+					if (!simtraces.contains(trace)){
+						simtraces.add(trace);
+					}
 				}
-			}
-			else if ((command.equals("Send") || command.equals("Wait"))  && tran.deviceName.contains("CPU")){
 				TMLEvent evt = tmap.getTMLModeling().getEventByShortName(tran.channelName);
 				if (evt!=null){
 					TMLTask originTask = evt.getOriginTask();
@@ -1626,8 +1633,23 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 					}
 				}
 			}
-			else if ((command.equals("Request") || command.equals("Notified")) && tran.deviceName.contains("CPU")){
-				TMLRequest req = tmap.getTMLModeling().getRequestByShortName(tran.channelName);
+			else if ((command.equals("Request") || command.equals("Wait")) && tran.deviceName.contains("CPU") && tran.channelName.startsWith("reqChannel")){
+				TMLRequest req=null;
+				for (TMLRequest request: tmap.getTMLModeling().getRequests()){
+					if (tran.channelName.replaceAll("reqChannel_","").equals(request.getDestinationTask().getName())){						
+						if (command.equals("Request")){
+							for (TMLTask t: request.getOriginTasks()){
+								if (tran.taskName.equals(t.getName())){
+									req=request;
+								}
+							}
+						}
+						else {
+							req=request;
+						}
+					}
+				//	System.out.println(tran.channelName + " " + request.getDestinationTask().getName() + " " + tran.taskName + " " +  request.getOriginTasks().get(0).getName());
+				}
 
 				if (req!=null) {
 					TMLTask destTask = req.getDestinationTask();
diff --git a/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java b/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java
index 6cff97da0a1ea742f8f1a63e6240671b1a0d1354..08bf0b5fe1c581ccf25b2592e3be7ff22badfffc 100644
--- a/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java
+++ b/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java
@@ -237,7 +237,6 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
     // Returns the currentY position
     private int paintTopElements(Graphics g, int currentX, int currentY) {
         int w;
-
 		if (deviceTaskMap.keySet().size()==0){
 	        for(String name : entityNames) {
     	        g.drawLine(currentX + (spaceBetweenLifeLines/4), currentY, currentX + (3*spaceBetweenLifeLines/4), currentY);
@@ -253,6 +252,7 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
 					w = g.getFontMetrics().stringWidth(device);
 					g.drawString(device, currentX + (deviceTaskMap.get(device).size()-1)*((spaceBetweenLifeLines-w)/2), (currentY - spaceVerticalText)/2);
 					for(String name : deviceTaskMap.get(device)) {
+						addEntityNameIfApplicable(name);
 	    	        	g.drawLine(currentX + (spaceBetweenLifeLines/4), currentY, currentX + (3*spaceBetweenLifeLines/4), currentY);
 	    	        	g.drawLine(currentX + (spaceBetweenLifeLines/2), currentY, currentX + (spaceBetweenLifeLines/2), currentY + verticalSpaceUnderBlocks);
 	    	        	w = g.getFontMetrics().stringWidth(name);
@@ -999,7 +999,6 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
 
     public void run() {
         //TraceManager.addDev("Reading file");
-
         if (mode == NO_MODE) {
             return;
         }
@@ -1042,7 +1041,7 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
     }
 
     private void addGenericTransaction(String trans) {
-	//	System.out.println("trans " + trans);
+		//System.out.println("trans " + trans);
         int index0;
         String tmp, tmp1, tmp2;
         long value;
@@ -1220,6 +1219,7 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
     }
 
     private void addEntityNameIfApplicable(String _entityName) {
+    	//System.out.println("Names " + entityNames);
         for(String name: entityNames) {
             //TraceManager.addDev("Examining name= " + name + " entityName=" + _entityName);
             if (name.compareTo(_entityName) ==0) {
@@ -1232,6 +1232,7 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener,
     }
 
     private int getIndexOfEntityName(String _entityName) {
+
         int cpt = 0;
         for(String name: entityNames) {
             if (name.compareTo(_entityName) ==0) {
diff --git a/src/main/java/ui/window/JDialogCryptographicConfiguration.java b/src/main/java/ui/window/JDialogCryptographicConfiguration.java
index b09e1034aa5641fb79d524a2844b8794aad624cd..4d284ed82a5d17a98baf0d0ea8419434985e8376 100644
--- a/src/main/java/ui/window/JDialogCryptographicConfiguration.java
+++ b/src/main/java/ui/window/JDialogCryptographicConfiguration.java
@@ -107,19 +107,23 @@ public class JDialogCryptographicConfiguration extends JDialogBase implements Ac
 	}
 
 	private void initComponents() {
-		//These values are normalized to AES as 100
+		//These values are normalized to AES 128 bit as 100
+		//Based off of https://joneaves.wordpress.com/2004/04/18/ecc_and_rsa_speed_comparison/
+		//https://www.cryptopp.com/benchmarks.html
+		//http://www.cs.wustl.edu/~jain/cse567-06/ftp/encryption_perf/index.html
+		//https://automationrhapsody.com/md5-sha-1-sha-256-sha-512-speed-performance/
 		//Add list of sample security algorithms
-		secAlgs.add(new securityAlgorithm("AES", "0","100","10","128","Symmetric Encryption"));  
+		secAlgs.add(new securityAlgorithm("AES", "0","100","100","128","Symmetric Encryption"));  
 		secAlgs.add(new securityAlgorithm("Triple-DES", "0","200","200","128","Symmetric Encryption"));
 		
-		secAlgs.add(new securityAlgorithm("RSA", "0","100","100","128","Asymmetric Encryption"));    
-		secAlgs.add(new securityAlgorithm("ECC", "0","10","100","128","Asymmetric Encryption"));    
+		secAlgs.add(new securityAlgorithm("RSA", "0","250","150","128","Asymmetric Encryption"));    
+		secAlgs.add(new securityAlgorithm("ECC", "0","315","310","128","Asymmetric Encryption"));    
 		
-		secAlgs.add(new securityAlgorithm("SHA-256", "0","100","100","128","Hash"));    
-		secAlgs.add(new securityAlgorithm("Whirlpool", "0","100","100","128","Hash"));  
+		secAlgs.add(new securityAlgorithm("SHA-256", "0","370","370","128","Hash"));    
+		secAlgs.add(new securityAlgorithm("Whirlpool", "0","550","550","128","Hash"));  
 		
-		secAlgs.add(new securityAlgorithm("Poly-1305", "0","100","100","128","MAC"));    
-		secAlgs.add(new securityAlgorithm("HMAC", "0","100","100","128","MAC")); 
+		secAlgs.add(new securityAlgorithm("Poly-1305", "0","400","400","128","MAC"));    
+		secAlgs.add(new securityAlgorithm("HMAC", "0","800","800","128","MAC")); 
 		
 		for (securityAlgorithm secAlg: secAlgs){
 			algNames.add(secAlg.name);