diff --git a/src/tmltranslator/TMLAttribute.java b/src/tmltranslator/TMLAttribute.java
index bf3b5550d1b1f88ae5b9878471f8131d6ef6446b..0eb7ba186aa406a1791ce4c6652d5109fe9ef498 100755
--- a/src/tmltranslator/TMLAttribute.java
+++ b/src/tmltranslator/TMLAttribute.java
@@ -101,7 +101,7 @@ public class TMLAttribute extends DIPLOElement {
     }
     
 		public String toString() {
-    	return name + ":" + type.toString() + "=" + initialValue;
+    	return instanceName + "." + name + ":" + type.toString() + "=" + initialValue;
     }
     
     public boolean hasInitialValue() {
diff --git a/src/tmltranslator/TMLCPTextSpecification.java b/src/tmltranslator/TMLCPTextSpecification.java
index 28574e41c58feae6ffeef79c909067b6d4cf1a0f..c2ee89bdfed6a1f68bdfa961f6132387f8bd030f 100755
--- a/src/tmltranslator/TMLCPTextSpecification.java
+++ b/src/tmltranslator/TMLCPTextSpecification.java
@@ -103,6 +103,8 @@ public class TMLCPTextSpecification {
 	private String beginArray[] = {"TASK", "FOR", "IF", "ELSE", "ORIF", "SELECTEVT", "CASE", "RAND", "CASERAND", "RANDOMSEQ", "SEQ"};
 	private String endArray[] = {"ENDTASK", "ENDFOR", "ENDIF", "ELSE", "ORIF", "ENDSELECTEVT", "ENDCASE", "ENDRAND", "ENDCASERAND", "ENDRANDOMSEQ", "ENDSEQ"};	*/
 
+	private static String SEQUENCE_DIAGRAM = "SEQUENCE";
+
 	private String nextElem;	//used to produce the TML text
 	private String currentElem;	//used to produce the TML text
 	private String currentJunc = "junction";	//used to produce the TML text
@@ -230,16 +232,24 @@ public class TMLCPTextSpecification {
 		//Generating code for Sequence Diagrams
 		ArrayList<TMLCPSequenceDiagram> listSDs = tmlcp.getCPSequenceDiagrams();
 		for( TMLCPSequenceDiagram seqDiag: listSDs )	{
-			sb += "SEQUENCE " + seqDiag.getName() + CR2 + TAB;
+			sb += SEQUENCE_DIAGRAM + SP + seqDiag.getName() + CR2 + TAB;
 			ArrayList<tmltranslator.tmlcp.TMLSDInstance> listInstances = seqDiag.getInstances();
+			if( seqDiag.getAttributes().size() > 0 )	{
+				for( TMLAttribute attribute: seqDiag.getAttributes() )	{
+					sb += attribute.toString() + CR + TAB;
+				}
+				sb += CR;
+			}
 			for( tmltranslator.tmlcp.TMLSDInstance inst: listInstances )	{
-				sb += inst.getType() + " " + inst.getName() + CR + TAB;
-				ArrayList<TMLSDEvent> listEvents = inst.getEvents();
-				Collections.sort( listEvents ); 			
-				for( TMLSDEvent event: listEvents )	{	
-					sb += TAB + event.toString() + CR;
+				sb += TAB + inst.getType() + " " + inst.getName() + CR;
+				if( inst.getEvents().size() > 0 )	{
+					ArrayList<TMLSDEvent> listEvents = inst.getEvents();
+					Collections.sort( listEvents ); 			
+					for( TMLSDEvent event: listEvents )	{	
+						sb += TAB2 + event.toString() + CR;
+					}
+					sb += CR;
 				}
-				sb += CR + TAB;
 			}
 		sb += END + CR2;
 		}
diff --git a/src/tmltranslator/tmlcp/TMLSDEvent.java b/src/tmltranslator/tmlcp/TMLSDEvent.java
index 6d73f504ec3b245d8932949c6da170583dd9062c..75a7a70c6661c78a7dfdc75921568167e62c5c0c 100755
--- a/src/tmltranslator/tmlcp/TMLSDEvent.java
+++ b/src/tmltranslator/tmlcp/TMLSDEvent.java
@@ -54,14 +54,19 @@ import myutil.*;
 
 public class TMLSDEvent implements Comparable<TMLSDEvent>  {
 
-    private final static String MESSAGE_EVENT = "message";
-    private final static String ACTION_EVENT = "action";
-    private final static String ERROR = "ERROR IN EVENT";
-    private String type;
+    public final static int SEND_MESSAGE_EVENT = 0;
+    public final static int RECEIVE_MESSAGE_EVENT = 1;
+    public final static int ACTION_EVENT = 2;
+
+    private final static String SEND_MESSAGE_LABEL = "SND:";
+    private final static String RECEIVE_MESSAGE_LABEL = "RCV:";
+    private final static String ACTION_LABEL = "ACT:";
+    private final static String ERROR = "ERROR_IN_EVENT";
+    private int type;
     private int yCoord;
     private Object ref;
 
-    public TMLSDEvent( Object _referenceObject, String _type, int _yCoord ) {
+    public TMLSDEvent( Object _referenceObject, int _type, int _yCoord ) {
         this.ref = _referenceObject;
         this.yCoord = _yCoord;
         this.type = _type;
@@ -88,14 +93,21 @@ public class TMLSDEvent implements Comparable<TMLSDEvent>  {
       };*/
 
     @Override public String toString()  {
-        if( type.equals( MESSAGE_EVENT ) )      {
-            TMLSDMessage msg = ( (TMLSDMessage) ref);
-            return msg.toString();
-        }
-        if( type.equals( ACTION_EVENT ) )       {
-            TMLSDAction action = ( (TMLSDAction) ref);
-            return action.toString();
-        }
-        return ERROR;
+
+			TMLSDMessage msg;
+
+			switch( type )	{
+				case 0:	//send message
+            msg = ( (TMLSDMessage) ref);
+        		return SEND_MESSAGE_LABEL + msg.toString();
+				case 1:	//receive message
+            msg = ( (TMLSDMessage) ref);
+        		return RECEIVE_MESSAGE_LABEL + msg.toString();
+				case 2:	//action
+     	      TMLSDAction action = ( (TMLSDAction) ref);
+            return ACTION_LABEL + action.toString();
+				default:
+						return ERROR;
+			}
     }
 }       //End of class
diff --git a/src/tmltranslator/tmlcp/TMLSDInstance.java b/src/tmltranslator/tmlcp/TMLSDInstance.java
index bbbad8b6b6163316312d94b7775c64fe6a7cad1e..a96c41de319716c6ea7f75829aa799d8f0104a51 100755
--- a/src/tmltranslator/tmlcp/TMLSDInstance.java
+++ b/src/tmltranslator/tmlcp/TMLSDInstance.java
@@ -57,8 +57,6 @@ import myutil.*;
 
 public class TMLSDInstance extends TMLElement  {
 
-    private final static String MESSAGE_EVENT = "message";
-    private final static String ACTION_EVENT = "action";
     private String type;
     private TMLArchiNode mappedUnit;    //the unit of the architecture where the instance is mapped to
     private ArrayList<TMLAttribute> globalVariables;
@@ -120,7 +118,7 @@ public class TMLSDInstance extends TMLElement  {
     public void addAction( TMLSDAction _action ) {
 	//TraceManager.addDev("SD: Adding action in " + getName() + " nb of events: " + events.size());
         actions.add( _action );
-        events.add( new TMLSDEvent( _action, ACTION_EVENT, _action.getYCoord() ) );
+        events.add( new TMLSDEvent( _action, TMLSDEvent.ACTION_EVENT, _action.getYCoord() ) );
         Collections.sort( events );
     }
 
@@ -132,12 +130,19 @@ public class TMLSDInstance extends TMLElement  {
         return mappedUnit;
     }
 
-    public void addMessage( TMLSDMessage _msg ) {
-	//TraceManager.addDev("SD: Adding message in " + getName()+ " nb of events: " + events.size());
-        messages.add( _msg );
-        int yCoord = ( (TGConnectorMessageTMLSD) _msg.getReferenceObject()).getTGConnectingPointP1().getY();
-        events.add( new TMLSDEvent( _msg, MESSAGE_EVENT, yCoord ) );
-        Collections.sort( events );
+    public void addMessage( TMLSDMessage _msg, int _type ) {
+
+			//TraceManager.addDev("SD: Adding message in " + getName()+ " nb of events: " + events.size());
+			messages.add( _msg );
+			if( _type == TMLSDEvent.SEND_MESSAGE_EVENT )	{
+				int yCoord = ( (TGConnectorMessageTMLSD) _msg.getReferenceObject()).getTGConnectingPointP1().getY();
+  	    events.add( new TMLSDEvent( _msg, TMLSDEvent.SEND_MESSAGE_EVENT, yCoord ) );
+			}
+			if( _type == TMLSDEvent.RECEIVE_MESSAGE_EVENT )	{
+	    	int yCoord = ( (TGConnectorMessageTMLSD) _msg.getReferenceObject()).getTGConnectingPointP2().getY();
+  	    events.add( new TMLSDEvent( _msg, TMLSDEvent.RECEIVE_MESSAGE_EVENT, yCoord ) );
+			}
+			Collections.sort( events );
     }
 
     public void insertInitialValue( String _name, String value ) {
diff --git a/src/ui/GTMLModeling.java b/src/ui/GTMLModeling.java
index 95fb05e567bccf690df6c13b8161e8d351141599..86a6964daa7df228a7dee652c657a8c3739db3b9 100755
--- a/src/ui/GTMLModeling.java
+++ b/src/ui/GTMLModeling.java
@@ -2481,8 +2481,13 @@ public class GTMLModeling  {
                     for( tmltranslator.tmlcp.TMLSDInstance tempInstance: SD.getInstances() )    {
                         if( tempInstance.getName().equals( sender ) )   {
                             TraceManager.addDev( "Adding message " + message.toString() + " to instance " + tempInstance.toString() );
-                            tempInstance.addMessage( message );
-                            break;
+                            tempInstance.addMessage( message, TMLSDEvent.SEND_MESSAGE_EVENT );
+                            //break;
+                        }
+                        if( tempInstance.getName().equals( receiver ) )   {
+                            TraceManager.addDev( "Adding message " + message.toString() + " to instance " + tempInstance.toString() );
+                            tempInstance.addMessage( message, TMLSDEvent.RECEIVE_MESSAGE_EVENT );
+                            //break;
                         }
                     }
                 }