diff --git a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
index 7f0c144e2ae47afb02a07d9ea6f4478d5b16a053..b5f6ed9f6127342093deaffa796c5e3a04de819f 100644
--- a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
+++ b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
@@ -58,56 +58,54 @@ public class TML2Avatar {
     private final static Integer channelPrivate = 1;
     private final static Integer channelUnreachable = 2;
     //private AvatarAttribute pKey;
-    private Map<TMLTask, AvatarBlock> taskBlockMap = new HashMap<TMLTask, AvatarBlock>();
-    private Map<String, Integer> originDestMap = new HashMap<String, Integer>();
-    private Map<String, Object> stateObjectMap = new HashMap<String, Object>();
-    private Map<TMLTask, List<SecurityPattern>> accessKeys = new HashMap<TMLTask, List<SecurityPattern>>();
-    private ArrayList<SecurityPattern> secPatterns = new ArrayList<SecurityPattern>();
+    private final Map<TMLTask, AvatarBlock> taskBlockMap = new HashMap<>();
+    private final Map<String, Integer> originDestMap = new HashMap<>();
+    private final Map<String, Object> stateObjectMap = new HashMap<>();
+    private final Map<TMLTask, List<SecurityPattern>> accessKeys = new HashMap<>();
+    private final List<SecurityPattern> secPatterns = new ArrayList<>();
     private int loopLimit = 1;
-    private HashMap<TMLActivityElement, Set<String>> channelsSecAttributes = new HashMap<TMLActivityElement, Set<String>>();
-    private HashMap<TMLChannel, Set<AvatarPragma>> secChannelMap = new HashMap<TMLChannel, Set<AvatarPragma>>();
-    private Map<TMLWriteChannel, Set<AvatarPragma>> confPragmaMap = new HashMap<TMLWriteChannel, Set<AvatarPragma>>();;
-    private Map<TMLActivityElement, Set<AvatarPragma>> authPragmaMap = new HashMap<TMLActivityElement, Set<AvatarPragma>>();;
-    private HashMap<String, List<AvatarAttributeState>> signalAuthOriginMap = new HashMap<String, List<AvatarAttributeState>>();
-    private HashMap<String, List<AvatarAttributeState>> signalAuthDestMap = new HashMap<String, List<AvatarAttributeState>>();
-    private List<AvatarSignal> signals = new ArrayList<AvatarSignal>();
+    private final HashMap<TMLActivityElement, Set<String>> channelsSecAttributes = new HashMap<>();
+    private final HashMap<TMLChannel, Set<AvatarPragma>> secChannelMap = new HashMap<>();
+    private final Map<TMLWriteChannel, Set<AvatarPragma>> confPragmaMap = new HashMap<>();
+    private final Map<TMLActivityElement, Set<AvatarPragma>> authPragmaMap = new HashMap<>();
+    private final HashMap<String, List<AvatarAttributeState>> signalAuthOriginMap = new HashMap<>();
+    private final HashMap<String, List<AvatarAttributeState>> signalAuthDestMap = new HashMap<>();
+    private final List<AvatarSignal> signals = new ArrayList<>();
     private AvatarSpecification avspec;
-    private ArrayList<String> attrsToCheck;
-    private List<String> allStates;
-    private boolean mc = false;
-    private boolean security = false;
-    private TMLMapping<?> tmlmap;
-    private TMLModeling<?> tmlmodel;
-    private Set<SecurityPattern> keysPublicBus = new HashSet<SecurityPattern>();
-    private Map<SecurityPattern, List<AvatarAttribute>> symKeys = new HashMap<SecurityPattern, List<AvatarAttribute>>();
-    private Map<SecurityPattern, List<AvatarAttribute>> pubKeys = new HashMap<SecurityPattern, List<AvatarAttribute>>();
-
-    private Map<SecurityPattern, AvatarAttribute> secPatternEncAttribute = new HashMap<SecurityPattern, AvatarAttribute>();
-    private Map<SecurityPattern, AvatarAttribute> secPatternDecAttribute = new HashMap<SecurityPattern, AvatarAttribute>();
-    private Map<SecurityPattern, AvatarPragmaSecret> secPatternPragmaMap = new HashMap<SecurityPattern, AvatarPragmaSecret>();
-    private Map<String, String> nameMap = new HashMap<String, String>();
-    private Map<String, AvatarSignal> signalInMap = new HashMap<String, AvatarSignal>();
-    private Map<String, AvatarSignal> signalOutMap = new HashMap<String, AvatarSignal>();
-
-    private Object referenceObject;
+    private final List<String> allStates;
+    private final boolean mc;
+    private final boolean security;
+    private final TMLMapping<?> tmlmap;
+    private final TMLModeling<?> tmlmodel;
+    private final Set<SecurityPattern> keysPublicBus = new HashSet<>();
+    private final Map<SecurityPattern, List<AvatarAttribute>> symKeys = new HashMap<>();
+    private final Map<SecurityPattern, List<AvatarAttribute>> pubKeys = new HashMap<>();
+
+    private final Map<SecurityPattern, AvatarAttribute> secPatternEncAttribute = new HashMap<>();
+    private final Map<SecurityPattern, AvatarAttribute> secPatternDecAttribute = new HashMap<>();
+    private final Map<SecurityPattern, AvatarPragmaSecret> secPatternPragmaMap = new HashMap<>();
+    private final Map<String, String> nameMap = new HashMap<>();
+    private final Map<String, AvatarSignal> signalInMap = new HashMap<>();
+    private final Map<String, AvatarSignal> signalOutMap = new HashMap<>();
+
+    private final Object referenceObject;
 
     public TML2Avatar(TMLMapping<?> tmlmap, boolean modelcheck, boolean sec, Object _referenceObject) {
         this.tmlmap = tmlmap;
 
         this.tmlmodel = tmlmap.getTMLModeling();
 
-        allStates = new ArrayList<String>();
-        attrsToCheck = new ArrayList<String>();
+        allStates = new ArrayList<>();
         mc = modelcheck;
         security = sec;
 
         referenceObject = _referenceObject;
     }
 
-    public void checkConnections() {
+    private void checkConnections() {
         List<HwLink> links = tmlmap.getTMLArchitecture().getHwLinks();
         for (TMLTask t1 : tmlmodel.getTasks()) {
-            List<SecurityPattern> keys = new ArrayList<SecurityPattern>();
+            List<SecurityPattern> keys = new ArrayList<>();
             accessKeys.put(t1, keys);
             for (HwLink link : links) {
                 if (link.bus.privacy == HwBus.BUS_PUBLIC &&  link.hwnode instanceof HwMemory) {
@@ -118,9 +116,9 @@ public class TML2Avatar {
 
             HwExecutionNode node1 = tmlmap.getHwNodeOf(t1);
             //Try to find memory using only private buses from origin
-            List<HwNode> toVisit = new ArrayList<HwNode>();
+            List<HwNode> toVisit = new ArrayList<>();
             //List<HwNode> toMemory = new ArrayList<HwNode>();
-            List<HwNode> complete = new ArrayList<HwNode>();
+            List<HwNode> complete = new ArrayList<>();
             for (HwLink link : links) {
                 if (link.hwnode == node1) {
                     if (link.bus.privacy == 1) {
@@ -130,7 +128,7 @@ public class TML2Avatar {
             }
             boolean memory = false;
             //memloop:
-            while (toVisit.size() > 0) {
+            while (!toVisit.isEmpty()) {
                 HwNode curr = toVisit.remove(0);
                 for (HwLink link : links) {
                     if (curr == link.bus) {
@@ -167,20 +165,20 @@ public class TML2Avatar {
                     //Navigate architecture for node
 
                     //HwNode last = node1;
-                    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>>();
+                    List<HwNode> found = new ArrayList<>();
+                    List<HwNode> done = new ArrayList<>();
+                    List<HwNode> path = new ArrayList<>();
+                    Map<HwNode, List<HwNode>> pathMap = new HashMap<>();
                     for (HwLink link : links) {
                         if (link.hwnode == node1) {
                             found.add(link.bus);
-                            List<HwNode> tmp = new ArrayList<HwNode>();
+                            List<HwNode> tmp = new ArrayList<>();
                             tmp.add(link.bus);
                             pathMap.put(link.bus, tmp);
                         }
                     }
                     outerloop:
-                    while (found.size() > 0) {
+                    while (!found.isEmpty()) {
                         HwNode curr = found.remove(0);
                         for (HwLink link : links) {
                             if (curr == link.bus) {
@@ -190,14 +188,14 @@ public class TML2Avatar {
                                 }
                                 if (!done.contains(link.hwnode) && !found.contains(link.hwnode) && link.hwnode instanceof HwBridge) {
                                     found.add(link.hwnode);
-                                    List<HwNode> tmp = new ArrayList<HwNode>(pathMap.get(curr));
+                                    List<HwNode> tmp = new ArrayList<>(pathMap.get(curr));
                                     tmp.add(link.hwnode);
                                     pathMap.put(link.hwnode, tmp);
                                 }
                             } else if (curr == link.hwnode) {
                                 if (!done.contains(link.bus) && !found.contains(link.bus)) {
                                     found.add(link.bus);
-                                    List<HwNode> tmp = new ArrayList<HwNode>(pathMap.get(curr));
+                                    List<HwNode> tmp = new ArrayList<>(pathMap.get(curr));
                                     tmp.add(link.bus);
                                     pathMap.put(link.bus, tmp);
                                 }
@@ -205,7 +203,7 @@ public class TML2Avatar {
                         }
                         done.add(curr);
                     }
-                    if (path.size() == 0) {
+                    if (path.isEmpty()) {
                         originDestMap.put(t1.getName() + "__" + t2.getName(), channelUnreachable);
                     } else {
                         int priv = 1;
@@ -329,7 +327,7 @@ public class TML2Avatar {
 			TraceManager.addDev(channelMap);
 		}*/
 
-    public List<AvatarStateMachineElement> translateState(TMLActivityElement ae, AvatarBlock block) {
+    private List<AvatarStateMachineElement> translateState(TMLActivityElement ae, AvatarBlock block) {
 
         //		TMLActionState tmlaction;
         //		TMLChoice tmlchoice;
@@ -351,7 +349,7 @@ public class TML2Avatar {
         //		TMLDelay tmldelay;
 
         AvatarTransition tran = new AvatarTransition(block, "", null);
-        List<AvatarStateMachineElement> elementList = new ArrayList<AvatarStateMachineElement>();
+        List<AvatarStateMachineElement> elementList = new ArrayList<>();
 
         if (ae == null) {
             return elementList;
@@ -393,7 +391,7 @@ public class TML2Avatar {
                 for (AvatarStateMachineElement e : seq) {
                     if (e instanceof AvatarStopState) {
                         //ignore
-                    } else if (e.getNexts().size() == 0) {
+                    } else if (e.getNexts().isEmpty()) {
                         e.addNext(tmp.get(0));
                         elementList.add(e);
                     } else if (e.getNext(0) instanceof AvatarStopState) {
@@ -411,7 +409,7 @@ public class TML2Avatar {
             //Put stop states on the end of the last in sequence
 
             for (AvatarStateMachineElement e : seq) {
-                if (e.getNexts().size() == 0 && !(e instanceof AvatarStopState)) {
+                if (e.getNexts().isEmpty() && !(e instanceof AvatarStopState)) {
                     AvatarStopState stop = new AvatarStopState("stop", null, block);
                     e.addNext(stop);
                     elementList.add(stop);
@@ -531,7 +529,7 @@ public class TML2Avatar {
                     for (AvatarStateMachineElement e : tmp) {
                         if (e instanceof AvatarStopState) {
                             //ignore
-                        } else if (e.getNexts().size() == 0) {
+                        } else if (e.getNexts().isEmpty()) {
                             e.addNext(choiceStateEnd);
                             tranChoiceStateEnd.addNext(choiceState);
                             elementList.add(e);
@@ -936,7 +934,7 @@ public class TML2Avatar {
                         if (signalAuthOriginMap.containsKey(ae.getSecurityPattern().getName())) {
                             signalAuthOriginMap.get(ae.getSecurityPattern().getName()).add(authOrigin);
                         } else {
-                            LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>();
+                            LinkedList<AvatarAttributeState> tmp = new LinkedList<>();
                             tmp.add(authOrigin);
                             signalAuthOriginMap.put(ae.getSecurityPattern().getName(), tmp);
                         }
@@ -998,7 +996,7 @@ public class TML2Avatar {
                                 if (signalAuthDestMap.containsKey(ae.getSecurityPattern().getName())) {
                                     signalAuthDestMap.get(ae.getSecurityPattern().getName()).add(authDest);
                                 } else {
-                                    LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>();
+                                    LinkedList<AvatarAttributeState> tmp = new LinkedList<>();
                                     tmp.add(authDest);
                                     signalAuthDestMap.put(ae.getSecurityPattern().getName(), tmp);
                                 }
@@ -1054,7 +1052,7 @@ public class TML2Avatar {
                                 if (signalAuthDestMap.containsKey(ae.getSecurityPattern().getName())) {
                                     signalAuthDestMap.get(ae.getSecurityPattern().getName()).add(authDest);
                                 } else {
-                                    LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>();
+                                    LinkedList<AvatarAttributeState> tmp = new LinkedList<>();
                                     tmp.add(authDest);
                                     signalAuthDestMap.put(ae.getSecurityPattern().getName(), tmp);
                                 }
@@ -1118,7 +1116,7 @@ public class TML2Avatar {
                                 if (signalAuthDestMap.containsKey(ae.getSecurityPattern().getName())) {
                                     signalAuthDestMap.get(ae.getSecurityPattern().getName()).add(authDest);
                                 } else {
-                                    LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>();
+                                    LinkedList<AvatarAttributeState> tmp = new LinkedList<>();
                                     tmp.add(authDest);
                                     signalAuthDestMap.put(ae.getSecurityPattern().getName(), tmp);
                                 }
@@ -1193,7 +1191,7 @@ public class TML2Avatar {
                 }
                 TraceManager.addDev("InMap sig= " + sig.getSignalName());
                 AvatarActionOnSignal as = new AvatarActionOnSignal(ae.getName(), sig, ae.getReferenceObject(), block);
-                AvatarAttribute channelData = null;
+                AvatarAttribute channelData;
                 String action = "";
                 if (ae.getSecurityPattern() != null) {
                     //If nonce
@@ -1213,6 +1211,10 @@ public class TML2Avatar {
                                 block.addAttribute(encryptedKey);
                             }
                             action =  secPatternDecAttribute.get(ae.getSecurityPattern()).getName() + " = " + channelData.getName();
+                        } else {
+                            String attributeName = setNewAttributeName(getName(ch.getName()) + "_chData", block);
+                            channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null);
+                            block.addAttribute(channelData);
                         }
                     } else {
                         //Send the encrypted data
@@ -1225,6 +1227,10 @@ public class TML2Avatar {
                                 block.addAttribute(encrypted);
                             }
                             action = secPatternDecAttribute.get(ae.getSecurityPattern()).getName() + " = " + channelData.getName();
+                        } else {
+                            String attributeName = setNewAttributeName(getName(ch.getName()) + "_chData", block);
+                            channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null);
+                            block.addAttribute(channelData);
                         }
                     }
                 } else {
@@ -1232,9 +1238,8 @@ public class TML2Avatar {
                     channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null);
                     block.addAttribute(channelData);
                 }
-                if (channelData != null) {
-                    as.addValue(channelData.getName());
-                }
+                as.addValue(channelData.getName());
+
                 tran = new AvatarTransition(block, "__after_" + ae.getName(), ae.getReferenceObject());
                 if (!action.isEmpty()) {
                     tran.addAction(action);
@@ -1256,7 +1261,7 @@ public class TML2Avatar {
                     elementList.add(afterSignalState);
                     elementList.add(tran);
                     boolean foundDecrytionOp = false;
-                    List<TMLActivityElement> allNextForAe = new ArrayList<TMLActivityElement>(ae.getNexts());
+                    List<TMLActivityElement> allNextForAe = new ArrayList<>(ae.getNexts());
                     if (ae.getSecurityPattern() != null) {
                         while (!allNextForAe.isEmpty()) {
                             TMLActivityElement nextAe = allNextForAe.get(0);
@@ -1266,7 +1271,7 @@ public class TML2Avatar {
                                     if (((TMLExecC) nextAe).isDecryptionProcess()) {
                                         if (nextAe.getSecurityPattern().equalSpec(ae.getSecurityPattern())) {
                                             if (!channelsSecAttributes.containsKey(nextAe)) {
-                                                Set<String> tmp = new HashSet<String>();
+                                                Set<String> tmp = new HashSet<>();
                                                 channelsSecAttributes.put(nextAe, tmp);
                                             }
                                             channelsSecAttributes.get(nextAe).add(channelData.getName());
@@ -1281,7 +1286,7 @@ public class TML2Avatar {
                     }
                     if (!foundDecrytionOp) {
                         if (!channelsSecAttributes.containsKey(ae)) {
-                            Set<String> tmp = new HashSet<String>();
+                            Set<String> tmp = new HashSet<>();
                             channelsSecAttributes.put(ae, tmp);
                         }
                         channelsSecAttributes.get(ae).add(channelData.getName());
@@ -1297,7 +1302,7 @@ public class TML2Avatar {
                         if (signalAuthDestMap.containsKey(ch.getName())) {
                             signalAuthDestMap.get(ch.getName()).add(authDest);
                         } else {
-                            LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>();
+                            LinkedList<AvatarAttributeState> tmp = new LinkedList<>();
                             tmp.add(authDest);
                             signalAuthDestMap.put(ch.getName(), tmp);
                         }
@@ -1322,7 +1327,7 @@ public class TML2Avatar {
                 }
                 TraceManager.addDev("OutMap sig= " + sig.getSignalName());
 
-                AvatarAttribute channelData = null;
+                AvatarAttribute channelData;
                 AvatarActionOnSignal as = new AvatarActionOnSignal(ae.getName(), sig, ae.getReferenceObject(), block);
 
                 if (ae.getSecurityPattern() != null) {
@@ -1341,6 +1346,10 @@ public class TML2Avatar {
                                 AvatarAttribute encrypted = new AvatarAttribute(secPatternEncAttribute.get(ae.getSecurityPattern()).getName(), AvatarType.INTEGER, block, null);
                                 block.addAttribute(encrypted);
                             }
+                        } else {
+                            String attributeName = setNewAttributeName(getName(ch.getName()) + "_chData", block);
+                            channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null);
+                            block.addAttribute(channelData);
                         }
                     }
                 } else {
@@ -1350,12 +1359,10 @@ public class TML2Avatar {
                     channelData = new AvatarAttribute(attributeName, AvatarType.INTEGER, block, null);
                     block.addAttribute(channelData);
                 }
-                if (channelData != null) {
-                    as.addValue(channelData.getName());
-                }
+                as.addValue(channelData.getName());
                 //Add the confidentiality pragma for this channel data
                 if (ch.checkConf) {
-                    if (ch.originalOriginTasks.size() != 0 && ch.getOriginPort().getName().contains("PORTORIGIN")) {
+                    if (!ch.originalOriginTasks.isEmpty() && ch.getOriginPort().getName().contains("PORTORIGIN")) {
                         //	System.out.println("Channel " + ch.getOriginPort().getName() + " block " + block.getName());
                         for (TMLTask origTask : ch.originalOriginTasks) {
                             AvatarBlock bl = avspec.getBlockWithName(origTask.getName().split("__")[origTask.getName().split("__").length - 1]);
@@ -1366,11 +1373,11 @@ public class TML2Avatar {
                                             new AvatarPragmaSecret("#Confidentiality " + bl.getName() + "." + channelData.getName(),
                                         ch.getReferenceObject(), attr);
                                     if (!secChannelMap.containsKey(ch)) {
-                                        Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                        Set<AvatarPragma> tmp = new HashSet<>();
                                         secChannelMap.put(ch, tmp);
                                     }
                                     if (!confPragmaMap.containsKey((TMLWriteChannel) ae)) {
-                                        Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                        Set<AvatarPragma> tmp = new HashSet<>();
                                         confPragmaMap.put((TMLWriteChannel) ae, tmp);
                                     }
                                     boolean isAvSecretInSet = false;
@@ -1395,11 +1402,11 @@ public class TML2Avatar {
                                     new AvatarPragmaSecret("#Confidentiality " + block.getName() + "." + channelData.getName(),
                                             ch.getReferenceObject(), attr);
                             if (!secChannelMap.containsKey(ch)) {
-                                Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                Set<AvatarPragma> tmp = new HashSet<>();
                                 secChannelMap.put(ch, tmp);
                             }
                             if (!confPragmaMap.containsKey((TMLWriteChannel) ae)) {
-                                Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                Set<AvatarPragma> tmp = new HashSet<>();
                                 confPragmaMap.put((TMLWriteChannel) ae, tmp);
                             }
                             boolean isAvSecretInSet = false;
@@ -1422,7 +1429,7 @@ public class TML2Avatar {
                 // To be removed in case another authenticity pragma is used on the channel
                 // Also, to be duplicated for each send / receive
                 boolean foundEncrytionOp = false;
-                List<TMLActivityElement> allPrevOfAe = new ArrayList<TMLActivityElement>();
+                List<TMLActivityElement> allPrevOfAe = new ArrayList<>();
                 TMLActivity actDiagram = ch.getOriginTask().getActivityDiagram();
                 if (actDiagram.getPrevious(ae) != null) {
                     allPrevOfAe.add(actDiagram.getPrevious(ae));
@@ -1459,7 +1466,7 @@ public class TML2Avatar {
                         if (signalAuthOriginMap.containsKey(ch.getName())) {
                             signalAuthOriginMap.get(ch.getName()).add(authOrigin);
                         } else {
-                            LinkedList<AvatarAttributeState> tmp = new LinkedList<AvatarAttributeState>();
+                            LinkedList<AvatarAttributeState> tmp = new LinkedList<>();
                             tmp.add(authOrigin);
                             signalAuthOriginMap.put(ch.getName(), tmp);
                         }
@@ -1506,7 +1513,7 @@ public class TML2Avatar {
                 //Process elements in loop to remove stop states and empty transitions, and loop back to choice
                 for (AvatarStateMachineElement e : elements) {
                     if (e instanceof AvatarStopState) {
-                    } else if (e.getNexts().size() == 0) {
+                    } else if (e.getNexts().isEmpty()) {
                         if (e instanceof AvatarTransition) {
                             e.addNext(as);
                             elementList.add(e);
@@ -1558,7 +1565,7 @@ public class TML2Avatar {
                 }
                 tran.addAction(AvatarTerm.createActionFromString(block, loop.getIncrement()));
                 tran.addAction(AvatarTerm.createActionFromString(block, "loop_index = loop_index + 1"));
-                if (elements.size() > 0) {
+                if (!elements.isEmpty()) {
                     tran.addNext(elements.get(0));
                     as.addNext(tran);
                     elementList.add(tran);
@@ -1566,7 +1573,7 @@ public class TML2Avatar {
                 //Process elements in loop to remove stop states and empty transitions, and loop back to choice
                 for (AvatarStateMachineElement e : elements) {
                     if (e instanceof AvatarStopState) {
-                    } else if (e.getNexts().size() == 0) {
+                    } else if (e.getNexts().isEmpty()) {
                         e.addNext(as);
                         elementList.add(e);
                     } else if (e.getNext(0) instanceof AvatarStopState) {
@@ -1583,7 +1590,7 @@ public class TML2Avatar {
                 tran = new AvatarTransition(block, "end_loop__" + ae.getName(), ae.getReferenceObject());
                 tran.setGuard(new AvatarGuardElse());
                 as.addNext(tran);
-                if (afterloop.size() == 0) {
+                if (afterloop.isEmpty()) {
                     afterloop.add(new AvatarStopState("stop", null, block));
                 }
                 tran.addNext(afterloop.get(0));
@@ -1601,7 +1608,7 @@ public class TML2Avatar {
                 //tran.setGuard(c.getGuard(i));
                 as.addNext(tran);
                 List<AvatarStateMachineElement> nexts = translateState(ae.getNextElement(i), block);
-                if (nexts.size() > 0) {
+                if (!nexts.isEmpty()) {
                     tran.addNext(nexts.get(0));
                     elementList.add(tran);
                     elementList.addAll(nexts);
@@ -1626,7 +1633,7 @@ public class TML2Avatar {
             TraceManager.addDev("undefined tml element " + ae);
         }
         List<AvatarStateMachineElement> nexts = translateState(ae.getNextElement(0), block);
-        if (nexts.size() == 0) {
+        if (nexts.isEmpty()) {
             //in an infinite loop i hope
             return elementList;
         }
@@ -1635,7 +1642,7 @@ public class TML2Avatar {
         return elementList;
     }
 
-    public String processName(String name, int id) {
+    private String processName(String name, int id) {
         name = reworkStringName(name).replaceAll("-", "_");
         if (allStates.contains(name)) {
             return name + id;
@@ -1700,7 +1707,6 @@ public class TML2Avatar {
                 this.avspec = new AvatarSpecification("spec", null);
             }
         }
-        attrsToCheck.clear();
         tmlmodel.removeForksAndJoins();
 
 //        System.out.println("MODIFIED model " + tmlmodel);
@@ -1731,7 +1737,7 @@ public class TML2Avatar {
         Pattern r = Pattern.compile(pattern);
         Matcher m = r.matcher(_loopLimit);
         if (m.find()) {
-            loopLimit = Integer.valueOf(_loopLimit);
+            loopLimit = Integer.parseInt(_loopLimit);
         }
         for (TMLChannel channel : tmlmodel.getChannels()) {
             TraceManager.addDev("Checking auth of channel " + channel.getName() + ": " + channel.isCheckAuthChannel());
@@ -1893,9 +1899,8 @@ public class TML2Avatar {
                 //Create iteration attribute
                 AvatarAttribute req_loop_index = new AvatarAttribute("req_loop_index", AvatarType.INTEGER, block, null);
                 block.addAttribute(req_loop_index);
-                List<String> reqParams = new ArrayList<String>();
-                for (Object obj : tmlmodel.getRequestsToMe(task)) {
-                    TMLRequest req = (TMLRequest) obj;
+                List<String> reqParams = new ArrayList<>();
+                for (TMLRequest req : tmlmodel.getRequestsToMe(task)) {
                     for (TMLActivityElement  elements : task.getActivityDiagram().getElements()) {
                         if (elements instanceof TMLActionState) {
                             TMLActionState actionsState = (TMLActionState) elements;
@@ -1959,9 +1964,7 @@ public class TML2Avatar {
                     e.setName(processName(e.getName(), e.getID()));
                     stateObjectMap.put(task.getName().split("__")[task.getName().split("__").length-1] + "__" + e.getName(), e.getReferenceObject());
 
-                    if (e instanceof AvatarStopState) {
-                        //ignore it
-                    } else {
+                    if (!(e instanceof AvatarStopState)) {
                         for (int i = 0; i < e.getNexts().size(); i++) {
                             if (e.getNext(i) instanceof AvatarStopState) {
                                 e.removeNext(i);
@@ -1981,8 +1984,7 @@ public class TML2Avatar {
 
 
                 //Add Requests, direct transition to start of state machine
-                for (Object obj : tmlmodel.getRequestsToMe(task)) {
-                    TMLRequest req = (TMLRequest) obj;
+                for (TMLRequest req : tmlmodel.getRequestsToMe(task)) {
                     AvatarTransition incrTran = new AvatarTransition(block, "__after_loopstart__" + req.getName(), task.getActivityDiagram().get(0).getReferenceObject());
                     incrTran.addAction(AvatarTerm.createActionFromString(block, "req_loop_index = req_loop_index + 1"));
                     incrTran.setGuard(AvatarGuard.createFromString(block, "req_loop_index != " + loopLimit));
@@ -2065,7 +2067,7 @@ public class TML2Avatar {
                                 if (wc.hasChannel(ch) && actElem.getSecurityPattern() != null
                                         && actElem.getSecurityPattern().getName().equals(secPattern.getName())) {
                                     if (!secChannelMap.containsKey(ch)) {
-                                        Set<AvatarPragma> tmp0 = new HashSet<AvatarPragma>();
+                                        Set<AvatarPragma> tmp0 = new HashSet<>();
                                         secChannelMap.put(ch, tmp0);
                                     }
                                     boolean isAvSecretInSet = false;
@@ -2080,7 +2082,7 @@ public class TML2Avatar {
                                     }
 
                                     if (!confPragmaMap.containsKey(wc)) {
-                                        Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                        Set<AvatarPragma> tmp = new HashSet<>();
                                         confPragmaMap.put(wc, tmp);
                                     }
                                     confPragmaMap.get(wc).add(secPatternPragmaMap.get(secPattern));
@@ -2103,7 +2105,7 @@ public class TML2Avatar {
                         TMLChannel ch = tmlmodel.getChannelByShortName(s);
                         if (ch != null && ch.checkAuth) {
                             if (!secChannelMap.containsKey(ch)) {
-                                Set<AvatarPragma> tmp0 = new HashSet<AvatarPragma>();
+                                Set<AvatarPragma> tmp0 = new HashSet<>();
                                 secChannelMap.put(ch, tmp0);
                             }
                             boolean isAvSecretInSet = false;
@@ -2124,7 +2126,7 @@ public class TML2Avatar {
                                             if (rd.hasChannel(ch) && channelsSecAttributes.containsKey(actElem) &&
                                                     channelsSecAttributes.get(actElem).contains(attributeStateDest.getAttribute().getName())) {
                                                 if (!authPragmaMap.containsKey(rd)) {
-                                                    Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                                    Set<AvatarPragma> tmp = new HashSet<>();
                                                     authPragmaMap.put(rd, tmp);
                                                 }
                                                 authPragmaMap.get(rd).add(pragma);
@@ -2141,7 +2143,7 @@ public class TML2Avatar {
                                         if (actElem.getSecurityPattern() != null && channelsSecAttributes.containsKey(actElem) &&
                                                 channelsSecAttributes.get(actElem).contains(sec.getName())) {
                                             if (!authPragmaMap.containsKey(actElem)) {
-                                                Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                                Set<AvatarPragma> tmp = new HashSet<>();
                                                 authPragmaMap.put(actElem, tmp);
                                             }
                                             authPragmaMap.get(actElem).add(pragma);
@@ -2153,7 +2155,7 @@ public class TML2Avatar {
                                                 TMLChannel chSec = actCh.getChannel(i);
                                                 if (chSec.checkAuth) {
                                                     if (!secChannelMap.containsKey(chSec)) {
-                                                        Set<AvatarPragma> tmp0 = new HashSet<AvatarPragma>();
+                                                        Set<AvatarPragma> tmp0 = new HashSet<>();
                                                         secChannelMap.put(chSec, tmp0);
                                                     }
                                                     boolean isAvSecretInSet = false;
@@ -2177,7 +2179,7 @@ public class TML2Avatar {
                 }
             }
         }
-        List<AvatarPragma> avPragmas = new ArrayList<AvatarPragma>();
+        List<AvatarPragma> avPragmas = new ArrayList<>();
         for (TMLChannel ch : secChannelMap.keySet()) {
             for (AvatarPragma avPragma : secChannelMap.get(ch)) {
                 boolean isAvSecretInSet = false;
@@ -2193,9 +2195,8 @@ public class TML2Avatar {
             }
         }
         // Put AvatarPragmaAuthenticity pragmas at the end of the list.
-        List<AvatarPragma> avPragmasToMove = new ArrayList<AvatarPragma>();
-        for (int indexAvPragmas=0; indexAvPragmas < avPragmas.size(); indexAvPragmas++){
-            AvatarPragma avPragma = avPragmas.get(indexAvPragmas);
+        List<AvatarPragma> avPragmasToMove = new ArrayList<>();
+        for (AvatarPragma avPragma : avPragmas) {
             if (avPragma instanceof AvatarPragmaAuthenticity) {
                 avPragmasToMove.add(avPragma);
             }
@@ -2332,7 +2333,7 @@ public class TML2Avatar {
                         taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject());
                 LinkedList<HwCommunicationNode> path = tmlmap.findNodesForElement(channel);
                 //TraceManager.addDev("CHAN checking basic channel " + channel.getName() + " path size: " + path.size());
-                if (path.size() != 0) {
+                if (!path.isEmpty()) {
                     ar.setPrivate(true);
                     for (HwCommunicationNode node : path) {
                         //TraceManager.addDev("CHAN\t Element of path: " + node.getName());
@@ -2345,7 +2346,7 @@ public class TML2Avatar {
                         }
                     }
                 } else {
-                    if (channel.originalOriginTasks.size() == 0) {
+                    if (channel.originalOriginTasks.isEmpty()) {
                         ar.setPrivate(originDestMap.get(channel.getOriginTask().getName() + "__" + channel.getDestinationTask().getName()) == 1);
                     } else {
                         //System.out.println("complex channel " + channel.getName());
@@ -2381,64 +2382,27 @@ public class TML2Avatar {
                 }
                 //Find in signal
 
-                List<AvatarSignal> sig1 = new ArrayList<AvatarSignal>();
+                List<AvatarSignal> sig1 = new ArrayList<>();
                 //Sig1 contains IN Signals, Sig2 contains OUT signals
                 sig1.add(signalInMap.get(channel.getName()));
-                List<AvatarSignal> sig2 = new ArrayList<AvatarSignal>();
+                List<AvatarSignal> sig2 = new ArrayList<>();
                 sig2.add(signalOutMap.get(channel.getName()));
-                for (AvatarSignal sig : signals) {
-                    if (sig.getInOut() == AvatarSignal.IN) {
-                        String name = sig.getName();
-                        if (name.equals(getName(channel.getName()))) {
-                            //			sig1.add(sig);
-                        }
-                    }
-                }
                 //Find out signal
-                for (AvatarSignal sig : signals) {
-                    if (sig.getInOut() == AvatarSignal.OUT) {
-                        String name = sig.getName();
-                        if (name.equals(channel.getOriginPort().getName())) {
-                            //				sig2.add(sig);
-                        }
-                    }
-                }
-                //System.out.println("size " + sig1.size() + " " + sig2.size());
-                if (sig1.size() == 0) {
-                    sig1.add(new AvatarSignal(getName(channel.getName()), AvatarSignal.IN, null));
-                }
-                if (sig2.size() == 0) {
-                    sig2.add(new AvatarSignal(getName(channel.getName()), AvatarSignal.OUT, null));
-                }
-                if (sig1.size() == 1 && sig2.size() == 1) {
-                    if (channel.getType() == TMLChannel.NBRNBW && mc) {
-                        AvatarSignal read = fifo.getSignalByName("readSignal");
-
-                        ar.block2 = fifo;
-                        //Set IN signal with read
-                        ar.addSignals(sig1.get(0), read);
-                        AvatarRelation ar2 = new AvatarRelation(channel.getName() + "2", fifo, taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject());
-                        AvatarSignal write = fifo.getSignalByName("writeSignal");
-                        //set OUT signal with write
-                        ar2.addSignals(write, sig2.get(0));
-                        //		System.out.println("Set " + sig2.get(0) + " and write");
-                        ar2.setAsynchronous(false);
-                        avspec.addRelation(ar2);
-                    } else {
-                        ar.addSignals(sig2.get(0), sig1.get(0));
-                    }
+                if (channel.getType() == TMLChannel.NBRNBW && mc) {
+                    AvatarSignal read = fifo.getSignalByName("readSignal");
+
+                    ar.block2 = fifo;
+                    //Set IN signal with read
+                    ar.addSignals(sig1.get(0), read);
+                    AvatarRelation ar2 = new AvatarRelation(channel.getName() + "2", fifo, taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject());
+                    AvatarSignal write = fifo.getSignalByName("writeSignal");
+                    //set OUT signal with write
+                    ar2.addSignals(write, sig2.get(0));
+                    //		System.out.println("Set " + sig2.get(0) + " and write");
+                    ar2.setAsynchronous(false);
+                    avspec.addRelation(ar2);
                 } else {
-                    //Create relation if it does not exist
-                    if (top.getSignalByName(getName(channel.getName()) + "in") == null) {
-                        AvatarRelation relation = new AvatarRelation(channel.getName(), top, top, channel.getReferenceObject());
-                        AvatarSignal s1 = new AvatarSignal(getName(channel.getName()) + "in", AvatarSignal.IN, null);
-                        AvatarSignal s2 = new AvatarSignal(getName(channel.getName()) + "out", AvatarSignal.OUT, null);
-                        top.addSignal(s1);
-                        top.addSignal(s2);
-                        relation.addSignals(s2, s1);
-                        avspec.addRelation(relation);
-                        //	System.out.println("Failure to match signals for TMLChannel "+ channel.getName());
-                    }
+                    ar.addSignals(sig2.get(0), sig1.get(0));
                 }
                 avspec.addRelation(ar);
             } else {
@@ -2456,8 +2420,8 @@ public class TML2Avatar {
                         AvatarRelation ar = new AvatarRelation(channel.getName(), taskBlockMap.get(t1), taskBlockMap.get(t2), channel.getReferenceObject());
                         ar.setPrivate(originDestMap.get(t1.getName() + "__" + t2.getName()) == 1);
                         //Find in signal
-                        List<AvatarSignal> sig1 = new ArrayList<AvatarSignal>();
-                        List<AvatarSignal> sig2 = new ArrayList<AvatarSignal>();
+                        List<AvatarSignal> sig1 = new ArrayList<>();
+                        List<AvatarSignal> sig2 = new ArrayList<>();
                         for (AvatarSignal sig : signals) {
                             if (sig.getInOut() == AvatarSignal.IN) {
                                 String name = sig.getName();
@@ -2475,16 +2439,16 @@ public class TML2Avatar {
                                 }
                             }
                         }
-                        if (sig1.size() == 0) {
+                        if (sig1.isEmpty()) {
                             sig1.add(new AvatarSignal(getName(channel.getName()), AvatarSignal.IN, null));
                         }
-                        if (sig2.size() == 0) {
+                        if (sig2.isEmpty()) {
                             sig2.add(new AvatarSignal(getName(channel.getName()), AvatarSignal.OUT, null));
                         }
                         if (sig1.size() == 1 && sig2.size() == 1) {
                             ar.addSignals(sig2.get(0), sig1.get(0));
                         } else {
-                            System.out.println("Failure to match signals for TMLChannel " + channel.getName() + " between " + t1.getName() + " and " + t2.getName());
+                            TraceManager.addDev("Failure to match signals for TMLChannel " + channel.getName() + " between " + t1.getName() + " and " + t2.getName());
                         }
                         avspec.addRelation(ar);
                     }
@@ -2495,8 +2459,8 @@ public class TML2Avatar {
             for (TMLTask t1 : request.getOriginTasks()) {
                 AvatarRelation ar = new AvatarRelation(request.getName(), taskBlockMap.get(t1), taskBlockMap.get(request.getDestinationTask()), request.getReferenceObject());
                 ar.setPrivate(originDestMap.get(t1.getName() + "__" + request.getDestinationTask().getName()) == 1);
-                List<AvatarSignal> sig1 = new ArrayList<AvatarSignal>();
-                List<AvatarSignal> sig2 = new ArrayList<AvatarSignal>();
+                List<AvatarSignal> sig1 = new ArrayList<>();
+                List<AvatarSignal> sig2 = new ArrayList<>();
                 for (AvatarSignal sig : signals) {
                     if (sig.getInOut() == AvatarSignal.IN) {
                         String name = sig.getName();
@@ -2516,17 +2480,17 @@ public class TML2Avatar {
                         }
                     }
                 }
-                if (sig1.size() == 0) {
+                if (sig1.isEmpty()) {
                     sig1.add(new AvatarSignal(getName(request.getName()), AvatarSignal.IN, null));
                 }
-                if (sig2.size() == 0) {
+                if (sig2.isEmpty()) {
                     sig2.add(new AvatarSignal(getName(request.getName()), AvatarSignal.OUT, null));
                 }
                 if (sig1.size() == 1 && sig2.size() == 1) {
                     ar.addSignals(sig2.get(0), sig1.get(0));
                 } else {
                     //Throw error
-                    System.out.println("Could not match for " + request.getName());
+                    TraceManager.addDev("Could not match for " + request.getName());
                 }
 
                 ar.setAsynchronous(false);
@@ -2565,7 +2529,7 @@ public class TML2Avatar {
             //check that all signals are put in relations
             AvatarRelation ar = avspec.getAvatarRelationWithSignal(sig);
             if (ar == null) {
-                System.out.println("missing relation for " + sig.getName());
+                TraceManager.addDev("missing relation for " + sig.getName());
             }
         }
         //Check if we matched up all signals
@@ -2585,7 +2549,7 @@ public class TML2Avatar {
                     AvatarBlock b = taskBlockMap.get(taskPattern);
                     AvatarAttribute attrib = b.getAvatarAttributeWithName("key_" + sp.getName());
                     if (attrib != null) {
-                        LinkedList<AvatarAttribute> arguments = new LinkedList<AvatarAttribute>();
+                        LinkedList<AvatarAttribute> arguments = new LinkedList<>();
                         arguments.add(attrib);
                         avspec.addPragma(new AvatarPragmaPublic("#Public " + b.getName() + "." + attrib.getName(), null, arguments));
                     }
@@ -2593,9 +2557,9 @@ public class TML2Avatar {
             }
         }
         for (SecurityPattern sp : pubKeys.keySet()) {
-            if (pubKeys.get(sp).size() != 0) {
+            if (!pubKeys.get(sp).isEmpty()) {
                 String keys = "";
-                List<String> pubKeyNames = new ArrayList<String>();
+                List<String> pubKeyNames = new ArrayList<>();
                 for (AvatarAttribute key : pubKeys.get(sp)) {
                     if (!pubKeyNames.contains(key.getBlock().getName() + "." + key.getName())) {
                         keys = keys + " " + key.getBlock().getName() + "." + key.getName();
@@ -2639,7 +2603,7 @@ public class TML2Avatar {
         }
     }
 
-    public void distributeKeys() {
+    private void distributeKeys() {
         List<TMLTask> tasks = tmlmap.getTMLModeling().getTasks();
         for (TMLTask t : accessKeys.keySet()) {
             AvatarBlock b = taskBlockMap.get(t);
@@ -2649,7 +2613,7 @@ public class TML2Avatar {
                     if (symKeys.containsKey(sp)) {
                         symKeys.get(sp).add(key);
                     } else {
-                        LinkedList<AvatarAttribute> tmp = new LinkedList<AvatarAttribute>();
+                        LinkedList<AvatarAttribute> tmp = new LinkedList<>();
                         tmp.add(key);
                         symKeys.put(sp, tmp);
                     }
@@ -2665,7 +2629,7 @@ public class TML2Avatar {
                     if (pubKeys.containsKey(sp)) {
                         pubKeys.get(sp).add(pubkey);
                     } else {
-                        LinkedList<AvatarAttribute> tmp = new LinkedList<AvatarAttribute>();
+                        LinkedList<AvatarAttribute> tmp = new LinkedList<>();
                         tmp.add(pubkey);
                         pubKeys.put(sp, tmp);
                     }
@@ -2684,7 +2648,7 @@ public class TML2Avatar {
 
     }
 
-    public AvatarBlock createFifo(String name) {
+    private AvatarBlock createFifo(String name) {
         AvatarBlock fifo = new AvatarBlock("FIFO__FIFO" + name, avspec, null);
         AvatarState root = new AvatarState("root", null, fifo, false, false);
         AvatarSignal read = new AvatarSignal("readSignal", AvatarSignal.IN, null);
@@ -2731,12 +2695,7 @@ public class TML2Avatar {
         return fifo;
     }
 
-
-    public AvatarSpecification convertToSecurityType(AvatarSpecification spec) {
-        return spec;
-    }
-
-    public AvatarType getAvatarType(TMLType p) {
+    private AvatarType getAvatarType(TMLType p) {
         switch (p.getType()) {
             case TMLType.NATURAL:
                 return AvatarType.INTEGER;
@@ -2746,7 +2705,7 @@ public class TML2Avatar {
         return AvatarType.UNDEFINED;
     }
 
-    public String getNameReworked(String name, int index) {
+    private String getNameReworked(String name, int index) {
         String[] split = name.split("__");
         if (split.length > index) {
             return split[index];