diff --git a/src/main/java/tmltranslator/TMLActivityElement.java b/src/main/java/tmltranslator/TMLActivityElement.java
index d067adb925c69e6e0204b8f01ecb8d9fd166e6c6..d424e012436e0ad98ee0ffc3581e4f8d8d38f748 100755
--- a/src/main/java/tmltranslator/TMLActivityElement.java
+++ b/src/main/java/tmltranslator/TMLActivityElement.java
@@ -54,7 +54,10 @@ import java.util.Vector;
 public abstract class TMLActivityElement extends TMLElement {
     protected Vector<TMLActivityElement> nexts;
     public SecurityPattern securityPattern;
-    private String value="";
+    private String value = "";
+    private boolean canBeCheckedForAccessibility = false;
+    private boolean accessibility = false;
+
     
     public TMLActivityElement(String _name, Object _referenceObject) {
         super(_name, _referenceObject);
@@ -153,4 +156,19 @@ public abstract class TMLActivityElement extends TMLElement {
         return Objects.equals(value,tmlActEtls.getValue()) &&
                 comp.isTMLActivityEltListEquals(nexts,tmlActEtls.getNexts());
     }
+
+    public void setCheckableAccessibility(boolean b) {
+        canBeCheckedForAccessibility = b;
+    }
+    public boolean hasCheckableAccessibility() {
+        return canBeCheckedForAccessibility;
+    }
+
+    public void setCheckAccessibility(boolean b) {
+         accessibility = b;
+    }
+
+    public boolean hasCheckedAccessibility() {
+        return accessibility;
+    }
 }
diff --git a/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java b/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java
index 8bd1450be9dbdddf3c91c7b3c5eb7f9fdbab0a6f..03eca06892bd8f45bdda72167a5f17745a86a05f 100644
--- a/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java
+++ b/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java
@@ -40,8 +40,7 @@ package tmltranslator.toavatar;
 import avatartranslator.*;
 import myutil.TraceManager;
 import tmltranslator.*;
-import ui.TGComponent;
-//import ui.tmlcompd.TMLCPrimitivePort;
+//import ui.TGComponent;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -94,8 +93,11 @@ public class FullTML2Avatar {
     boolean mc = true;
     boolean security = false;
 
-    public FullTML2Avatar(TMLModeling<?> tmlmodel) {
+    private Object referenceObject;
+
+    public FullTML2Avatar(TMLModeling<?> tmlmodel, Object _referenceObject) {
         this.tmlmodel = tmlmodel;
+        referenceObject = _referenceObject;
 
         allStates = new ArrayList<String>();
         attrsToCheck = new ArrayList<String>();
@@ -110,7 +112,7 @@ public class FullTML2Avatar {
         //TODO: Put back numeric guards
         //TODO: Calculate for temp variable
         if (tmlmodel.getReference() != null) {
-            this.avspec = new AvatarSpecification("spec", ((TGComponent)((tmlmodel.getReference()))).getTDiagramPanel().tp);
+            this.avspec = new AvatarSpecification("spec", referenceObject);
         } else {
             this.avspec = new AvatarSpecification("spec", null);
         }
@@ -866,14 +868,9 @@ public class FullTML2Avatar {
             TMLRequest req = sr.getRequest();
             AvatarSignal sig;
 
-            boolean checkAcc = false;
-            if (ae.getReferenceObject() != null) {
-                checkAcc = ((TGComponent) ae.getReferenceObject()).getCheckableAccessibility();
-            }
-            boolean checked = false;
-            if (ae.getReferenceObject() != null) {
-                checked = ((TGComponent) ae.getReferenceObject()).hasCheckedAccessibility();
-            }
+
+            boolean checkAcc = ae.hasCheckableAccessibility();
+            boolean checked =  ae.hasCheckedAccessibility();
             AvatarState signalState =
                     new AvatarState("signalstate_" + reworkStringName(ae.getName()) + "_" + reworkStringName(req.getName()),
                     ae.getReferenceObject(), block, checkAcc, checked);
@@ -1066,14 +1063,9 @@ public class FullTML2Avatar {
         } else if (ae instanceof TMLActivityElementEvent) {
             TMLActivityElementEvent aee = (TMLActivityElementEvent) ae;
             TMLEvent evt = aee.getEvent();
-            boolean checkAcc = false;
-            if (ae.getReferenceObject() != null) {
-                checkAcc = ((TGComponent) ae.getReferenceObject()).getCheckableAccessibility();
-            }
-            boolean checked = false;
-            if (ae.getReferenceObject() != null) {
-                checked = ((TGComponent) ae.getReferenceObject()).hasCheckedAccessibility();
-            }
+
+            boolean checkAcc = ae.hasCheckableAccessibility();
+            boolean checked =  ae.hasCheckedAccessibility();
             AvatarState signalState = new AvatarState("signalstate_" + reworkStringName(ae.getName() + "_" + evt.getName()),
                     ae.getReferenceObject(), block, checkAcc, checked);
             AvatarTransition signalTran = new AvatarTransition(block, "__after_signalstate_" + ae.getName() + "_" + evt.getName(), ae.getReferenceObject());
@@ -1598,15 +1590,8 @@ public class FullTML2Avatar {
 
             //String nv = getName(ch.getName()) + "_chData";
 
-
-            boolean checkAcc = false;
-            if (ae.getReferenceObject() != null) {
-                checkAcc = ((TGComponent) ae.getReferenceObject()).getCheckableAccessibility();
-            }
-            boolean checked = false;
-            if (ae.getReferenceObject() != null) {
-                checked = ((TGComponent) ae.getReferenceObject()).hasCheckedAccessibility();
-            }
+            boolean checkAcc = ae.hasCheckableAccessibility();
+            boolean checked =  ae.hasCheckedAccessibility();
             AvatarState signalState = new AvatarState("signalstate_" + reworkStringName(ae.getName() + "_" + ch.getName()),
                     ae.getReferenceObject(), block, checkAcc, checked);
             AvatarTransition signalTran = new AvatarTransition(block, "__after_signalstate_" + ae.getName() + "_" + ch.getName(), ae.getReferenceObject());
diff --git a/src/main/java/ui/ActivityDiagram2TMLTranslator.java b/src/main/java/ui/ActivityDiagram2TMLTranslator.java
index 4bdec9e3399abe4e1ca2329cdcb7cc93a66cd089..33d77df48c7e692a145803649b649ccd4ece21a5 100644
--- a/src/main/java/ui/ActivityDiagram2TMLTranslator.java
+++ b/src/main/java/ui/ActivityDiagram2TMLTranslator.java
@@ -126,7 +126,7 @@ public class ActivityDiagram2TMLTranslator {
                     tmp = ((TMLADActionState) (tgc)).getAction();
                     tmp = modifyActionString(tmp);
                     tmlaction.setAction(tmp);
-                    activity.addElement(tmlaction);
+                    addElement(activity, tmlaction, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlaction, tgc);
 
@@ -143,20 +143,20 @@ public class ActivityDiagram2TMLTranslator {
                     tmp = modifyActionString(tmp);
                     tmlrandom.setMaxValue(tmp);
                     tmlrandom.setFunctionId(tmladrandom.getFunctionId());
-                    activity.addElement(tmlrandom);
+                    addElement(activity, tmlrandom, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlrandom, tgc);
 
                 } else if (tgc instanceof TMLADChoice) {
                     tmlchoice = new TMLChoice("choice", tgc);
                     // Guards are added at the same time as next activities
-                    activity.addElement(tmlchoice);
+                    addElement(activity, tmlchoice, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlchoice, tgc);
 
                 } else if (tgc instanceof TMLADSelectEvt) {
                     tmlselectevt = new TMLSelectEvt("select", tgc);
-                    activity.addElement(tmlselectevt);
+                    addElement(activity, tmlselectevt, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlselectevt, tgc);
 
@@ -169,7 +169,7 @@ public class ActivityDiagram2TMLTranslator {
                         tmlexeci.setAction("0");
                         tmlexeci.setValue("0");
                     }
-                    activity.addElement(tmlexeci);
+                    addElement(activity, tmlexeci, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlexeci, tgc);
 
@@ -183,13 +183,13 @@ public class ActivityDiagram2TMLTranslator {
                         tmlexecii.setMinDelay("0");
                         tmlexecii.setMaxDelay("0");
                     }
-                    activity.addElement(tmlexecii);
+                    addElement(activity, tmlexecii, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlexecii, tgc);
 
                 } else if (tgc instanceof TMLADEncrypt) {
                     tmlexecc = new TMLExecC("encrypt_" + ((TMLADEncrypt) tgc).securityContext, tgc);
-                    activity.addElement(tmlexecc);
+                    addElement(activity, tmlexecc, tgc);
                     SecurityPattern sp = securityPatterns.get(((TMLADEncrypt) tgc).securityContext);
                     if (sp == null) {
                         //Throw error for missing security pattern
@@ -207,7 +207,7 @@ public class ActivityDiagram2TMLTranslator {
                     }
                 } else if (tgc instanceof TMLADDecrypt) {
                     tmlexecc = new TMLExecC("decrypt_" + ((TMLADDecrypt) tgc).securityContext, tgc);
-                    activity.addElement(tmlexecc);
+                    addElement(activity, tmlexecc, tgc);
                     SecurityPattern sp = securityPatterns.get(((TMLADDecrypt) tgc).securityContext);
                     if (sp == null) {
                         //Throw error for missing security pattern
@@ -234,7 +234,7 @@ public class ActivityDiagram2TMLTranslator {
                         tmlexecc.setAction("0");
                     }
 
-                    activity.addElement(tmlexecc);
+                    addElement(activity, tmlexecc, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlexecc, tgc);
 
@@ -247,7 +247,7 @@ public class ActivityDiagram2TMLTranslator {
                         tmlexecci.setMinDelay("0");
                         tmlexecci.setMaxDelay("0");
                     }
-                    activity.addElement(tmlexecci);
+                    addElement(activity, tmlexecci, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlexecci, tgc);
 
@@ -262,7 +262,7 @@ public class ActivityDiagram2TMLTranslator {
                     }
                     tmldelay.setUnit(((TMLADDelay) tgc).getUnit());
                     tmldelay.setActiveDelay(((TMLADDelay) tgc).getActiveDelayEnable());
-                    activity.addElement(tmldelay);
+                    addElement(activity, tmldelay, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmldelay, tgc);
 
@@ -277,7 +277,7 @@ public class ActivityDiagram2TMLTranslator {
                     }
                     tmldelay.setUnit(((TMLADDelayInterval) tgc).getUnit());
                     tmldelay.setActiveDelay(((TMLADDelayInterval) tgc).getActiveDelayEnableValue());
-                    activity.addElement(tmldelay);
+                    addElement(activity, tmldelay, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmldelay, tgc);
 
@@ -291,7 +291,7 @@ public class ActivityDiagram2TMLTranslator {
                     tmlforloop.setCondition(modifyString(tmp));
                     tmlforloop.setIncrement(modifyActionString(((TMLADForLoop) tgc).getIncrement()));
 
-                    activity.addElement(tmlforloop);
+                    addElement(activity, tmlforloop, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlforloop, tgc);
 
@@ -305,7 +305,7 @@ public class ActivityDiagram2TMLTranslator {
                     tmlforloop.setInit(sl + " = 0");
                     tmlforloop.setCondition(sl + "<" + modifyString(tgc.getValue()));
                     tmlforloop.setIncrement(sl + " = " + sl + " + 1");
-                    activity.addElement(tmlforloop);
+                    addElement(activity, tmlforloop, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlforloop, tgc);
                     staticLoopIndex++;
@@ -321,23 +321,23 @@ public class ActivityDiagram2TMLTranslator {
                     tmlforloop.setCondition("");
                     tmlforloop.setIncrement("");
                     tmlforloop.setInfinite(true);
-                    activity.addElement(tmlforloop);
+                    addElement(activity, tmlforloop, tgc);
                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                     corrTgElement.addCor(tmlforloop, tgc);
                     staticLoopIndex++;
 
                     tmlstopstate = new TMLStopState("Stop after infinite loop", null);
-                    activity.addElement(tmlstopstate);
+                    addElement(activity, tmlstopstate, tgc);
                     tmlforloop.addNext(tmlstopstate);
 
                 } else if (tgc instanceof TMLADSequence) {
                     tmlsequence = new TMLSequence("seq", tgc);
-                    activity.addElement(tmlsequence);
+                    addElement(activity, tmlsequence, tgc);
                     corrTgElement.addCor(tmlsequence, tgc);
 
                 } else if (tgc instanceof TMLADUnorderedSequence) {
                     tmlrsequence = new TMLRandomSequence("rseq", tgc);
-                    activity.addElement(tmlrsequence);
+                    addElement(activity, tmlrsequence, tgc);
                     corrTgElement.addCor(tmlrsequence, tgc);
 
                 } else if (tgc instanceof TMLADReadChannel) {
@@ -412,6 +412,7 @@ public class ActivityDiagram2TMLTranslator {
                                 tmlreadchannel.setAttacker(true);
                             }
                             activity.addElement(tmlreadchannel);
+                            addElement(activity, tmlreadchannel, tgc);
                             ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                             corrTgElement.addCor(tmlreadchannel, tgc);
                         }
@@ -466,7 +467,7 @@ public class ActivityDiagram2TMLTranslator {
 								checkingErrors.add(ce);
 								((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.UNKNOWN);
 							} else {
-								activity.addElement(tmlsendevent);
+                                addElement(activity, tmlsendevent, tgc);
 								corrTgElement.addCor(tmlsendevent, tgc);
 								((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
 							}
@@ -524,7 +525,7 @@ public class ActivityDiagram2TMLTranslator {
 								checkingErrors.add(ce);
 								((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.UNKNOWN);
 							} else {
-								activity.addElement(tmlsendrequest);
+                                addElement(activity, tmlsendrequest, tgc);
 								corrTgElement.addCor(tmlsendrequest, tgc);
 								((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
 							}
@@ -592,7 +593,7 @@ public class ActivityDiagram2TMLTranslator {
 
                 } else if (tgc instanceof TMLADStopState) {
                     tmlstopstate = new TMLStopState("stop state", tgc);
-                    activity.addElement(tmlstopstate);
+                    addElement(activity, tmlstopstate, tgc);
                     corrTgElement.addCor(tmlstopstate, tgc);
 
                 } else if (tgc instanceof TMLADNotifiedEvent) {
@@ -655,7 +656,7 @@ public class ActivityDiagram2TMLTranslator {
 
 
                                     tmlnotifiedevent.setVariable(modifyString(((TMLADNotifiedEvent) tgc).getVariable()));
-                                    activity.addElement(tmlnotifiedevent);
+                                    addElement(activity, tmlnotifiedevent, tgc);
                                     ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                                     corrTgElement.addCor(tmlnotifiedevent, tgc);
                                 }
@@ -723,7 +724,7 @@ public class ActivityDiagram2TMLTranslator {
                                 checkingErrors.add(ce);
                                 ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.UNKNOWN);
                             } else {
-                                activity.addElement(tmlwaitevent);
+                                addElement(activity, tmlwaitevent, tgc);
                                 corrTgElement.addCor(tmlwaitevent, tgc);
                                 ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                             }
@@ -815,7 +816,7 @@ public class ActivityDiagram2TMLTranslator {
                             if (tmltask.isAttacker()) {
                                 tmlwritechannel.setAttacker(true);
                             }
-                            activity.addElement(tmlwritechannel);
+                            addElement(activity, tmlwritechannel, tgc);
                             ((BasicErrorHighlight) tgc).setStateAction(ErrorHighlight.OK);
                             corrTgElement.addCor(tmlwritechannel, tgc);
                         }
@@ -1006,6 +1007,14 @@ public class ActivityDiagram2TMLTranslator {
         //TraceManager.addDev("Activity:" + tmltask.getActivityDiagram().toXML() );
     }
 
+    private void addElement(TMLActivity _activity, TMLActivityElement _elt, TGComponent _ref) {
+        _activity.addElement(_elt);
+        if (_ref != null) {
+            _elt.setCheckableAccessibility(_ref.hasCheckableAccessibility());
+            _elt.setCheckAccessibility(_ref.hasCheckedAccessibility());
+        }
+    }
+
     private String modifyActionString(String _input) {
         int index = _input.indexOf("++");
         boolean b1, b2;
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index fd6b39b810008fd60c29f41d2ada9699c6aa4a41..ca58f4afceb943c0249ccd9cabbbe33066ee06ab 100644
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -2210,7 +2210,11 @@ public class GTURTLEModeling {
         }*/
 
 
-        FullTML2Avatar t2a = new FullTML2Avatar(tmlm);
+        Object o = null;
+        if (tmlm.getReference() instanceof TGComponent) {
+            o = ((TGComponent)(tmlm.getReference())).getTDiagramPanel().tp;
+        }
+        FullTML2Avatar t2a = new FullTML2Avatar(tmlm, o);
         TraceManager.addDev("Avatar spec generation");
         avatarspec = t2a.generateAvatarSpec("1");
         TraceManager.addDev("Avatar spec generated");