diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
index 6008f15333c0f70b4bfb06ded5a93124fcb1ff8c..3131de23134ca83bd55cbe933b12423a0826263f 100644
--- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
@@ -131,6 +131,7 @@ public class Avatar2SysML {
         stateList.clear();
         avsysml = new StringBuffer(header);
         indent += indentStep;
+        searcCountSignals();;
         communications2SysML();
         blocks2SysML();
         avsysml.append("}\n");
@@ -282,10 +283,12 @@ public class Avatar2SysML {
         }
     }
 
-    void attribute2SysML(AvatarAttribute aa, String prefix){
+    void attribute2SysML(AvatarAttribute aa, String prefix, boolean init) {
         avsysml.append(indent + prefix + "attribute " + attributeSysMLname(aa.getName()) + " : ");
-        if (aa.isInt()) avsysml.append("Integer;\n");
-        else avsysml.append("Boolean;\n");
+        if (aa.isInt()) avsysml.append("Integer");
+        else avsysml.append("Boolean");
+        if (init && aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim() );
+        avsysml.append(";\n");
     }
 
     void method2SysML(AvatarMethod am){
@@ -301,19 +304,24 @@ public class Avatar2SysML {
         if (returnType == null) {
             avsysml.append(indent + "action " + methodSysMLname(am.getName()) +  ": '#AvatarVoidMethod' {\n");
             indent += indentStep;
-            for (AvatarAttribute aa : am.getListOfAttributes()) attribute2SysML(aa, "in ");
+            for (AvatarAttribute aa : am.getListOfAttributes()) attribute2SysML(aa, "in ", false);
             indent = indent.substring(indentStepSize);
             avsysml.append(indent + "}\n");
         } else {
             avsysml.append(indent + "calc " + methodSysMLname(am.getName()) +  ": '#AvatarCalcMethod' {\n");
             indent += indentStep;
-            for (AvatarAttribute aa : am.getListOfAttributes()) attribute2SysML(aa, "in ");
+            for (AvatarAttribute aa : am.getListOfAttributes()) attribute2SysML(aa, "in ", false);
             avsysml.append(indent + "return : " + returnType + ";\n");
             indent = indent.substring(indentStepSize);
             avsysml.append(indent + "}\n");
         }
     }
 
+    void signal2SysML(AvatarSignal as){
+
+        avsysml.append(indent + "part " + signalMap.get(as).getName() + " : " +
+                (fifoSet.contains(as) ? "'#Fifo'" : "'#Channel'") + ";\n");
+    }
     // handling one block
     void block2SysML(AvatarBlock block){
         String blockSYSMLname = blockSysMLname(block.getName());
@@ -324,15 +332,21 @@ public class Avatar2SysML {
         indent += indentStep;
 
         // attributes --------------------
-        for (AvatarAttribute aa : block.getAttributes()) attribute2SysML(aa, "");
+        avsysml.append(indent + "// Attributes ---------------------\n");
+        for (AvatarAttribute aa : block.getAttributes()) attribute2SysML(aa, "", true);
         avsysml.append("\n");
         // 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");
         // state-machine --------------------
         statemachine2SysML(block.getStateMachine());
         avsysml.append("\n");
         // sub-blocks -------------------
+        avsysml.append(indent + "// Sub-Blocks ---------------------\n");
         for(AvatarBlock blk: avspec.getListOfBlocks()) { if (blk.getFather() == block) block2SysML(blk); }
 
         indent = indent.substring(indentStepSize);