diff --git a/src/main/java/avatartranslator/AvatarDataType.java b/src/main/java/avatartranslator/AvatarDataType.java
index 96445b9ab236c4bdf6eb5304d19cfc4d96edb552..b44734eec0c02f8253d9056013de0c7aceab3d5f 100644
--- a/src/main/java/avatartranslator/AvatarDataType.java
+++ b/src/main/java/avatartranslator/AvatarDataType.java
@@ -79,6 +79,7 @@ public class AvatarDataType extends AvatarElement implements NameChecker.NameSta
             }
             AvatarDataType fieldDataType = as.getDataTypeByName(adt.getDataTypeName(i));
             if (fieldDataType == null)  return; // ERROR CASE
+            adt.getAttribute(i).setDataType(fieldDataType);
             finalize(fieldDataType, as); // loops if recursion => recursive types are forbidden
             int fieldSize = fieldDataType.getFullSize();
             if (fieldSize == -1)  return;  // ERROR CASE
diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
index 793c42201c33459014f9adfdeb0eb6513fa5da2d..a8f718e1b17c64c52b0059888363df924adef710 100644
--- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
@@ -204,10 +204,6 @@ public class Avatar2SysML {
         else
             return null;
     }
-    String removeFieldName(AvatarAttribute aa) {
-        if (aa.getDataType() == null) return null;
-        return removeFieldName(aa.getName(), aa.getIndexInDataType(), aa.getDataType());
-    }
     void dataTypes2SysML(){
         if (avspec.getDataTypes() == null || avspec.getDataTypes().size() == 0) return;
         avsysml.append("\n" + indent + "// DATATYPES $$$$$$$$$$$$$$$$$$$$$$$$\n");
@@ -425,21 +421,22 @@ public class Avatar2SysML {
         }
         else {
             returnDataType = returns.get(0).getDataType();
-            if (returnDataType == null) {
-                String avatarType = returns.get(0).getType().getStringType();
-                if (avatarType.equals("int")) {
-                    returnType = "Integer";
-                    methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.INTEGER, null);
-                } else {
+            if (returns.get(0).isDataType()) {
+                returnType = dataTypeSysMLname(returns.get(0).getDataType().getName());
+                methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.UNDEFINED, returnDataType);
+
+            }
+            else if (returns.get(0).isBool()) {
                     returnType = "Boolean";
                     methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.BOOLEAN, null);
-                }
-            } else {
-                returnType = dataTypeSysMLname(returnDataType.getName());
-                methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.UNDEFINED, returnDataType);
+            } else if (returns.get(0).isInt()) {
+                    returnType = "Integer";
+                    methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.INTEGER, null);
+            } else { // ERROR : TIMER, should not happen
+                    returnType = "Integer";
+                    methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.INTEGER, null);
             }
         }
-
         if (returnType == null)
             avsysml.append(indent + "action " + methodSysMLname(am.getName()) +  ": '#AvatarVoidMethod' {\n");
         else
@@ -447,24 +444,22 @@ public class Avatar2SysML {
         indent += indentStep;
 
         int j = 0;
-        int nbFields = am.getListOfAttributes().size();
+        int nbFields = am.getListOfOriginalAttributes().size();
         while (j < nbFields) {
-            AvatarAttribute aa = am.getListOfAttributes().get(j);
-            AvatarDataType fieldDataType = aa.getDataType();
-            if (fieldDataType == null || aa.getIndexInDataType() != 0) {
-                if (aa.isInt()) {
-                    avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Integer;\n");
-                    methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.INTEGER, null);
-                } else {
-                    avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Boolean;\n");
-                    methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.BOOLEAN, null);
-                }
-                j++;
-            } else {
-                avsysml.append(indent + "attribute " + fieldSysMLname(removeFieldName(aa))
-                        + " : " + dataTypeSysMLname(fieldDataType.getName())+ ";\n");
-                methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.UNDEFINED, fieldDataType);
-                j += fieldDataType.getFullSize();
+            AvatarAttribute aa = am.getListOfOriginalAttributes().get(j);
+            if (aa.isDataType()) {
+                avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName())
+                        + " : " + dataTypeSysMLname(aa.getDataType().getName())+ ";\n");
+                methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.UNDEFINED, aa.getDataType());
+            } else if (aa.isInt()) {
+                avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Integer;\n");
+                methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.INTEGER, null);
+            } else if (aa.isBool()){
+                avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Boolean;\n");
+                methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.BOOLEAN, null);
+            } else { // ERROR should not happen
+                avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Integer;\n");
+                methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.INTEGER, null);
             }
         }
         if (returnType != null)
@@ -494,28 +489,27 @@ public class Avatar2SysML {
         if (block.getAttributes() != null && block.getAttributes().size() != 0) {
             avsysml.append("\n" + indent + "// Attributes ---------------------\n");
             int j = 0;
-            int nbAttributes = block.getAttributes().size();
+            int nbAttributes = block.getOriginalAttributes().size();
             while(j < nbAttributes)  {
-                AvatarAttribute aa = block.getAttributes().get(j);
-                if (aa.isTimer()) {
-                    timerList.add(aa);
-                    j++;
+                AvatarAttribute aa = block.getOriginalAttributes().get(j);
+                if (aa.isDataType()) {
+                    avsysml.append(indent + "attribute " + attributeSysMLname(aa.getName()) +
+                            " : " + dataTypeSysMLname(aa.getDataType().getName()) + ";\n");
                 }
-                else {
-                    AvatarDataType dataType = aa.getDataType();
-                    if (dataType == null || aa.getIndexInDataType() != 0) {
-                        avsysml.append(indent + "attribute " + attributeSysMLname(aa.getName()) + " : ");
-                        if (aa.isInt()) avsysml.append("Integer");
-                        else avsysml.append("Boolean");
-                        if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim());
-                        avsysml.append(";\n");
-                        j++;
-                    } else {
-                        avsysml.append(indent + "attribute " + attributeSysMLname(removeFieldName(aa)) +
-                                " : " + dataTypeSysMLname(dataType.getName()) + ";\n");
-                        j += dataType.getFullSize();
-                    }
+                else if (aa.isInt()) {
+                    avsysml.append(indent + "attribute " + attributeSysMLname(aa.getName()) + " : Integer");
+                    if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim());
+                    avsysml.append(";\n");
                 }
+                else if (aa.isBool()) {
+                    avsysml.append(indent + "attribute " + attributeSysMLname(aa.getName()) + " : Boolean");
+                    if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim());
+                    avsysml.append(";\n");
+                }
+                else if (aa.isTimer()) {
+                    timerList.add(aa);
+                } else {} // ERROR, should not happen
+                j++;
             }
         }
         // constants --------------------
@@ -524,20 +518,23 @@ public class Avatar2SysML {
             int j = 0;
             int nbConstants = block.getConstants().size();
             while(j < nbConstants)  {
-                AvatarAttribute cs = block.getConstants().get(j);
-                AvatarDataType dataType = cs.getDataType();
-                if (dataType == null || cs.getIndexInDataType() != 0) {
-                    avsysml.append(indent + "readonly attribute " + attributeSysMLname(cs.getName()) + " : ");
-                    if (cs.isInt()) avsysml.append("Integer");
-                    else avsysml.append("Boolean");
-                    if (cs.hasInitialValue()) avsysml.append(" := " + cs.getInitialValue().trim());
+                AvatarAttribute aa = block.getOriginalAttributes().get(j);
+                if (aa.isDataType()) {
+                    avsysml.append(indent + "readolny attribute " + attributeSysMLname(aa.getName()) +
+                            " : " + dataTypeSysMLname(aa.getDataType().getName()) + ";\n");
+                }
+                else if (aa.isInt()) {
+                    avsysml.append(indent + "readolny attribute " + attributeSysMLname(aa.getName()) + " : Integer");
+                    if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim());
                     avsysml.append(";\n");
-                    j++;
-                } else {
-                    avsysml.append(indent + "readonly attribute " + attributeSysMLname(removeFieldName(cs)) +
-                            " : " + dataTypeSysMLname(dataType.getName()) + ";\n");
-                    j += dataType.getFullSize();
                 }
+                else if (aa.isBool()) {
+                    avsysml.append(indent + "readolny attribute " + attributeSysMLname(aa.getName()) + " : Boolean");
+                    if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim());
+                    avsysml.append(";\n");
+                }
+                else {} // ERROR, should not happen
+                j++;
             }
         }
         // methods --------------------
@@ -661,7 +658,9 @@ public class Avatar2SysML {
             avsysml.append(indent + "'@state_action'  = '#Assignment'(\n");
             indent += indentStep;
             avsysml.append(indent + "'@target' = " + attributeSysMLname(((AvatarRandom)asme).getVariable()) + ",\n");
-            avsysml.append(indent + "'@value' = '#bound_random'(" + expr2SysML(((AvatarRandom)asme).getMinValue()) + ", " + expr2SysML(((AvatarRandom)asme).getMaxValue()) +")\n");
+            avsysml.append(indent + "'@value' = '#bound_random'(" +
+                    expr2SysML(((AvatarRandom)asme).getMinValue().replaceAll("__",".")) + ", " +
+                    expr2SysML(((AvatarRandom)asme).getMaxValue().replaceAll("__",".")) +")\n");
             indent = indent.substring(indentStepSize);
             avsysml.append(indent + ")\n");
             indent = indent.substring(indentStepSize);
@@ -751,7 +750,7 @@ public class Avatar2SysML {
                     indent += indentStep;
                     avsysml.append(indent + "'@request' =\n");
                     indent += indentStep;
-                    avsysml.append(sendRequest2SysML(1, "0", "0", signalinfo, ((AvatarActionOnSignal)aos).getValues()) + "\n");
+                    avsysml.append(sendRequest2SysML(1, "0", "0", signalinfo, ((AvatarActionOnSignal)aos).getOriginalValues()) + "\n");
                     indent = indent.substring(2 * indentStepSize);
                     avsysml.append(indent + ");\n");
                     // its transition
@@ -769,7 +768,7 @@ public class Avatar2SysML {
                     // its transition
                     avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n");
                     indent += indentStep;
-                    String doAction = receiveActions2SysML(signalinfo, ((AvatarActionOnSignal)aos).getValues());
+                    String doAction = receiveActions2SysML(signalinfo, ((AvatarActionOnSignal)aos).getOriginalValues());
                     if (doAction.length() == 0)
                         avsysml.append(indent + "then " + stateinfo.getName() +
                                 endTransition(0,"","", 1));
@@ -913,41 +912,41 @@ public class Avatar2SysML {
 
         // computing request
         if (guarded) {
-            sysMLrequests.append(indent + "if " + expr2SysML(((AvatarTransition)at).getGuard().toString()) + " ?\n");
+            sysMLrequests.append(indent + "if " + expr2SysML(((AvatarTransition)at).getOriginalGuard()) + " ?\n");
             indent += indentStep;
         }
-        String minDelay = ( at.getMinDelay().length()==0 ? "0" : at.getMinDelay().toString() );
-        String maxDelay = ( at.getMaxDelay().length()==0 ? "0" : at.getMaxDelay().toString() );
+        String minDelay = ( at.getOriginalMinDelay().length()==0 ? "0" : expr2SysML(at.getOriginalMinDelay()) );
+        String maxDelay = ( at.getOriginalMaxDelay().length()==0 ? "0" : expr2SysML(at.getOriginalMaxDelay()) );
         if(requestType == 0) // Trivial
             sysMLrequests.append(trivialRequest2SysML(transindex,
-                    expr2SysML(minDelay),
-                    expr2SysML(maxDelay)));
+                    minDelay,
+                    maxDelay));
         else if (requestType == 1) // Send
             sysMLrequests.append(sendRequest2SysML(transindex,
-                    expr2SysML(minDelay),
-                    expr2SysML(maxDelay),
+                    minDelay,
+                    maxDelay,
                      methodMap.get(((AvatarActionOnSignal)target).getSignal()),
                     ((AvatarActionOnSignal)target).getValues()));
         else if (requestType == 2) // Receive
             sysMLrequests.append(receiveRequest2SysML(transindex,
-                    expr2SysML(minDelay),
-                    expr2SysML(maxDelay),
+                    minDelay,
+                    maxDelay,
                     methodMap.get(((AvatarActionOnSignal)target).getSignal())));
         else if (requestType == 3) // Set
             sysMLrequests.append(setTimerRequest2SysML(transindex,
-                    expr2SysML(minDelay),
-                    expr2SysML(maxDelay),
+                    minDelay,
+                    maxDelay,
                     timerBlockSysMLname(((AvatarTimerOperator) target).getTimer().getName()) + ".'@set'",
                     ((AvatarSetTimer) target).getTimerValue()));
         else  if (requestType == 4) // Reset
             sysMLrequests.append(resetTimerRequest2SysML(transindex,
-                    expr2SysML(minDelay),
-                    expr2SysML(maxDelay),
+                    minDelay,
+                    maxDelay,
                     timerBlockSysMLname(((AvatarTimerOperator) target).getTimer().getName()) + ".'@reset'" ));
         else // Expire
             sysMLrequests.append(expireTimerRequest2SysML(transindex,
-                    expr2SysML(minDelay),
-                    expr2SysML(maxDelay),
+                    minDelay,
+                    maxDelay,
                     timerBlockSysMLname(((AvatarTimerOperator) target).getTimer().getName()) + ".'@expire'" ));
         if(guarded) {
             indent = indent.substring(indentStepSize);
@@ -959,9 +958,10 @@ public class Avatar2SysML {
         String doAction;
         indent += indentStep;
         if(requestType == 2)
-            doAction = receiveActions2SysML(methodMap.get(((AvatarActionOnSignal)target).getSignal()), ((AvatarActionOnSignal)target).getValues());
+            doAction = receiveActions2SysML(methodMap.get(((AvatarActionOnSignal)target).getSignal()),
+                    ((AvatarActionOnSignal)target).getOriginalValues());
         else
-            doAction = transitionActions2SysM(at.getActions());
+            doAction = transitionActions2SysM(at);
         indent = indent.substring(indentStepSize);
 
         sysMLtransitions.append("\n" + indent + "transition : '#AvatarTransition' first " + srcName);
@@ -1026,16 +1026,9 @@ public class Avatar2SysML {
             result.append(indent + "'@payload' = " + signalInfo.getMessageType() + "(\n");
             indent += indentStep;
             int j = 0;
-            int k = 0;
             while (j < nbFields) { //for(String vl : values)
-                if (signalInfo.getFieldType(j) != AvatarType.UNDEFINED) {
-                    result.append(indent + expr2SysML(values.get(k)) + ",\n");
-                    k++; j++;
-                } else {
-                    AvatarDataType dt = signalInfo.getDataType(j);
-                    result.append(indent + expr2SysML(removeFieldName(values.get(k), 0,dt)) + ",\n");
-                    k += dt.getFullSize(); j++;
-                }
+                result.append(indent + expr2SysML(values.get(j)) + ",\n");
+                j++;
             }
             result.replace(result.length()-2, result.length(), " )\n");
             indent = indent.substring(indentStepSize);
@@ -1054,7 +1047,7 @@ public class Avatar2SysML {
             if (!min.equals("0"))
                 result.append(indent + "'@delay' = " + min + ",\n");
         }
-        else if (max.trim().equals(min.trim()))
+        else if (max.equals(min))
             result.append(indent + "'@delay' = " + min + ",\n");
         else
             result.append(indent + "'@delay' = '#bound_random'(" + min + ", " + max + "),\n");
@@ -1075,7 +1068,7 @@ public class Avatar2SysML {
             if (!min.equals("0"))
                 result.append(indent + "'@delay' = " + min + ",\n");
         }
-        else if (max.trim().equals(min.trim()))
+        else if (max.equals(min))
             result.append(indent + "'@delay' = " + min + ",\n");
         else
             result.append(indent + "'@delay' = '#bound_random'(" + min + ", " + max + "),\n");
@@ -1098,7 +1091,7 @@ public class Avatar2SysML {
                 result.append(",\n" + indent + "'@delay' = " + min + "\n");
             else
                 result.append("\n");
-        else if (max.trim().equals(min.trim()))
+        else if (max.equals(min))
             result.append(indent + "'@delay' = " + min + ",\n");
         else
             result.append(",\n" + indent + "'@delay' = '#bound_random'(" + min + ", " + max + ")\n");
@@ -1117,7 +1110,7 @@ public class Avatar2SysML {
                 result.append(",\n" + indent + "'@delay' = " + min + "\n");
             else
                 result.append("\n");
-        else if (max.trim().equals(min.trim()))
+        else if (max.equals(min))
             result.append(indent + "'@delay' = " + min + ",\n");
         else
             result.append(",\n" + indent + "'@delay' = '#bound_random'(" + min + ", " + max + ")\n");
@@ -1127,56 +1120,24 @@ public class Avatar2SysML {
     }
 
     String methodCall2SysML(AvatarTermFunction m) {
-        MethodInfo methodInfo = methodMap.get(m.getMethod());
-        List<AvatarTerm>  parameters = m.getArgs().getComponents();
-        int nbFields = methodInfo.getArity();
-        if (nbFields == 0) return(methodInfo.getName() + "()");
-        StringBuffer result = new StringBuffer(methodInfo.getName() + "(");
-        int j = 0; // index in method profile;
-        int k = 0; // index in method parameters;
-        while (j < nbFields) {
-            if (methodInfo.getFieldType(j) != AvatarType.UNDEFINED) {
-                if (parameters.get(k) instanceof AvatarTermFunction)
-                    result.append(methodCall2SysML((AvatarTermFunction) parameters.get(k)) + ",");
-                else
-                    result.append(expr2SysML(parameters.get(k).getName()) + ",");
-                k++;
-                j++;
-            } else {
-                AvatarDataType dt = methodInfo.getDataType(j);
-                result.append(expr2SysML(removeFieldName(((AvatarAttribute) parameters.get(k)).getName(), 0, dt)) + ",");
-                k += dt.getFullSize();
-                j++;
-            }
-        }
-        result.replace(result.length() - 1, result.length(), ")");
-        return result.toString();
+        return expr2SysML(m.getOriginalAction());
     }
-    String transitionActions2SysM(List<AvatarAction> aas) {
+    String transitionActions2SysM(AvatarTransition at) {
         StringBuffer result;
-        if (aas == null || aas.size() == 0) return "";
         result = new StringBuffer(indent + "do action : '#TransitionAction' {\n" + indent + indentStep + "first start;\n");
         indent += indentStep;
-        for(AvatarAction aa : aas) {
-            if(aa instanceof AvatarActionAssignment) {
-                AvatarLeftHand lh = ((AvatarActionAssignment)aa).getLeftHand();
-                if(lh instanceof AvatarAttribute)
-                    result.append(indent + "then assign " + leftHandSysMLname(lh.getName()) + ":= ");
-                else { // AvatarTuple of field-attributes
-                    result.append(indent + "then assign " +
-                            leftHandSysMLname(removeFieldName((AvatarAttribute)((AvatarTuple) lh).getComponents().get(0))) + ":= ");
-                }
-                AvatarTerm rh = ((AvatarActionAssignment)aa).getRightHand();
-                if (rh instanceof AvatarTuple)
-                    result.append(
-                            attributeSysMLname(removeFieldName((AvatarAttribute)((AvatarTuple) rh).getComponents().get(0))) + ";\n");
-                else if (rh instanceof AvatarTermFunction)
-                    result.append(methodCall2SysML((AvatarTermFunction)rh) + ";\n");
-                else
-                    result.append(expr2SysML(rh.getName()) + ";\n");
+        int size = at.getNbOfAction();
+        if (size == 0) return null;
+        for(int i = 0; i < size; i++) {
+            String ac = at.getOriginalAction(i);
+            int eq = ac.indexOf("=");
+            if(eq != -1) {
+                String lh = leftHandSysMLname(ac.substring(0,eq).trim());
+                String rh = expr2SysML(ac.substring(eq+1).trim());
+                result.append(indent + "then assign " + lh + ":= " + rh + ";\n");
             }
             else {
-                result.append(indent + "then action = " + methodCall2SysML((AvatarTermFunction)aa) + ";\n");
+                result.append(indent + "then action = " + expr2SysML(ac) + ";\n");
             }
         }
         result.append(indent + "then done;\n");
@@ -1193,18 +1154,10 @@ public class Avatar2SysML {
                 ";\n" + indent + "first start;\n");
         int nbFields = signalInfo.getArity();
         int j = 0;
-        int k = 0;
         while (j < nbFields) {
-            if (signalInfo.getFieldType(j) != AvatarType.UNDEFINED) {
-                result.append(indent + "then assign " + leftHandSysMLname(values.get(k)) +
+           result.append(indent + "then assign " + leftHandSysMLname(values.get(j)) +
                                 " := '@msg'." + signalInfo.getFieldName(j) + ";\n");
-                k++; j++;
-            } else {
-                AvatarDataType dt = signalInfo.getDataType(j);
-                result.append(indent + "then assign " + leftHandSysMLname(removeFieldName(values.get(k), 0, dt)) +
-                        " := '@msg'." + signalInfo.getFieldName(j) + ";\n");
-                k += dt.getFullSize(); j++;
-            }
+           j++;
         }
         result.append(indent + "then done;\n");
         indent = indent.substring(indentStepSize);
diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
index 8f64afeb46d6ae0a034850077fe85861b7a9c6f0..570ff292d17f21c4f24a8365fa7547e3346d2202 100644
--- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
+++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
@@ -49,7 +49,7 @@ public class Avatar2SysMLNames {
     public static String attributeSysMLname(String _name){
         if (_name == null) return null;
         String name = _name.trim();
-        String[] list = name.split("__");
+        String[] list = name.split(".");
         StringBuffer result = new StringBuffer("'$" + list[0] + "'");
         int length = list.length;
         for(int i = 1; i < length; i++)
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
index ef8aacd2d7012d8da434c3778c502f7c7c9aeade..89900a55c3ffb724e0e3a30d5c859bedc92f154b 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
@@ -150,7 +150,10 @@ public class AvatarFromSysML {
                     s = new AvatarActionOnSignal(_s.getName(), null, _b);
                     break;
                 case AvatarFromSysMLSyntax.STXPRESENDSTATE :
-                case AvatarFromSysMLSyntax.STXPRERECEIVESTATE : break;
+                case AvatarFromSysMLSyntax.STXPRERECEIVESTATE :
+                    addError(new AvatarFromSysMLError(AvatarFromSysMLError.BUGERROR, null,
+                            "adding precom state (AvatarFromSysML.getState)", null));
+                    break;
                 case AvatarFromSysMLSyntax.STXSETTIMERSTATE :
                     s = new AvatarSetTimer(_s.getName(), null, _b);
                     break;
@@ -193,8 +196,12 @@ public class AvatarFromSysML {
         List<AvatarDataType> dtList = avSpec.getDataTypes();
         stxSpec.getDataTypeMap().forEach(new BuildDataType());
         int size = dtList.size();
-        for(int i = 0; i < size; i++)
-            AvatarDataType.finalize(dtList.get(i), avSpec);
+        for(int i = 0; i < size; i++) {
+            AvatarDataType dt = dtList.get(i);
+            AvatarDataType.finalize(dt, avSpec);
+            if (dt.getFullSize() == -1)
+                addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, null, "datatype " + dt.getName() + " is not well defined", null));
+        }
     }
     // BUILDING BLOCKS (but not statemachines) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     private class BuildBlock implements BiConsumer<String, StxBlock> {
@@ -214,28 +221,19 @@ public class AvatarFromSysML {
                 if (a.getType().equals("Integer")) {
                     aa = new AvatarAttribute(a.getName(), AvatarType.INTEGER, theBlock, null);
                     aa.setInitialValue(a.getInit());
-                    theBlock.addAttribute(aa);
-                    aa.setAsConstant(false);
                 }
                 else if (a.getType().equals("Boolean")) {
                     aa = new AvatarAttribute(a.getName(), AvatarType.BOOLEAN, theBlock, null);
                     aa.setInitialValue(a.getInit());
-                    theBlock.addAttribute(aa);
-                    aa.setAsConstant(false);
                 }
                 else {
+                    aa = new AvatarAttribute(a.getName(), AvatarType.UNDEFINED, theBlock, null);
+                    // aa.setInitialValue(a.getInit());
                     AvatarDataType adt = avSpec.getDataTypeByName(a.getType());
-                    int tsize = adt.getFullSize();
-                    for(int j = 0; j < tsize; j++) {
-                        aa = new AvatarAttribute(
-                                a.getName() + "__" + adt.getFieldString(j),
-                                (adt.getFieldStringType(j) == AvatarType.BOOLEAN ? AvatarType.BOOLEAN : AvatarType.INTEGER),
-                                theBlock, null);
-                        theBlock.addAttribute(aa);
-                        aa.setAsConstant(false);
-                        aa.setDataType(adt,j);
-                    }
+                    aa.setDataType(adt);
                 }
+                theBlock.addOriginalAttribute(aa);
+                aa.setAsConstant(false);
             }
             // add Constants
             size = blk.getNbConstants();
@@ -254,25 +252,15 @@ public class AvatarFromSysML {
                     theBlock.addAttribute(aa);
                     aa.setAsConstant(true);
                 }
-                else {
-                    AvatarDataType adt = avSpec.getDataTypeByName(a.getType());
-                    int tsize = adt.getFullSize();
-                    for(int j = 0; j < tsize; j++) {
-                        aa = new AvatarAttribute(
-                                a.getName() + "__" + adt.getFieldString(j),
-                                adt.getFieldStringType(j),
-                                theBlock, null);
-                        theBlock.addAttribute(aa);
-                        aa.setAsConstant(true);
-                        aa.setDataType(adt,j);
-                    }
-                }
+                else
+                    addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR,
+                            a.getLeft(), "datatype for constants is not supported", null));
             }
             // add Timers
             size = blk.getNbTimers();
             for (int i = 0; i < size; i++) {
                 AvatarAttribute aa = new AvatarAttribute(blk.getTimer(i).getName(), AvatarType.TIMER, theBlock, null);
-                theBlock.addAttribute(aa);
+                theBlock.addOriginalAttribute(aa);
                 aa.setAsConstant(false);
             }
             // add Methods
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
index 5829dd2d5603e12c1d21d8c957550cec2ad42856..d66bfa2c691d0f08bc0476a3c08ba12e1026ac9d 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 07/06/2024 11:05 */
+/* The following code was generated by JFlex 1.4.3 on 11/06/2024 10:09 */
 
 package avatartranslator.tosysmlv2;
 import java_cup.runtime.*;
@@ -9,7 +9,7 @@ import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
 /**
  * This class is a scanner generated by 
  * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 07/06/2024 11:05 from the specification file
+ * on 11/06/2024 10:09 from the specification file
  * <tt>__AvatarFromSysMLLexer__.jflex</tt>
  */
 public class AvatarFromSysMLLexer implements java_cup.runtime.Scanner {
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
index c8dcc66ba9cd6c3fedfb5ea557d13540ca7f248c..cf3e9f77d4e0f47d366e4c4fce70b956ce441d25 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
@@ -577,198 +577,197 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\002\000\004\022\u01ea\001\002\000\004\010\u01eb\001" +
     "\002\000\004\017\ufeef\001\002\000\004\076\u01ed\001\002" +
     "\000\004\022\u01ee\001\002\000\004\006\u01ef\001\002\000" +
-    "\004\017\ufef0\001\002\000\010\014\ufef5\015\ufef5\164\u01d6" +
-    "\001\002\000\006\014\ufef4\015\ufef4\001\002\000\006\015" +
-    "\u01f4\221\u01f5\001\002\000\004\015\u0210\001\002\000\004" +
-    "\313\uff0b\001\002\000\004\045\u01f6\001\002\000\004\017" +
-    "\u01f7\001\002\000\004\313\u01f8\001\002\000\010\046\u01fa" +
-    "\145\u01fd\160\u01fe\001\002\000\004\015\uff04\001\002\000" +
-    "\004\017\u020f\001\002\000\004\313\u020b\001\002\000\004" +
-    "\141\u0204\001\002\000\004\022\u01ff\001\002\000\004\141" +
-    "\ufefe\001\002\000\004\141\u0200\001\002\000\004\012\u0147" +
-    "\001\002\000\004\017\u0202\001\002\000\004\313\uff00\001" +
-    "\002\000\006\021\u0209\023\ufeff\001\002\000\012\013\uff18" +
-    "\016\uff18\021\uff18\023\uff18\001\002\000\004\023\u0206\001" +
-    "\002\000\016\004\222\005\225\012\226\141\u013d\251\231" +
-    "\335\221\001\002\000\004\017\u0208\001\002\000\004\313" +
-    "\uff01\001\002\000\004\141\u020a\001\002\000\012\013\uff17" +
-    "\016\uff17\021\uff17\023\uff17\001\002\000\010\046\u020d\145" +
-    "\u01fd\160\u01fe\001\002\000\004\015\uff02\001\002\000\004" +
-    "\017\u020e\001\002\000\004\015\uff03\001\002\000\004\015" +
-    "\uff05\001\002\000\004\313\uff0a\001\002\000\006\017\u0212" +
-    "\164\u01d6\001\002\000\014\015\uff11\212\uff11\216\uff11\307" +
-    "\uff11\316\uff11\001\002\000\004\014\u0214\001\002\000\004" +
-    "\015\u0215\001\002\000\014\015\uff0f\212\uff0f\216\uff0f\307" +
-    "\uff0f\316\uff0f\001\002\000\010\015\u021a\221\u021b\241\u0217" +
-    "\001\002\000\004\071\u0232\001\002\000\004\221\u021b\001" +
-    "\002\000\004\241\u0217\001\002\000\004\313\uff09\001\002" +
-    "\000\004\045\u021e\001\002\000\004\015\u021d\001\002\000" +
-    "\004\313\uff08\001\002\000\004\017\u021f\001\002\000\004" +
-    "\313\u0220\001\002\000\006\046\u022e\160\u01fe\001\002\000" +
-    "\004\313\u0223\001\002\000\006\015\ufef9\241\ufef9\001\002" +
-    "\000\006\046\u0225\160\u01fe\001\002\000\006\015\ufef7\241" +
-    "\ufef7\001\002\000\004\017\u022d\001\002\000\004\141\u0204" +
-    "\001\002\000\006\021\u0209\023\u0228\001\002\000\004\071" +
-    "\u0229\001\002\000\004\021\u022a\001\002\000\004\141\u022b" +
-    "\001\002\000\004\017\u022c\001\002\000\004\313\ufef6\001" +
-    "\002\000\006\015\ufef8\241\ufef8\001\002\000\004\017\u022f" +
-    "\001\002\000\006\015\ufefa\241\ufefa\001\002\000\004\015" +
-    "\ufefc\001\002\000\004\015\ufefd\001\002\000\004\020\u0233" +
-    "\001\002\000\004\141\u0234\001\002\000\004\022\u0235\001" +
-    "\002\000\004\040\u0236\001\002\000\004\156\u0237\001\002" +
-    "\000\004\141\u0238\001\002\000\004\017\u0239\001\002\000" +
-    "\006\015\ufefb\221\ufefb\001\002\000\004\020\u023b\001\002" +
-    "\000\006\117\u023c\120\u023d\001\002\000\004\014\uff06\001" +
-    "\002\000\004\014\uff07\001\002\000\014\015\uff6d\212\uff6d" +
-    "\216\uff6d\307\uff6d\316\uff6d\001\002\000\004\110\u0240\001" +
-    "\002\000\004\012\u0241\001\002\000\006\013\u0243\034\371" +
-    "\001\002\000\004\013\u0245\001\002\000\004\017\u0244\001" +
-    "\002\000\014\015\uff6c\212\uff6c\216\uff6c\307\uff6c\316\uff6c" +
-    "\001\002\000\004\017\u0246\001\002\000\014\015\uff6b\212" +
-    "\uff6b\216\uff6b\307\uff6b\316\uff6b\001\002\000\004\111\u0248" +
-    "\001\002\000\004\012\u0249\001\002\000\006\034\371\035" +
-    "\u024a\001\002\000\004\022\u0257\001\002\000\004\016\u0253" +
-    "\001\002\000\006\013\u024e\016\u024d\001\002\000\004\034" +
-    "\371\001\002\000\004\017\u024f\001\002\000\014\015\uff67" +
-    "\212\uff67\216\uff67\307\uff67\316\uff67\001\002\000\004\013" +
-    "\u0251\001\002\000\004\017\u0252\001\002\000\014\015\uff69" +
-    "\212\uff69\216\uff69\307\uff69\316\uff69\001\002\000\004\035" +
-    "\u024a\001\002\000\004\013\u0255\001\002\000\004\017\u0256" +
-    "\001\002\000\014\015\uff68\212\uff68\216\uff68\307\uff68\316" +
-    "\uff68\001\002\000\004\072\u0258\001\002\000\004\012\u0259" +
-    "\001\002\000\006\042\u025a\043\u025d\001\002\000\004\022" +
-    "\u0267\001\002\000\004\016\u0264\001\002\000\004\022\u0262" +
-    "\001\002\000\004\022\uff19\001\002\000\004\016\u025f\001" +
-    "\002\000\004\042\u025a\001\002\000\004\013\u0261\001\002" +
-    "\000\006\013\uff1c\016\uff1c\001\002\000\004\141\u0204\001" +
-    "\002\000\010\013\uff1a\016\uff1a\021\u0209\001\002\000\004" +
-    "\043\u025d\001\002\000\004\013\u0266\001\002\000\006\013" +
-    "\uff1b\016\uff1b\001\002\000\004\073\u0268\001\002\000\004" +
-    "\012\u026a\001\002\000\006\013\uff16\016\uff16\001\002\000" +
-    "\016\004\222\005\225\012\226\141\223\251\231\335\221" +
-    "\001\002\000\036\011\240\016\u026c\155\234\255\246\334" +
-    "\241\335\233\336\235\337\242\340\236\341\237\342\245" +
-    "\343\243\344\247\345\244\001\002\000\016\004\222\005" +
+    "\004\017\ufef0\001\002\000\006\015\ufef5\164\u01d6\001\002" +
+    "\000\004\015\ufef4\001\002\000\006\015\u01f4\221\u01f5\001" +
+    "\002\000\004\015\u0210\001\002\000\004\313\uff0b\001\002" +
+    "\000\004\045\u01f6\001\002\000\004\017\u01f7\001\002\000" +
+    "\004\313\u01f8\001\002\000\010\046\u01fa\145\u01fd\160\u01fe" +
+    "\001\002\000\004\015\uff04\001\002\000\004\017\u020f\001" +
+    "\002\000\004\313\u020b\001\002\000\004\141\u0204\001\002" +
+    "\000\004\022\u01ff\001\002\000\004\141\ufefe\001\002\000" +
+    "\004\141\u0200\001\002\000\004\012\u0147\001\002\000\004" +
+    "\017\u0202\001\002\000\004\313\uff00\001\002\000\006\021" +
+    "\u0209\023\ufeff\001\002\000\012\013\uff18\016\uff18\021\uff18" +
+    "\023\uff18\001\002\000\004\023\u0206\001\002\000\016\004" +
+    "\222\005\225\012\226\141\u013d\251\231\335\221\001\002" +
+    "\000\004\017\u0208\001\002\000\004\313\uff01\001\002\000" +
+    "\004\141\u020a\001\002\000\012\013\uff17\016\uff17\021\uff17" +
+    "\023\uff17\001\002\000\010\046\u020d\145\u01fd\160\u01fe\001" +
+    "\002\000\004\015\uff02\001\002\000\004\017\u020e\001\002" +
+    "\000\004\015\uff03\001\002\000\004\015\uff05\001\002\000" +
+    "\004\313\uff0a\001\002\000\006\014\u0213\017\u0212\001\002" +
+    "\000\014\015\uff11\212\uff11\216\uff11\307\uff11\316\uff11\001" +
+    "\002\000\004\164\u01d6\001\002\000\004\015\u0215\001\002" +
+    "\000\014\015\uff0f\212\uff0f\216\uff0f\307\uff0f\316\uff0f\001" +
+    "\002\000\010\015\u021a\221\u021b\241\u0217\001\002\000\004" +
+    "\071\u0232\001\002\000\004\221\u021b\001\002\000\004\241" +
+    "\u0217\001\002\000\004\313\uff09\001\002\000\004\045\u021e" +
+    "\001\002\000\004\015\u021d\001\002\000\004\313\uff08\001" +
+    "\002\000\004\017\u021f\001\002\000\004\313\u0220\001\002" +
+    "\000\006\046\u022e\160\u01fe\001\002\000\004\313\u0223\001" +
+    "\002\000\006\015\ufef9\241\ufef9\001\002\000\006\046\u0225" +
+    "\160\u01fe\001\002\000\006\015\ufef7\241\ufef7\001\002\000" +
+    "\004\017\u022d\001\002\000\004\141\u0204\001\002\000\006" +
+    "\021\u0209\023\u0228\001\002\000\004\071\u0229\001\002\000" +
+    "\004\021\u022a\001\002\000\004\141\u022b\001\002\000\004" +
+    "\017\u022c\001\002\000\004\313\ufef6\001\002\000\006\015" +
+    "\ufef8\241\ufef8\001\002\000\004\017\u022f\001\002\000\006" +
+    "\015\ufefa\241\ufefa\001\002\000\004\015\ufefc\001\002\000" +
+    "\004\015\ufefd\001\002\000\004\020\u0233\001\002\000\004" +
+    "\141\u0234\001\002\000\004\022\u0235\001\002\000\004\040" +
+    "\u0236\001\002\000\004\156\u0237\001\002\000\004\141\u0238" +
+    "\001\002\000\004\017\u0239\001\002\000\006\015\ufefb\221" +
+    "\ufefb\001\002\000\004\020\u023b\001\002\000\006\117\u023c" +
+    "\120\u023d\001\002\000\004\014\uff06\001\002\000\004\014" +
+    "\uff07\001\002\000\014\015\uff6d\212\uff6d\216\uff6d\307\uff6d" +
+    "\316\uff6d\001\002\000\004\110\u0240\001\002\000\004\012" +
+    "\u0241\001\002\000\006\013\u0243\034\371\001\002\000\004" +
+    "\013\u0245\001\002\000\004\017\u0244\001\002\000\014\015" +
+    "\uff6c\212\uff6c\216\uff6c\307\uff6c\316\uff6c\001\002\000\004" +
+    "\017\u0246\001\002\000\014\015\uff6b\212\uff6b\216\uff6b\307" +
+    "\uff6b\316\uff6b\001\002\000\004\111\u0248\001\002\000\004" +
+    "\012\u0249\001\002\000\006\034\371\035\u024a\001\002\000" +
+    "\004\022\u0257\001\002\000\004\016\u0253\001\002\000\006" +
+    "\013\u024e\016\u024d\001\002\000\004\034\371\001\002\000" +
+    "\004\017\u024f\001\002\000\014\015\uff67\212\uff67\216\uff67" +
+    "\307\uff67\316\uff67\001\002\000\004\013\u0251\001\002\000" +
+    "\004\017\u0252\001\002\000\014\015\uff69\212\uff69\216\uff69" +
+    "\307\uff69\316\uff69\001\002\000\004\035\u024a\001\002\000" +
+    "\004\013\u0255\001\002\000\004\017\u0256\001\002\000\014" +
+    "\015\uff68\212\uff68\216\uff68\307\uff68\316\uff68\001\002\000" +
+    "\004\072\u0258\001\002\000\004\012\u0259\001\002\000\006" +
+    "\042\u025a\043\u025d\001\002\000\004\022\u0267\001\002\000" +
+    "\004\016\u0264\001\002\000\004\022\u0262\001\002\000\004" +
+    "\022\uff19\001\002\000\004\016\u025f\001\002\000\004\042" +
+    "\u025a\001\002\000\004\013\u0261\001\002\000\006\013\uff1c" +
+    "\016\uff1c\001\002\000\004\141\u0204\001\002\000\010\013" +
+    "\uff1a\016\uff1a\021\u0209\001\002\000\004\043\u025d\001\002" +
+    "\000\004\013\u0266\001\002\000\006\013\uff1b\016\uff1b\001" +
+    "\002\000\004\073\u0268\001\002\000\004\012\u026a\001\002" +
+    "\000\006\013\uff16\016\uff16\001\002\000\016\004\222\005" +
     "\225\012\226\141\223\251\231\335\221\001\002\000\036" +
-    "\011\240\013\u026e\155\234\255\246\334\241\335\233\336" +
+    "\011\240\016\u026c\155\234\255\246\334\241\335\233\336" +
     "\235\337\242\340\236\341\237\342\245\343\243\344\247" +
-    "\345\244\001\002\000\006\013\uff15\016\uff15\001\002\000" +
-    "\014\015\uff7c\212\uff7c\216\uff7c\307\uff7c\316\uff7c\001\002" +
-    "\000\004\106\u0271\001\002\000\004\012\u0272\001\002\000" +
-    "\006\013\u0274\034\371\001\002\000\004\013\u0276\001\002" +
-    "\000\004\017\u0275\001\002\000\014\015\uff7b\212\uff7b\216" +
-    "\uff7b\307\uff7b\316\uff7b\001\002\000\004\017\u0277\001\002" +
-    "\000\014\015\uff7a\212\uff7a\216\uff7a\307\uff7a\316\uff7a\001" +
-    "\002\000\004\112\u0279\001\002\000\004\012\u027a\001\002" +
-    "\000\006\034\371\035\u027b\001\002\000\004\022\u0288\001" +
-    "\002\000\006\013\u0283\016\u0282\001\002\000\004\016\u027e" +
-    "\001\002\000\004\035\u027b\001\002\000\004\013\u0280\001" +
-    "\002\000\004\017\u0281\001\002\000\014\015\uff64\212\uff64" +
-    "\216\uff64\307\uff64\316\uff64\001\002\000\004\034\371\001" +
-    "\002\000\004\017\u0284\001\002\000\014\015\uff65\212\uff65" +
-    "\216\uff65\307\uff65\316\uff65\001\002\000\004\013\u0286\001" +
-    "\002\000\004\017\u0287\001\002\000\014\015\uff63\212\uff63" +
-    "\216\uff63\307\uff63\316\uff63\001\002\000\004\072\u0289\001" +
-    "\002\000\004\012\u028a\001\002\000\006\042\u028b\043\u025d" +
-    "\001\002\000\004\022\u0294\001\002\000\004\016\u0291\001" +
-    "\002\000\004\016\u028e\001\002\000\004\043\u025d\001\002" +
-    "\000\004\013\u0290\001\002\000\006\013\uff13\016\uff13\001" +
-    "\002\000\004\042\u028b\001\002\000\004\013\u0293\001\002" +
-    "\000\006\013\uff14\016\uff14\001\002\000\004\141\u0295\001" +
-    "\002\000\004\021\u0296\001\002\000\004\044\u0297\001\002" +
-    "\000\004\012\u0298\001\002\000\004\013\u0299\001\002\000" +
-    "\006\013\uff12\016\uff12\001\002\000\004\141\u029b\001\002" +
-    "\000\004\020\u029c\001\002\000\004\105\u029d\001\002\000" +
-    "\006\017\uff72\022\uff72\001\002\000\004\020\u029f\001\002" +
-    "\000\004\102\u02a0\001\002\000\004\014\uff9c\001\002\000" +
-    "\024\015\uffaf\145\uffaf\164\uffaf\166\uffaf\171\uffaf\215\uffaf" +
-    "\232\uffaf\262\uffaf\270\uffaf\001\002\000\024\015\uffae\145" +
-    "\uffae\164\uffae\166\uffae\171\uffae\215\uffae\232\uffae\262\uffae" +
-    "\270\uffae\001\002\000\010\015\u02a6\164\275\301\u02a5\001" +
-    "\002\000\004\015\u02ad\001\002\000\004\020\u02aa\001\002" +
-    "\000\020\015\uff9b\145\uff9b\164\uff9b\171\uff9b\215\uff9b\262" +
-    "\uff9b\270\uff9b\001\002\000\010\015\uff98\164\275\301\u02a5" +
-    "\001\002\000\010\015\uff96\164\uff96\301\uff96\001\002\000" +
-    "\004\015\uff97\001\002\000\010\074\306\075\305\141\303" +
-    "\001\002\000\004\017\u02ac\001\002\000\010\015\uff95\164" +
-    "\uff95\301\uff95\001\002\000\020\015\uff9a\145\uff9a\164\uff9a" +
-    "\171\uff9a\215\uff9a\262\uff9a\270\uff9a\001\002\000\004\020" +
-    "\u02af\001\002\000\004\103\u02b0\001\002\000\004\014\uff99" +
-    "\001\002\000\020\015\uffa6\145\uffa6\164\uffa6\171\uffa6\215" +
-    "\uffa6\262\uffa6\270\uffa6\001\002\000\016\004\222\005\225" +
-    "\012\226\141\223\251\231\335\221\001\002\000\036\011" +
-    "\240\017\u02b4\155\234\255\246\334\241\335\233\336\235" +
-    "\337\242\340\236\341\237\342\245\343\243\344\247\345" +
-    "\244\001\002\000\020\015\uffa5\145\uffa5\164\uffa5\171\uffa5" +
-    "\215\uffa5\262\uffa5\270\uffa5\001\002\000\004\020\u02b6\001" +
+    "\345\244\001\002\000\016\004\222\005\225\012\226\141" +
+    "\223\251\231\335\221\001\002\000\036\011\240\013\u026e" +
+    "\155\234\255\246\334\241\335\233\336\235\337\242\340" +
+    "\236\341\237\342\245\343\243\344\247\345\244\001\002" +
+    "\000\006\013\uff15\016\uff15\001\002\000\014\015\uff7c\212" +
+    "\uff7c\216\uff7c\307\uff7c\316\uff7c\001\002\000\004\106\u0271" +
+    "\001\002\000\004\012\u0272\001\002\000\006\013\u0274\034" +
+    "\371\001\002\000\004\013\u0276\001\002\000\004\017\u0275" +
+    "\001\002\000\014\015\uff7b\212\uff7b\216\uff7b\307\uff7b\316" +
+    "\uff7b\001\002\000\004\017\u0277\001\002\000\014\015\uff7a" +
+    "\212\uff7a\216\uff7a\307\uff7a\316\uff7a\001\002\000\004\112" +
+    "\u0279\001\002\000\004\012\u027a\001\002\000\006\034\371" +
+    "\035\u027b\001\002\000\004\022\u0288\001\002\000\006\013" +
+    "\u0283\016\u0282\001\002\000\004\016\u027e\001\002\000\004" +
+    "\035\u027b\001\002\000\004\013\u0280\001\002\000\004\017" +
+    "\u0281\001\002\000\014\015\uff64\212\uff64\216\uff64\307\uff64" +
+    "\316\uff64\001\002\000\004\034\371\001\002\000\004\017" +
+    "\u0284\001\002\000\014\015\uff65\212\uff65\216\uff65\307\uff65" +
+    "\316\uff65\001\002\000\004\013\u0286\001\002\000\004\017" +
+    "\u0287\001\002\000\014\015\uff63\212\uff63\216\uff63\307\uff63" +
+    "\316\uff63\001\002\000\004\072\u0289\001\002\000\004\012" +
+    "\u028a\001\002\000\006\042\u028b\043\u025d\001\002\000\004" +
+    "\022\u0294\001\002\000\004\016\u0291\001\002\000\004\016" +
+    "\u028e\001\002\000\004\043\u025d\001\002\000\004\013\u0290" +
+    "\001\002\000\006\013\uff13\016\uff13\001\002\000\004\042" +
+    "\u028b\001\002\000\004\013\u0293\001\002\000\006\013\uff14" +
+    "\016\uff14\001\002\000\004\141\u0295\001\002\000\004\021" +
+    "\u0296\001\002\000\004\044\u0297\001\002\000\004\012\u0298" +
+    "\001\002\000\004\013\u0299\001\002\000\006\013\uff12\016" +
+    "\uff12\001\002\000\004\141\u029b\001\002\000\004\020\u029c" +
+    "\001\002\000\004\105\u029d\001\002\000\006\017\uff72\022" +
+    "\uff72\001\002\000\004\020\u029f\001\002\000\004\102\u02a0" +
+    "\001\002\000\004\014\uff9c\001\002\000\024\015\uffaf\145" +
+    "\uffaf\164\uffaf\166\uffaf\171\uffaf\215\uffaf\232\uffaf\262\uffaf" +
+    "\270\uffaf\001\002\000\024\015\uffae\145\uffae\164\uffae\166" +
+    "\uffae\171\uffae\215\uffae\232\uffae\262\uffae\270\uffae\001\002" +
+    "\000\010\015\u02a6\164\275\301\u02a5\001\002\000\004\015" +
+    "\u02ad\001\002\000\004\020\u02aa\001\002\000\020\015\uff9b" +
+    "\145\uff9b\164\uff9b\171\uff9b\215\uff9b\262\uff9b\270\uff9b\001" +
+    "\002\000\010\015\uff98\164\275\301\u02a5\001\002\000\010" +
+    "\015\uff96\164\uff96\301\uff96\001\002\000\004\015\uff97\001" +
+    "\002\000\010\074\306\075\305\141\303\001\002\000\004" +
+    "\017\u02ac\001\002\000\010\015\uff95\164\uff95\301\uff95\001" +
+    "\002\000\020\015\uff9a\145\uff9a\164\uff9a\171\uff9a\215\uff9a" +
+    "\262\uff9a\270\uff9a\001\002\000\004\020\u02af\001\002\000" +
+    "\004\103\u02b0\001\002\000\004\014\uff99\001\002\000\020" +
+    "\015\uffa6\145\uffa6\164\uffa6\171\uffa6\215\uffa6\262\uffa6\270" +
+    "\uffa6\001\002\000\016\004\222\005\225\012\226\141\223" +
+    "\251\231\335\221\001\002\000\036\011\240\017\u02b4\155" +
+    "\234\255\246\334\241\335\233\336\235\337\242\340\236" +
+    "\341\237\342\245\343\243\344\247\345\244\001\002\000" +
+    "\020\015\uffa5\145\uffa5\164\uffa5\171\uffa5\215\uffa5\262\uffa5" +
+    "\270\uffa5\001\002\000\004\020\u02b6\001\002\000\010\074" +
+    "\306\075\305\141\303\001\002\000\006\017\uffa4\023\uffa4" +
+    "\001\002\000\004\141\u02b9\001\002\000\004\020\u02ba\001" +
     "\002\000\010\074\306\075\305\141\303\001\002\000\006" +
-    "\017\uffa4\023\uffa4\001\002\000\004\141\u02b9\001\002\000" +
-    "\004\020\u02ba\001\002\000\010\074\306\075\305\141\303" +
-    "\001\002\000\006\017\uffa1\023\uffa1\001\002\000\004\121" +
-    "\u02bd\001\002\000\004\020\u02be\001\002\000\004\116\u02bf" +
-    "\001\002\000\006\014\uff8d\017\uff8d\001\002\000\006\062" +
-    "\u02c2\063\u02c1\001\002\000\004\165\u02cf\001\002\000\004" +
-    "\165\u02c3\001\002\000\004\141\u02c4\001\002\000\006\021" +
-    "\u02c5\022\u02c6\001\002\000\004\141\u02cb\001\002\000\004" +
-    "\141\u02c7\001\002\000\004\021\u02c8\001\002\000\004\141" +
-    "\u02c9\001\002\000\004\017\u02ca\001\002\000\014\015\uffc6" +
-    "\164\uffc6\166\uffc6\232\uffc6\262\uffc6\001\002\000\004\022" +
-    "\u02cc\001\002\000\004\141\u02cd\001\002\000\004\017\u02ce" +
-    "\001\002\000\014\015\uffc7\164\uffc7\166\uffc7\232\uffc7\262" +
-    "\uffc7\001\002\000\004\141\u02d0\001\002\000\006\021\u02d1" +
-    "\022\u02d2\001\002\000\004\141\u02d7\001\002\000\004\141" +
-    "\u02d3\001\002\000\004\021\u02d4\001\002\000\004\141\u02d5" +
-    "\001\002\000\004\017\u02d6\001\002\000\014\015\uffc4\164" +
-    "\uffc4\166\uffc4\232\uffc4\262\uffc4\001\002\000\004\022\u02d8" +
-    "\001\002\000\004\141\u02d9\001\002\000\004\017\u02da\001" +
-    "\002\000\014\015\uffc5\164\uffc5\166\uffc5\232\uffc5\262\uffc5" +
-    "\001\002\000\006\015\u02dd\164\275\001\002\000\004\015" +
-    "\u02de\001\002\000\014\015\uffec\164\uffec\166\uffec\232\uffec" +
-    "\262\uffec\001\002\000\014\015\uffed\164\uffed\166\uffed\232" +
-    "\uffed\262\uffed\001\002\000\004\265\u02e2\001\002\000\014" +
-    "\015\uffc1\164\uffc1\166\uffc1\232\uffc1\262\uffc1\001\002\000" +
-    "\006\015\u02ee\164\275\001\002\000\004\262\u02e3\001\002" +
-    "\000\004\041\u02e4\001\002\000\006\020\u02e6\022\u02e5\001" +
-    "\002\000\004\141\u02eb\001\002\000\004\055\u02e7\001\002" +
-    "\000\004\022\u02e8\001\002\000\004\141\u02e9\001\002\000" +
-    "\004\017\u02ea\001\002\000\006\015\uffbc\164\uffbc\001\002" +
-    "\000\004\017\u02ec\001\002\000\006\015\uffbb\164\uffbb\001" +
-    "\002\000\004\015\u02ef\001\002\000\014\015\uffbf\164\uffbf" +
-    "\166\uffbf\232\uffbf\262\uffbf\001\002\000\014\015\uffbe\164" +
-    "\uffbe\166\uffbe\232\uffbe\262\uffbe\001\002\000\004\015\u02f1" +
-    "\001\002\000\014\015\uffbd\164\uffbd\166\uffbd\232\uffbd\262" +
-    "\uffbd\001\002\000\014\015\uffba\164\uffba\166\uffba\232\uffba" +
-    "\262\uffba\001\002\000\006\015\u02f6\164\u02f4\001\002\000" +
-    "\004\141\u02fa\001\002\000\014\015\uffb8\164\uffb8\166\uffb8" +
-    "\232\uffb8\262\uffb8\001\002\000\014\015\uffb9\164\uffb9\166" +
-    "\uffb9\232\uffb9\262\uffb9\001\002\000\006\015\u02f9\164\u02f4" +
-    "\001\002\000\014\015\uffb4\164\uffb4\166\uffb4\232\uffb4\262" +
-    "\uffb4\001\002\000\014\015\uffb5\164\uffb5\166\uffb5\232\uffb5" +
-    "\262\uffb5\001\002\000\004\271\u02fb\001\002\000\004\141" +
-    "\u02fc\001\002\000\004\017\u02fd\001\002\000\006\015\uffb3" +
-    "\164\uffb3\001\002\000\006\013\uffd7\016\uffd7\001\002\000" +
-    "\004\022\u0316\001\002\000\004\022\u0314\001\002\000\004" +
-    "\013\u0312\001\002\000\006\013\uffd8\016\uffd8\001\002\000" +
-    "\006\013\uffd5\016\uffd5\001\002\000\006\013\uffdb\016\u0310" +
-    "\001\002\000\006\013\uffd6\016\uffd6\001\002\000\004\022" +
-    "\u030e\001\002\000\004\022\u030c\001\002\000\006\013\uffd9" +
-    "\016\uffd9\001\002\000\004\022\u030a\001\002\000\004\004" +
-    "\u030b\001\002\000\006\013\uffd1\016\uffd1\001\002\000\004" +
-    "\141\u030d\001\002\000\006\013\uffd4\016\uffd4\001\002\000" +
-    "\004\005\u030f\001\002\000\006\013\uffd0\016\uffd0\001\002" +
-    "\000\014\025\u0306\026\u0309\027\u0300\031\u0307\032\u02ff\001" +
-    "\002\000\004\013\uffda\001\002\000\004\017\u0313\001\002" +
-    "\000\014\015\uffe1\164\uffe1\166\uffe1\232\uffe1\262\uffe1\001" +
-    "\002\000\004\005\u0315\001\002\000\006\013\uffd2\016\uffd2" +
-    "\001\002\000\004\141\u0317\001\002\000\006\013\uffd3\016" +
-    "\uffd3\001\002\000\004\015\ufffd\001\002\000\004\013\u031a" +
-    "\001\002\000\004\017\u031b\001\002\000\014\015\uffdd\164" +
-    "\uffdd\166\uffdd\232\uffdd\262\uffdd\001\002\000\004\141\u031d" +
-    "\001\002\000\006\305\136\333\140\001\002\000\004\100" +
-    "\u031f\001\002\000\004\014\uffeb\001\002\000\004\013\u0321" +
-    "\001\002\000\004\017\u0322\001\002\000\014\015\uffdf\164" +
-    "\uffdf\166\uffdf\232\uffdf\262\uffdf\001\002\000\004\002\000" +
-    "\001\002" });
+    "\017\uffa1\023\uffa1\001\002\000\004\121\u02bd\001\002\000" +
+    "\004\020\u02be\001\002\000\004\116\u02bf\001\002\000\006" +
+    "\014\uff8d\017\uff8d\001\002\000\006\062\u02c2\063\u02c1\001" +
+    "\002\000\004\165\u02cf\001\002\000\004\165\u02c3\001\002" +
+    "\000\004\141\u02c4\001\002\000\006\021\u02c5\022\u02c6\001" +
+    "\002\000\004\141\u02cb\001\002\000\004\141\u02c7\001\002" +
+    "\000\004\021\u02c8\001\002\000\004\141\u02c9\001\002\000" +
+    "\004\017\u02ca\001\002\000\014\015\uffc6\164\uffc6\166\uffc6" +
+    "\232\uffc6\262\uffc6\001\002\000\004\022\u02cc\001\002\000" +
+    "\004\141\u02cd\001\002\000\004\017\u02ce\001\002\000\014" +
+    "\015\uffc7\164\uffc7\166\uffc7\232\uffc7\262\uffc7\001\002\000" +
+    "\004\141\u02d0\001\002\000\006\021\u02d1\022\u02d2\001\002" +
+    "\000\004\141\u02d7\001\002\000\004\141\u02d3\001\002\000" +
+    "\004\021\u02d4\001\002\000\004\141\u02d5\001\002\000\004" +
+    "\017\u02d6\001\002\000\014\015\uffc4\164\uffc4\166\uffc4\232" +
+    "\uffc4\262\uffc4\001\002\000\004\022\u02d8\001\002\000\004" +
+    "\141\u02d9\001\002\000\004\017\u02da\001\002\000\014\015" +
+    "\uffc5\164\uffc5\166\uffc5\232\uffc5\262\uffc5\001\002\000\006" +
+    "\015\u02dd\164\275\001\002\000\004\015\u02de\001\002\000" +
+    "\014\015\uffec\164\uffec\166\uffec\232\uffec\262\uffec\001\002" +
+    "\000\014\015\uffed\164\uffed\166\uffed\232\uffed\262\uffed\001" +
+    "\002\000\004\265\u02e2\001\002\000\014\015\uffc1\164\uffc1" +
+    "\166\uffc1\232\uffc1\262\uffc1\001\002\000\006\015\u02ee\164" +
+    "\275\001\002\000\004\262\u02e3\001\002\000\004\041\u02e4" +
+    "\001\002\000\006\020\u02e6\022\u02e5\001\002\000\004\141" +
+    "\u02eb\001\002\000\004\055\u02e7\001\002\000\004\022\u02e8" +
+    "\001\002\000\004\141\u02e9\001\002\000\004\017\u02ea\001" +
+    "\002\000\006\015\uffbc\164\uffbc\001\002\000\004\017\u02ec" +
+    "\001\002\000\006\015\uffbb\164\uffbb\001\002\000\004\015" +
+    "\u02ef\001\002\000\014\015\uffbf\164\uffbf\166\uffbf\232\uffbf" +
+    "\262\uffbf\001\002\000\014\015\uffbe\164\uffbe\166\uffbe\232" +
+    "\uffbe\262\uffbe\001\002\000\004\015\u02f1\001\002\000\014" +
+    "\015\uffbd\164\uffbd\166\uffbd\232\uffbd\262\uffbd\001\002\000" +
+    "\014\015\uffba\164\uffba\166\uffba\232\uffba\262\uffba\001\002" +
+    "\000\006\015\u02f6\164\u02f4\001\002\000\004\141\u02fa\001" +
+    "\002\000\014\015\uffb8\164\uffb8\166\uffb8\232\uffb8\262\uffb8" +
+    "\001\002\000\014\015\uffb9\164\uffb9\166\uffb9\232\uffb9\262" +
+    "\uffb9\001\002\000\006\015\u02f9\164\u02f4\001\002\000\014" +
+    "\015\uffb4\164\uffb4\166\uffb4\232\uffb4\262\uffb4\001\002\000" +
+    "\014\015\uffb5\164\uffb5\166\uffb5\232\uffb5\262\uffb5\001\002" +
+    "\000\004\271\u02fb\001\002\000\004\141\u02fc\001\002\000" +
+    "\004\017\u02fd\001\002\000\006\015\uffb3\164\uffb3\001\002" +
+    "\000\006\013\uffd7\016\uffd7\001\002\000\004\022\u0316\001" +
+    "\002\000\004\022\u0314\001\002\000\004\013\u0312\001\002" +
+    "\000\006\013\uffd8\016\uffd8\001\002\000\006\013\uffd5\016" +
+    "\uffd5\001\002\000\006\013\uffdb\016\u0310\001\002\000\006" +
+    "\013\uffd6\016\uffd6\001\002\000\004\022\u030e\001\002\000" +
+    "\004\022\u030c\001\002\000\006\013\uffd9\016\uffd9\001\002" +
+    "\000\004\022\u030a\001\002\000\004\004\u030b\001\002\000" +
+    "\006\013\uffd1\016\uffd1\001\002\000\004\141\u030d\001\002" +
+    "\000\006\013\uffd4\016\uffd4\001\002\000\004\005\u030f\001" +
+    "\002\000\006\013\uffd0\016\uffd0\001\002\000\014\025\u0306" +
+    "\026\u0309\027\u0300\031\u0307\032\u02ff\001\002\000\004\013" +
+    "\uffda\001\002\000\004\017\u0313\001\002\000\014\015\uffe1" +
+    "\164\uffe1\166\uffe1\232\uffe1\262\uffe1\001\002\000\004\005" +
+    "\u0315\001\002\000\006\013\uffd2\016\uffd2\001\002\000\004" +
+    "\141\u0317\001\002\000\006\013\uffd3\016\uffd3\001\002\000" +
+    "\004\015\ufffd\001\002\000\004\013\u031a\001\002\000\004" +
+    "\017\u031b\001\002\000\014\015\uffdd\164\uffdd\166\uffdd\232" +
+    "\uffdd\262\uffdd\001\002\000\004\141\u031d\001\002\000\006" +
+    "\305\136\333\140\001\002\000\004\100\u031f\001\002\000" +
+    "\004\014\uffeb\001\002\000\004\013\u0321\001\002\000\004" +
+    "\017\u0322\001\002\000\014\015\uffdf\164\uffdf\166\uffdf\232" +
+    "\uffdf\262\uffdf\001\002\000\004\002\000\001\002" });
 
   /** Access to parse-action table. */
   @Override
@@ -1011,9 +1010,9 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\u013d\233\u013b\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\006\201\u01fa\207" +
     "\u01fb\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\002\001\001\000\014\204" +
-    "\u0212\220\u01d4\221\u01d9\222\u01d7\223\u01d8\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+    "\001\000\002\001\001\000\014\204\u0213\220\u01d4\221\u01d9" +
+    "\222\u01d7\223\u01d8\001\001\000\002\001\001\000\002\001" +
     "\001\000\010\206\u021b\214\u0217\215\u0218\001\001\000\002" +
     "\001\001\000\004\215\u0230\001\001\000\004\214\u022f\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
@@ -1355,7 +1354,12 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     private StxCall theCall;
 
     ArrayList<StxTransition> commTransitions;
-
+    private Location distributionLbl;
+    private Location weightLbl;
+    private void clearTransitionLbls() {
+        distributionLbl = null;
+        weightLbl = null;
+    }
 
 
 /** Cup generated class to encapsulate user supplied action code.*/
@@ -4752,6 +4756,9 @@ class CUP$AvatarFromSysMLParser$actions {
     if (settimerArg != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg));
     else {
+        if (theTransition.getType() != AvatarFromSysMLSyntax.STXSETTIMERTRANSITION)
+            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft,
+                "such channel is only relevant for set-timer transitions", null));
         theTransition.setTimer(id.getAvatarName());
         settimerArg = cxleft;
     }
@@ -4774,6 +4781,9 @@ class CUP$AvatarFromSysMLParser$actions {
     if (resettimerArg != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg));
     else {
+        if (theTransition.getType() != AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION)
+            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft,
+                "such channel is only relevant for reset-timer transitions", null));
         theTransition.setTimer(id.getAvatarName());
         resettimerArg = cxleft;
     }
@@ -4796,6 +4806,9 @@ class CUP$AvatarFromSysMLParser$actions {
     if (expiretimerArg != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg));
     else {
+        if (theTransition.getType() != AvatarFromSysMLSyntax.STXEXPIRETIMERTRANSITION)
+            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft,
+                "such channel is only relevant for expire-timer transitions", null));
         theTransition.setTimer(id.getAvatarName());
         expiretimerArg = cxleft;
     }
@@ -4890,7 +4903,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location idxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Ident id = CUP$AvatarFromSysMLParser$stack.peek().<Ident>value();
 		
-        stringAcc.append("__" + id.getAvatarName());
+        stringAcc.append("." + id.getAvatarName());
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("fullIdent",135, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -5003,7 +5016,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 242: // transition ::= transitionBegin THEN IDENT transitionLabels LBRAC RBRAC 
+          case 242: // transition ::= transitionBegin THEN IDENT LBRAC transitionLabels RBRAC 
             {
               Object RESULT =null;
 		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft;
@@ -5062,6 +5075,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		
         getState(st.getAvatarName());
         getTransition(0);
+        clearTransitionLbls();
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transitionBegin",129, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -5080,6 +5094,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		
        getState(st.getAvatarName());
        getTransition(i-1);
+       clearTransitionLbls();
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transitionBegin",129, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -5318,11 +5333,18 @@ class CUP$AvatarFromSysMLParser$actions {
           case 267: // receiveAssign ::= THEN assign fullIdent GETS MSG_U POINT IDENT SEMICOLON 
             {
               Object RESULT =null;
+		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7)).xleft;
+		Location txright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7)).xright;
+		Object t = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7).<Object>value();
 		Location idxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
 		Location idxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xright;
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1).<Ident>value();
 		
-    receiveMap.put(id.getAvatarName(),stringAcc.toString());
+    String test = receiveMap.get(id.getAvatarName());
+    if (test == null)  receiveMap.put(id.getAvatarName(),stringAcc.toString());
+    else
+        addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
+            "component " + id.getAvatarName() + " has already been assigned", null));
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("receiveAssign",141, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -5377,11 +5399,20 @@ class CUP$AvatarFromSysMLParser$actions {
           case 273: // distributionLabel ::= ATTRIBUTE DISTRIBUTION_A COLON STRING_T EQUAL STRING 
             {
               Object RESULT =null;
+		Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft;
+		Location axright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xright;
+		Object a = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5).<Object>value();
 		Location sxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
 		Location sxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		String s = CUP$AvatarFromSysMLParser$stack.peek().<String>value();
 		
-    theTransition.setDelayDistributionLaw(s);
+    if (distributionLbl != null)
+        addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft,
+            "distribution label has already been assigned", distributionLbl));
+    else {
+        theTransition.setDelayDistributionLaw(s);
+        distributionLbl = axleft;
+    }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("distributionLabel",143, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -5391,11 +5422,20 @@ class CUP$AvatarFromSysMLParser$actions {
           case 274: // weightLabel ::= ATTRIBUTE WEIGHT_A COLON STRING_T EQUAL REAL 
             {
               Object RESULT =null;
+		Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft;
+		Location axright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xright;
+		Object a = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5).<Object>value();
 		Location rxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
 		Location rxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Double r = CUP$AvatarFromSysMLParser$stack.peek().<Double>value();
 		
-    theTransition.setProbability(r);
+    if (weightLbl != null)
+        addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft,
+            "weight label has already been assigned", weightLbl));
+    else {
+        theTransition.setProbability(r);
+        weightLbl = axleft;
+    }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("weightLabel",144, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
index d6fd2fb26ed98ab0a41fdef9142fc2d6f81a8297..fcdeecd2cc0b4a259b7140f15d3ab648f9cae3ca 100644
--- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
+++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
@@ -210,7 +210,7 @@ parser code {:
 
     ArrayList<StxTransition> commTransitions;
     private Location distributionLbl;
-    private boolean weightLbl;
+    private Location weightLbl;
     private void clearTransitionLbls() {
         distributionLbl = null;
         weightLbl = null;
@@ -1601,7 +1601,7 @@ receiveAssign ::= THEN:t assign fullIdent GETS MSG_U POINT IDENT:id SEMICOLON {:
     if (test == null)  receiveMap.put(id.getAvatarName(),stringAcc.toString());
     else
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
-            "component " + id.getAvatarName() " has already been assigned", null));
+            "component " + id.getAvatarName() + " has already been assigned", null));
 :};
 transitionLabels ::= transitionLabel SEMICOLON | transitionLabel SEMICOLON transitionLabels;
 transitionLabel ::= distributionLabel | weightLabel | extraLabel;
@@ -1609,18 +1609,18 @@ distributionLabel ::= ATTRIBUTE:a DISTRIBUTION_A COLON STRING_T EQUAL STRING:s {
     if (distributionLbl != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft,
             "distribution label has already been assigned", distributionLbl));
-    ELSE {
+    else {
         theTransition.setDelayDistributionLaw(s);
-        distributionLbl := axleft;
+        distributionLbl = axleft;
     }
 :};
 weightLabel ::= ATTRIBUTE:a WEIGHT_A COLON STRING_T EQUAL REAL:r {:
     if (weightLbl != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft,
             "weight label has already been assigned", weightLbl));
-    ELSE {
+    else {
         theTransition.setProbability(r);
-        weightLbl := axleft;
+        weightLbl = axleft;
     }
 :};
 extraLabel ::=
diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java
index a3cdd52ac2ddf0babc88da5dd6c33036e363f367..344146b15e259f12a17f5975a104b6e8fafe2ad3 100644
--- a/src/main/java/ui/AvatarDesignPanelTranslator.java
+++ b/src/main/java/ui/AvatarDesignPanelTranslator.java
@@ -1100,11 +1100,14 @@ public class AvatarDesignPanelTranslator {
                     ty = AvatarType.INTEGER;
                 } else if (ta.getType() == TAttribute.BOOLEAN) {
                     ty = AvatarType.BOOLEAN;
-                } else {
+                } else if (ta.getType() == TAttribute.OTHER){
                     ty = AvatarType.UNDEFINED;
+                } else { // ERROR, should not happen
+                    ty = AvatarType.INTEGER;
                 }
                 AvatarAttribute aa = new AvatarAttribute(ta.getName(), ty, null, type);
-                adt.addAttribute(aa,ta.getTypeOther().trim());
+                if (ty == AvatarType.UNDEFINED && ta.getTypeOther() != null)
+                    adt.addAttribute(aa,ta.getTypeOther().trim());
             }
             _as.addDataType(adt);
         }