diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
index 68d72a945e76867ebb86ec6675b8da5cab5ae770..4f1573a6f3a68169e7b64e1132d2125aa05d8318 100644
--- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
@@ -39,6 +39,7 @@ package avatartranslator.tosysmlv2;
 
 import avatartranslator.*;
 
+import static avatartranslator.AvatarTransition.*;
 import static avatartranslator.tosysmlv2.Avatar2SysMLNames.*;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -52,20 +53,6 @@ public class Avatar2SysML {
     /**
      * Memorized while declaring channels, to be reused for generating states
      */
-    class ChannelInfo {
-        private String name;
-        private String msgtype;
-        private ArrayList<String> profile;
-       ChannelInfo(String _name, String _msgtype) {
-            name = _name;
-            msgtype = _msgtype;
-            profile = new ArrayList<String>();
-        }
-        public void addField(String _fieldName){ profile.add(_fieldName); }
-        public String getName(){ return name; }
-        public String getMessageType(){ return msgtype; }
-        public List<String> getProfile(){ return profile; }
-    }
     class SignalInfo {
         private String name;
         private String msgtype;
@@ -135,11 +122,14 @@ public class Avatar2SysML {
     int indentStepSize = 4;
     String indent = "";
     String header = "package AvatarInstance {\n" +
+        indentStep + "import ScalarValues::String;\n" +
         indentStep + "import ScalarValues::Positive;\n" +
         indentStep + "import ScalarValues::Integer;\n" +
         indentStep + "import ScalarValues::Boolean;\n" +
+        indentStep + "import ScalarValues::Real;\n" +
         indentStep + "import AvatarBlockTypes::*;\n" +
-        indentStep + "import AvatarCommunication::*;\n\n";
+        indentStep + "import AvatarCommunication::*;\n";
+
 
     StringBuffer avatar2SysML() {
         signalMap.clear();
@@ -153,7 +143,7 @@ public class Avatar2SysML {
         communications2SysML();
         blocks2SysML();
         avsysml.append(blockLinks);
-        avsysml.append("}\n\n");
+        avsysml.append("}\n");
         return avsysml;
     }
     void communications2SysML(){
@@ -161,8 +151,9 @@ public class Avatar2SysML {
         int bfiforelNumber = 0;
         int syncrelNumber = 0;
 
-        avsysml.append(indent + "// COMMUNICATIONS $$$$$$$$$$$$$$$$$$$$$$$$\n\n");
+        if (avspec.getRelations() == null || avspec.getRelations().size() == 0) return;
 
+        avsysml.append("\n" + indent + "// COMMUNICATIONS $$$$$$$$$$$$$$$$$$$$$$$$\n");
         for(AvatarRelation ar: avspec.getRelations()) {
 
             // parameters depending on relation type ==============
@@ -226,11 +217,11 @@ public class Avatar2SysML {
 
             // relation declaration --------------------
 
-            avsysml.append(indent + "// Relation " + relationSYSMLname + "=============\n");
+            avsysml.append("\n" + indent + "// Relation " + relationSYSMLname + "=============\n");
             avsysml.append(indent + "part " +  relationSYSMLname + ": " + relationConstructor);
             if(relationParameters != null)
                  avsysml.append(" = " + relationConstructor + relationParameters);
-            avsysml.append(";\n\n");
+            avsysml.append(";\n");
 
             // Channels and associated Messages declarations ----------------
 
@@ -255,16 +246,16 @@ public class Avatar2SysML {
 
                 // Channel declaration .........................
 
-                avsysml.append(indent + "// Channel " + channelName + "-------------\n");
+                avsysml.append("\n" + indent + "// Channel " + channelName + "-------------\n");
                 avsysml.append(indent + "part " + channelSYSMLname + " : " + channelConstructor + " = "
                         + channelConstructor + "(relation = " + relationSYSMLname + ");\n");
                 avsysml.append(indent + "bind " + blk1SysMLname + "." + sig1SYSMLname + " = " + channelSYSMLname + ";\n");
-                avsysml.append(indent + "bind " + blk2SysMLname + "." + sig2SYSMLname + " = " + channelSYSMLname + ";\n\n");
+                avsysml.append(indent + "bind " + blk2SysMLname + "." + sig2SYSMLname + " = " + channelSYSMLname + ";\n");
 
                 // Message declaration .........................
 
-                StringBuffer msg1Buf = new StringBuffer(indent + "// Message of signal " + sig1SYSMLname + "----------\n");
-                StringBuffer msg2Buf = new StringBuffer(indent + "// Message of signal " + sig2SYSMLname + "----------\n");
+                StringBuffer msg1Buf = new StringBuffer(indent + "// Message of signal " + blk1SysMLname + "." + sig1SYSMLname + "----------\n");
+                StringBuffer msg2Buf = new StringBuffer(indent + "// Message of signal " + blk2SysMLname  + sig2SYSMLname + "----------\n");
                 if (in2out) {
                     msg1Buf.append(indent + "part def " + message2SYSMLname + " :> '#DataMessage' {\n");
                     msg2Buf.append(indent + "part def " + message1SYSMLname + " :> " + message2SYSMLname + "{\n");
@@ -291,7 +282,7 @@ public class Avatar2SysML {
                 }
                 indent = indent.substring(indentStepSize);
                 msg1Buf.append(indent + "}\n");
-                msg2Buf.append(indent + "}\n\n");
+                msg2Buf.append(indent + "}\n");
 
                 avsysml.append(msg1Buf);
                 avsysml.append(msg2Buf);
@@ -360,31 +351,39 @@ public class Avatar2SysML {
         blocklink();
 
         // block header --------------------
-        avsysml.append(indent + "// Block " + blockSYSMLname + "=============\n");
+        avsysml.append("\n" + indent + "// Block " + blockSYSMLname + "=============\n");
         avsysml.append(indent + "part " + blockSYSMLname + " : '#AvatarBlock' {\n");
         indent += indentStep;
 
         // attributes --------------------
-        avsysml.append(indent + "// Attributes ---------------------\n");
-        for (AvatarAttribute aa : block.getAttributes()) attribute2SysML(aa);
-        avsysml.append("\n");
+        if (block.getAttributes() != null && block.getAttributes().size() != 0) {
+            avsysml.append("\n" + indent + "// Attributes ---------------------\n");
+            for (AvatarAttribute aa : block.getAttributes()) attribute2SysML(aa);
+        }
         // methods --------------------
-        avsysml.append(indent + "// Methods ---------------------\n");
-        for (AvatarMethod am : block.getMethods()) method2SysML(am);
-        avsysml.append("\n");
-        avsysml.append(indent + "// Signals ---------------------\n");
-        for (AvatarSignal as : block.getSignals()) signal2SysML(as);
-        avsysml.append("\n");
+        if (block.getMethods() != null && block.getMethods().size() != 0) {
+            avsysml.append("\n" + indent + "// Methods ---------------------\n");
+            for (AvatarMethod am : block.getMethods()) method2SysML(am);
+        }
+        if (block.getSignals() != null && block.getSignals().size() != 0) {
+            avsysml.append("\n" + indent + "// Signals ---------------------\n");
+            for (AvatarSignal as : block.getSignals()) signal2SysML(as);
+        }
         // state-machine --------------------
+        avsysml.append("\n" + indent + "// state-machine -------------------\n");
         statemachine2SysML(block.getStateMachine());
-        avsysml.append("\n");
         // timers -------------------
-        avsysml.append(indent + "// Timers ---------------------\n");
-        for(AvatarAttribute timer: timerList) { timer2SysML(timer); }
+        if (timerList != null && timerList.size() != 0) {
+            avsysml.append("\n" + indent + "// Timers ---------------------\n");
+            for (AvatarAttribute timer : timerList) timer2SysML(timer);
+        }
         // sub-blocks -------------------
-        avsysml.append(indent + "// Sub-Blocks ---------------------\n");
-        for(AvatarBlock blk: avspec.getListOfBlocks()) { if (blk.getFather() == block) block2SysML(blk); }
-
+        List<AvatarBlock> subBlockList = new ArrayList<AvatarBlock>();
+        for(AvatarBlock blk: avspec.getListOfBlocks()) { if (blk.getFather() == block) subBlockList.add(blk); }
+        if (subBlockList != null && subBlockList.size() != 0) {
+            avsysml.append("\n" + indent + "// Sub-Blocks øøøøøøøøøøøøøøøøøøøøøøø\n");
+            for (AvatarBlock blk : subBlockList) if (blk.getFather() == block) block2SysML(blk);
+        }
         indent = indent.substring(indentStepSize);
         avsysml.append(indent + "}\n");
         unchainBlock();
@@ -392,7 +391,7 @@ public class Avatar2SysML {
 
     // handling all blocks
     void blocks2SysML(){
-        avsysml.append(indent + "// BLOCKS $$$$$$$$$$$$$$$$$$$$$$$$\n\n");
+        avsysml.append("\n" + indent + "// BLOCKS $$$$$$$$$$$$$$$$$$$$$$$$\n");
         for(AvatarBlock block: avspec.getListOfBlocks())
             if (block.getFather() == null) block2SysML(block);
     }
@@ -409,7 +408,7 @@ public class Avatar2SysML {
         avsysml.append(indent + "part " + timerblockname + ": '#AvatarTimer';\n");
         avsysml.append(indent + "bind " + timerblockname + ".set = " + settimername + ";\n");
         avsysml.append(indent + "bind " + timerblockname + ".reset = " + resettimername + ";\n");
-        avsysml.append(indent + "bind " + timerblockname + ".expire = " + expiretimername + ";\n\n");
+        avsysml.append(indent + "bind " + timerblockname + ".expire = " + expiretimername + ";\n");
     }
     Boolean stopState;
     void statemachine2SysML(AvatarStateMachine asm) {
@@ -460,8 +459,7 @@ public class Avatar2SysML {
             stateList.add(asme);
             stateMap.put(asme, stateinfo);
         }
-        avsysml.append(indent + "// state-machine description +++++\n" +
-                        indent + "exhibit state '@statemachine' : '#AvatarStateMachine' {\n\n");
+        avsysml.append(indent + "exhibit state '@statemachine' : '#AvatarStateMachine' {\n");
         indent += indentStep;
         // generate SysML states with associated transitions
         stopState = false;
@@ -483,15 +481,15 @@ public class Avatar2SysML {
         // State Description, depending on state type
 
         if(asme instanceof AvatarState){
-            avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarStandardState'");
+            avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarStandardState'");
             if (requests.equals(""))
-                avsysml.append(";\n\n");
+                avsysml.append(";\n");
             else
-                avsysml.append(" = '#AvatarStandardState'(\n" + requests + indent + ");\n\n");
+                avsysml.append(" = '#AvatarStandardState'(\n" + requests + indent + ");\n");
         } else
 
         if(asme instanceof AvatarRandom){
-            avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarRandomState' = '#AvatarRandomState'(\n");
+            avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarRandomState' = '#AvatarRandomState'(\n");
             if (!requests.equals("")) avsysml.append(requests);
             indent += indentStep;
             avsysml.append(indent + "state_action = '#Assignment'(\n");
@@ -501,11 +499,11 @@ public class Avatar2SysML {
             indent = indent.substring(indentStepSize);
             avsysml.append(indent + ")\n");
             indent = indent.substring(indentStepSize);
-            avsysml.append(indent + ");\n\n");
+            avsysml.append(indent + ");\n");
         } else
 
         if(asme instanceof AvatarQueryOnSignal){
-            avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarCountState' = '#AvatarCountState'(\n");
+            avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarCountState' = '#AvatarCountState'(\n");
             if (!requests.equals("")) avsysml.append(requests);
             indent += indentStep;
             avsysml.append(indent + "state_action = '#Assignment'(\n");
@@ -515,61 +513,61 @@ public class Avatar2SysML {
             indent = indent.substring(indentStepSize);
             avsysml.append(indent + ")\n");
             indent = indent.substring(indentStepSize);
-            avsysml.append(indent + ");\n\n");
+            avsysml.append(indent + ");\n");
        } else
 
         if(asme instanceof AvatarActionOnSignal){
             if(((AvatarActionOnSignal)asme).isSending()) {
-                avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarSendState'");
+                avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarSendState'");
                 if (requests.equals(""))
-                    avsysml.append(";\n\n");
+                    avsysml.append(";\n");
                 else
-                    avsysml.append(" = '#AvatarSendState'(\n" + requests + indent + ");\n\n");
+                    avsysml.append(" = '#AvatarSendState'(\n" + requests + indent + ");\n");
             } else {
-                avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarReceiveState'");
+                avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarReceiveState'");
                 if (requests.equals(""))
-                    avsysml.append(";\n\n");
+                    avsysml.append(";\n");
                 else
-                    avsysml.append(" = '#AvatarReceiveState'(\n" + requests + indent + ");\n\n");
+                    avsysml.append(" = '#AvatarReceiveState'(\n" + requests + indent + ");\n");
             }
         } else
 
         if(asme instanceof AvatarStartState){
-            avsysml.append(indent + "entry action " + stateMap.get(asme).getName() + " :'#AvatarStartState'");
+            avsysml.append("\n" + indent + "entry action " + stateMap.get(asme).getName() + " :'#AvatarStartState'");
             if (requests.equals(""))
-                avsysml.append(";\n\n");
+                avsysml.append(";\n");
             else
-                avsysml.append(" = '#AvatarStartState'(\n" + requests + indent + ");\n\n");
+                avsysml.append(" = '#AvatarStartState'(\n" + requests + indent + ");\n");
         } else
 
         if(asme instanceof AvatarStopState){
             if(! stopState)
-                avsysml.append(indent + "exit action " + stateMap.get(asme).getName() + " :'#AvatarStopState';\n\n");
+                avsysml.append("\n" + indent + "exit action " + stateMap.get(asme).getName() + " :'#AvatarStopState';\n");
             stopState = true;
         } else
 
         if(asme instanceof AvatarSetTimer){
-            avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarSetTimerState'");
+            avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarSetTimerState'");
             if (requests.equals(""))
-                avsysml.append(";\n\n");
+                avsysml.append(";\n");
             else
-                avsysml.append(" = '#AvatarSetTimerState'(\n" + requests + indent + ");\n\n");
+                avsysml.append(" = '#AvatarSetTimerState'(\n" + requests + indent + ");\n");
         } else
 
         if(asme instanceof AvatarResetTimer){
-            avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarResetTimerState'");
+            avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarResetTimerState'");
             if (requests.equals(""))
-                avsysml.append(";\n\n");
+                avsysml.append(";\n");
             else
-                avsysml.append(" = '#AvatarResetTimerState'(\n" + requests + indent + ");\n\n");
+                avsysml.append(" = '#AvatarResetTimerState'(\n" + requests + indent + ");\n");
         } else
 
         if(asme instanceof AvatarExpireTimer){
-            avsysml.append(indent + "state " + stateMap.get(asme).getName() + " : '#AvatarExpireTimerState'");
+            avsysml.append("\n" + indent + "state " + stateMap.get(asme).getName() + " : '#AvatarExpireTimerState'");
             if (requests.equals(""))
-                avsysml.append(";\n\n");
+                avsysml.append(";\n");
             else
-                avsysml.append(" = '#AvatarExpireTimerState'(\n" + requests + indent + ");\n\n");
+                avsysml.append(" = '#AvatarExpireTimerState'(\n" + requests + indent + ");\n");
         }
 
         // Transition descriptions
@@ -583,39 +581,42 @@ public class Avatar2SysML {
 
                 if (((AvatarActionOnSignal)aos).isSending()) {
                     // preComm State
-                    avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n");
+                    avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n");
                     indent += indentStep;
                     avsysml.append(indent + "request =\n");
                     indent += indentStep;
                     avsysml.append(sendRequest2SysML(1, "0", "0", signalinfo, ((AvatarActionOnSignal)aos).getValues()) + "\n");
                     indent = indent.substring(2 * indentStepSize);
-                    avsysml.append(indent + ");\n\n");
+                    avsysml.append(indent + ");\n");
                     // its transition
-                    avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() +
-                            " then " + stateinfo.getName() + ";\n\n");
+                    avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() +
+                            " then " + stateinfo.getName() +
+                            endTransition(0,"","", 1));
                 } else {
-                    avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n");
+                    avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n");
                     indent += indentStep;
                     avsysml.append(indent + "request =\n");
                     indent += indentStep;
                     avsysml.append(receiveRequest2SysML(1, "0", "0", signalinfo) + "\n");
                     indent = indent.substring(2 * indentStepSize);
-                    avsysml.append(indent + ");\n\n");
+                    avsysml.append(indent + ");\n");
                     // its transition
-                    avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n");
+                    avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n");
                     indent += indentStep;
                     String doAction = receiveActions2SysML(signalinfo, ((AvatarActionOnSignal)aos).getValues());
                     if (doAction.length() == 0)
-                        avsysml.append(indent + "then " + stateinfo.getName() + ";\n\n");
+                        avsysml.append(indent + "then " + stateinfo.getName() +
+                                endTransition(0,"","", 1));
                     else {
                         avsysml.append(doAction);
-                        avsysml.append(" then " + stateinfo.getName() + ";\n\n");
+                        avsysml.append(" then " + stateinfo.getName() +
+                                endTransition(0,"","", 1));
                     }
                     indent = indent.substring(indentStepSize);
                 }
             } else if (aos instanceof AvatarSetTimer) {
                     // preComm State
-                    avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n");
+                    avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n");
                     indent += indentStep;
                     avsysml.append(indent + "request =\n");
                     indent += indentStep;
@@ -623,42 +624,63 @@ public class Avatar2SysML {
                             setTimerChannelSysMLname(((AvatarSetTimer) aos).getTimer().getName()),
                             ((AvatarSetTimer)aos).getTimerValue()) + "\n");
                     indent = indent.substring(2 * indentStepSize);
-                    avsysml.append(indent + ");\n\n");
+                    avsysml.append(indent + ");\n");
                     // its transition
-                    avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() +
-                            " then " + stateinfo.getName() + ";\n\n");
+                    avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() +
+                            " then " + stateinfo.getName() +
+                            endTransition(0,"","", 1));
 
             } else if (aos instanceof AvatarResetTimer) {
                     // preComm State
-                    avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n");
+                    avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreSendState' = '#AvatarPreSendState' (\n");
                     indent += indentStep;
                     avsysml.append(indent + "request =\n");
                     indent += indentStep;
                     avsysml.append(resetTimerRequest2SysML(1, "0", "0",
                             resetTimerChannelSysMLname(((AvatarResetTimer) aos).getTimer().getName())) + "\n");
                     indent = indent.substring(2 * indentStepSize);
-                    avsysml.append(indent + ");\n\n");
+                    avsysml.append(indent + ");\n");
                     // its transition
-                    avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() +
-                            " then " + stateinfo.getName() + ";\n\n");
+                    avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() +
+                            " then " + stateinfo.getName() +
+                            endTransition(0,"","", 1));
 
             } else if (aos instanceof AvatarExpireTimer) {
-                    avsysml.append(indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n");
+                    avsysml.append("\n" + indent + "state " + stateinfo.getPreName() + " : '#AvatarPreReceiveState' = '#AvatarPreReceiveState' (\n");
                     indent += indentStep;
                     avsysml.append(indent + "request =\n");
                     indent += indentStep;
                     avsysml.append(expireTimerRequest2SysML(1, "0", "0",
                             expireTimerChannelSysMLname(((AvatarExpireTimer) aos).getTimer().getName())) + "\n");
                     indent = indent.substring(2 * indentStepSize);
-                    avsysml.append(indent + ");\n\n");
+                    avsysml.append(indent + ");\n");
                     // its transition
-                    avsysml.append(indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n");
+                    avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() +
+                            endTransition(0,"","", 1));
                     indent += indentStep;
-                    avsysml.append(indent + "then " + stateinfo.getName() + ";\n\n");
+                    avsysml.append(indent + "then " + stateinfo.getName() + ";\n");
                     indent = indent.substring(indentStepSize);
             }
         }
     }
+
+    String endTransition(int delayDistributionLaw, String delayExtra1, String delayExtra2, double probability){
+        if (delayDistributionLaw == DELAY_UNIFORM_LAW && probability == 1) return ";\n";
+        StringBuffer result = new StringBuffer(" {\n");
+        indent += indentStep;
+        result.append(indent + "attribute delayDistributionLaw : String = \"" + DISTRIBUTION_LAWS[delayDistributionLaw] + "\";\n");
+        if (probability != 1)
+            result.append(indent + "attribute weight : Real = " + probability + ";\n");
+        if (NB_OF_EXTRA_ATTRIBUTES[delayDistributionLaw] > 0)
+            result.append(indent + "attribute '" + LABELS_OF_EXTRA_ATTRIBUTES_1[delayDistributionLaw] + "' : String = \""
+                + delayExtra1 + "\";\n");
+        if (NB_OF_EXTRA_ATTRIBUTES[delayDistributionLaw] > 1)
+            result.append(indent + "attribute '" + LABELS_OF_EXTRA_ATTRIBUTES_2[delayDistributionLaw] + "' : String = \""
+                + delayExtra2 + "\";\n");
+        indent = indent.substring(indentStepSize);
+        result.append(indent + "}\n");
+        return result.toString();
+    }
     void transitionsAndRequests(String srcName, List<AvatarStateMachineElement> nexts, String poolName) {
         requirePreCom.clear();
         sysMLtransitions.delete(0, sysMLtransitions.length());
@@ -777,17 +799,19 @@ public class Avatar2SysML {
             doAction = transitionActions2SysM(at.getActions());
         indent = indent.substring(indentStepSize);
 
-        sysMLtransitions.append(indent + "transition : '#AvatarTransition' first " + srcName);
+        sysMLtransitions.append("\n" + indent + "transition : '#AvatarTransition' first " + srcName);
         if(index > 0)
             sysMLtransitions.append(" if response.transition_index == " + index + "\n");
         else
             sysMLtransitions.append("\n");
         indent += indentStep;
         if (doAction.length() == 0)
-            sysMLtransitions.append(indent + "then " + tgtName + ";\n\n");
+            sysMLtransitions.append(indent + "then " + tgtName +
+                    endTransition(at.getDelayDistributionLaw(), at.getDelayExtra1(), at.getDelayExtra2(), at.getProbability()));
         else {
             sysMLtransitions.append(doAction);
-            sysMLtransitions.append(" then " + tgtName + ";\n\n");
+            sysMLtransitions.append(" then " + tgtName +
+                    endTransition(at.getDelayDistributionLaw(),at.getDelayExtra1(),at.getDelayExtra2(), at.getProbability()));
         }
         indent += indentStep;
     }
@@ -818,8 +842,9 @@ public class Avatar2SysML {
     String sendRequest2SysML(int index, String min, String max, SignalInfo chinfo, List<String> values) {
         StringBuffer result = new StringBuffer(indent + "'#SendRequest'(\n");
         indent += indentStep;
-        result.append(indent + "transition_index= " + index + ",\n" +
-                indent + "channel= " + chinfo.getName() + ",\n");
+        if (index != 1)
+            result.append(indent + "transition_index= " + index + ",\n");
+        result.append(indent + "channel= " + chinfo.getName() + ",\n");
         if (max.equals("0")) {
             if (!min.equals("0"))
                 result.append(indent + "delay= " + min + ",\n");
@@ -846,8 +871,9 @@ public class Avatar2SysML {
     String setTimerRequest2SysML(int index, String min, String max, String chname, String value) {
         StringBuffer result = new StringBuffer(indent + "'#AvatarSetTimerRequest'(\n");
         indent += indentStep;
-        result.append(indent + "transition_index= " + index + ",\n" +
-                indent + "channel= " + chname + ",\n");
+        if (index != 1)
+            result.append(indent + "transition_index= " + index + ",\n");
+        result.append(indent + "channel= " + chname + ",\n");
         if (max.equals("0")) {
             if (!min.equals("0"))
                 result.append(indent + "delay= " + min + ",\n");
@@ -866,8 +892,9 @@ public class Avatar2SysML {
     String resetTimerRequest2SysML(int index, String min, String max, String chname) {
         StringBuffer result = new StringBuffer(indent + "'#AvatarResetTimerRequest'(\n");
         indent += indentStep;
-        result.append(indent + "transition_index= " + index + ",\n" +
-                indent + "channel= " + chname + ",\n");
+        if (index != 1)
+            result.append(indent + "transition_index= " + index + ",\n");
+        result.append(indent + "channel= " + chname + ",\n");
         if (max.equals("0")) {
             if (!min.equals("0"))
                 result.append(indent + "delay= " + min + ",\n");
@@ -887,8 +914,9 @@ public class Avatar2SysML {
     String receiveRequest2SysML(int index, String min, String max, SignalInfo chinfo) {
         StringBuffer result = new StringBuffer(indent + "'#ReceiveRequest'(\n");
         indent += indentStep;
-        result.append(indent + "transition_index= " + index + ",\n" +
-                indent + "channel= " + chinfo.getName());
+        if (index != 1)
+            result.append(indent + "transition_index= " + index + ",\n");
+        result.append(indent + "channel= " + chinfo.getName());
         if (max.equals("0"))
             if (!min.equals("0"))
                 result.append(",\n" + indent + "delay= " + min + "\n");
@@ -905,8 +933,9 @@ public class Avatar2SysML {
     String expireTimerRequest2SysML(int index, String min, String max, String chname) {
         StringBuffer result = new StringBuffer(indent + "'#AvatarExpireTimerRequest'(\n");
         indent += indentStep;
-        result.append(indent + "transition_index= " + index + ",\n" +
-                indent + "channel= " + chname);
+        if (index != 1)
+            result.append(indent + "transition_index= " + index + ",\n");
+        result.append(indent + "channel= " + chname);
         if (max.equals("0"))
             if (!min.equals("0"))
                 result.append(",\n" + indent + "delay= " + min + "\n");
diff --git a/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml b/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml
index 966a1956107b2e33192b7cae69c91b480ebd5b93..353e724216ca354abf4bee313ea8ae661912ef7e 100644
--- a/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml
+++ b/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml
@@ -1,5 +1,5 @@
 // GENERAL TOOLS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    package AvatarGeneral { 
+package AvatarGeneral { 
     import Base::Anything;
     import ScalarValues::Positive;
     import ScalarValues::Integer;