diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
index 5e17ea1b28b5e44d52e33e3f8bf22ad6eca7f4be..df48206f65114401f3fbd341472867c79db1d8e5 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
@@ -46,6 +46,7 @@ import java.util.function.BiConsumer;
 import avatartranslator.*;
 import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
 import java_cup.runtime.ComplexSymbolFactory;
+import myutil.TraceManager;
 
 import static java.lang.System.out;
 
@@ -79,23 +80,32 @@ public class AvatarFromSysML {
             e.printStackTrace(out);
             return new AvatarSpecification("DummySpec", null);
         }
+        TraceManager.addDev("Parsing Model");
         try { stxSpec = parser.parseModel(); }
         catch (java.lang.Exception e) {
             e.printStackTrace(out);
             return new AvatarSpecification("DummySpec", null);
         }
-        if (stxSpec == null) return new AvatarSpecification("DummySpec", null);
+        if (stxSpec == null) {
+            for(AvatarFromSysMLError e : parser.getErrors())
+                TraceManager.addDev(e.toString());
+            return new AvatarSpecification("DummySpec", null);
+        }
         errors = stxSpec.getErrors();
+        TraceManager.addDev("Building Specification");
         avSpec = new AvatarSpecification("FromSysMLV2_EXAMPLE_SPECIFICATION",null);
         transitionList.clear();
         signalMap.clear();
         blockMap.clear();
         stateMap.clear();
+        TraceManager.addDev("Building DataTypes");
         buildDataTypes();
+        TraceManager.addDev("Building DataTypes");
         buildBlocks();
+        TraceManager.addDev("Building DataTypes");
         buildRelations();
         for(AvatarFromSysMLError e : errors)
-            System.out.println(e.toString());
+            TraceManager.addDev(e.toString());
 /*        for (AvatarBlock blk : avSpec.getListOfBlocks()) {
             for (AvatarStateMachineElement asme : blk.getStateMachine().getListOfElements()) {
                 if (asme.getNexts().size() == 1 &&
@@ -107,7 +117,6 @@ public class AvatarFromSysML {
                             ((AvatarTransition)asme).getDelayExtra2() + "%%%%%%%%%%%%%");
             }
         } */
-        System.out.println("$$$$$$$$$$ DONE $$$$$$$$$$$$");
         return avSpec;
     }
 
@@ -393,15 +402,20 @@ public class AvatarFromSysML {
             AvatarStateMachineElement theSourceState;
             size = states.length;
             for (int i = 0; i < size; i++) {
+                byte stateType = states[i].getType();
+                boolean undeclaredState = false;
                 if (! states[i].isDeclared()) {
                     addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR,
                             "state " + theBlock.getName() + "." + states[i].getName() + " is used but not declared"));
-                    continue;
+                    stateType = AvatarFromSysMLSyntax.STXSTANDARDSTATE;
+                    undeclaredState = true;
                 }
-                byte stateType = states[i].getType();
                 if (stateType != AvatarFromSysMLSyntax.STXPRESENDSTATE &&
                         stateType != AvatarFromSysMLSyntax.STXPRERECEIVESTATE &&
                         stateType != AvatarFromSysMLSyntax.STXSTOPSTATE ) {
+                    if (undeclaredState) {
+                        states[i].setType(AvatarFromSysMLSyntax.STXSTANDARDSTATE);
+                    }
                     theSourceState = getState(states[i], theBlock);
                     asm.addElement(theSourceState);
                     if (stateType == AvatarFromSysMLSyntax.STXRANDOMSTATE) {
@@ -424,8 +438,8 @@ public class AvatarFromSysML {
                         }
                         if (! transition.isDeclared()) {
                             addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getRleft(),
-                                    "transition from state " + states[i].getName() + " in block" + theBlock.getName() +
-                                            "." + states[i].getName() + " is used but not declared" ));
+                                    "transition request in state " + states[i].getName() + " in block" + theBlock.getName() +
+                                            " has no associated declaration" ));
                             continue;
                         }
                         AvatarTransition theTransition = new AvatarTransition(theBlock,"", null);
@@ -870,8 +884,12 @@ public class AvatarFromSysML {
             for (int i = 0; i < size; i++) {
                 StxChannel c = r.getChannel(i);
                 c.commuteSignals(r.getBlock1().getName());
-                theRelation.addSignals(getSignal(c.getSignalA()),getSignal(c.getSignalB()));
-            }
+                if (c.getSignalA() != null && c.getSignalB() != null)
+                    theRelation.addSignals(getSignal(c.getSignalA()),getSignal(c.getSignalB()));
+                else
+                 addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, c.getLeft(),
+                 "missing signal binding for channel"));
+           }
         }
     }
 }
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLError.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLError.java
index 92f7a6b7edd80fdf540af9fb3e1366ec4b42efe1..2fd86942101401f55658ead45d390cdd891f6cd1 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLError.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLError.java
@@ -45,10 +45,10 @@ public class AvatarFromSysMLError {
         else
             res.append("BUG ");
         if (location != null)
-            res.append("(l" + location.getLine() + ",c" + location.getColumn() + ")");
+            res.append("(l" + (location.getLine() + 1) + ",c" + (location.getColumn() + 1) + ")");
         res.append(": " + message);
         if (reference != null)
-            res.append(" (c.f. l" + reference.getLine() + ",c" + reference.getColumn() + ")");
+            res.append(" (c.f. l" + (reference.getLine() + 1) + ",c" + (reference.getColumn() + 1) + ")");
         res.append("\n");
         return res.toString();
     }
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
index 6767651e43d2d1c196bcb9c6157718999fea695e..796f4fa4a2e59dd81530590acdba86cb38663f3d 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 16/06/2024 11:17 */
+/* The following code was generated by JFlex 1.4.3 on 16/06/2024 13:02 */
 
 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 16/06/2024 11:17 from the specification file
+ * on 16/06/2024 13:02 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 c173fe36d9f3f9c289275d72f51cd861e6e4edff..45c582d25deda52eb5b2523cec47ffee550b33e0 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
@@ -1207,6 +1207,7 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     private StringBuffer stringAcc = new StringBuffer();
     private ArrayList<AvatarFromSysMLError> errors;
     private void addError(AvatarFromSysMLError _err) { errors.add(_err); }
+    public ArrayList<AvatarFromSysMLError> getErrors() { return errors; }
     private StxStructure theStructure;
     private HashMap<String,StxDataType> dataTypeMap;
     private StxRelation theRelation;
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
index 2122ec9016342ef3b64105a538a31d573df06545..4434c0a634b21833a1bc4f6c56f1621b4a3fcb52 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
@@ -504,19 +504,28 @@ public class AvatarFromSysMLSyntax {
             }
             return false;
         }
-        private ArrayList<AvatarFromSysMLError> errors;
+
         private class Complete implements BiConsumer<StxField, String> {
             List<AvatarFromSysMLError> errors;
-            public Complete(List<AvatarFromSysMLError> l){ errors = l; };
+            private boolean[] inProfile;
+            public boolean[] getInProfile() { return inProfile; }
+            public Complete(List<AvatarFromSysMLError> l){
+                errors = l;
+                inProfile = new boolean[inMessage.getSize()];
+                for (int i = 0; i < inMessage.getSize(); i++) { inProfile[i] = false; }
+            };
             public void accept(StxField o, String i) {
                 int index = inMessage.indexOf(i);
-                if (errors != null && index == -1) {
+                if ( index == -1) {
                     errors.add(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, o.getLeft(),"Field " +
                             o.getName() + " of out-message is " +
                             "associated to a field (" + i + ") in in-message that does not exist", inMessage.getLeft()));
                 }
-                o.setType(inMessage.fields.get(index).getType());
-                fields.set(index, o);
+                else {
+                    inProfile[index] = true;
+                    o.setType(inMessage.fields.get(index).getType());
+                    fields.set(index, o);
+                }
             }
         }
         public void complete(List<AvatarFromSysMLError> errors) {
@@ -527,7 +536,19 @@ public class AvatarFromSysMLSyntax {
                     return;
                 }
             if (fieldMap.isEmpty()) for (StxField f: inMessage.fields) fields.add(f);
-            else fieldMap.forEach(new Complete(errors));
+            else {
+                Complete cmp = new Complete(errors);
+                fieldMap.forEach(cmp);
+                boolean[] inProfile = cmp.getInProfile();
+                for(int i =0; i < inProfile.length; i++)
+                    if (! inProfile[i]) {
+                        errors.add(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, getLeft(),
+                            "out-message has no field associated to in-message field " + inMessage.getFieldName(i) + " --> field added",
+                                inMessage.getLeft()));
+                        fields.set(i, new StxField(inMessage.getFieldName(i),inMessage.getFieldType(i)));
+                    }
+            }
+
             channel = inMessage.channel;
             if (channel == null)
                 if (errors != null) {
diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
index d015a8dd46d175547c1a50e96d0f18d81d0f1ebf..e11ccec9f9dd5b9ec87f232384e052668660c5ca 100644
--- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
+++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
@@ -62,6 +62,7 @@ parser code {:
     private StringBuffer stringAcc = new StringBuffer();
     private ArrayList<AvatarFromSysMLError> errors;
     private void addError(AvatarFromSysMLError _err) { errors.add(_err); }
+    public ArrayList<AvatarFromSysMLError> getErrors() { return errors; }
     private StxStructure theStructure;
     private HashMap<String,StxDataType> dataTypeMap;
     private StxRelation theRelation;