diff --git a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/SequenceDiagramFreeformLayoutProvider.java b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/SequenceDiagramFreeformLayoutProvider.java
index 8966de66e5be34ccce468154d3716c156fe92f21..b0d2fc8d6b9cf9a3815ed2a671e765ab8977a39a 100644
--- a/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/SequenceDiagramFreeformLayoutProvider.java
+++ b/plugins/org.etsi.mts.tdl.graphical.viewpoint/src/org/etsi/mts/tdl/graphical/sirius/layout/SequenceDiagramFreeformLayoutProvider.java
@@ -27,14 +27,13 @@ import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
 import org.eclipse.gmf.runtime.diagram.ui.requests.ZOrderRequest;
 import org.eclipse.gmf.runtime.diagram.ui.services.layout.AbstractLayoutEditPartProvider;
 import org.eclipse.sirius.diagram.DDiagram;
-import org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramUtil;
 import org.eclipse.sirius.diagram.description.DiagramDescription;
 import org.eclipse.sirius.diagram.ui.edit.api.part.IDDiagramEditPart;
+import org.eclipse.sirius.diagram.ui.tools.api.layout.provider.DefaultLayoutProvider;
 import org.eclipse.sirius.diagram.ui.tools.api.layout.provider.LayoutProvider;
 import org.eclipse.sirius.ext.base.Option;
 import org.eclipse.sirius.viewpoint.DMappingBased;
 import org.eclipse.sirius.viewpoint.DSemanticDecorator;
-import org.eclipse.sirius.viewpoint.DView;
 import org.eclipse.sirius.viewpoint.description.RepresentationElementMapping;
 import org.eclipse.sirius.viewpoint.description.Viewpoint;
 import org.etsi.mts.tdl.ComponentInstance;
@@ -46,7 +45,7 @@ import org.etsi.mts.tdl.graphical.sirius.part.Util;
 
 public class SequenceDiagramFreeformLayoutProvider implements LayoutProvider {
 
-	private static final String VIEWPOINT_ID = "org.etsi.mts.tdl";
+	public static final String VIEWPOINT_ID = "org.etsi.mts.tdl";
 	public static final String TEST_DESCRIPTION_DIAGRAM_ID = "TestDescriptionDiagram";
 
 	public static final String TIME_LABEL_MAPPING_ID = "timeLabel",
@@ -55,26 +54,17 @@ public class SequenceDiagramFreeformLayoutProvider implements LayoutProvider {
 			COMPONENT_INSTANCE_MAPPING_ID = "componentInstance",
 			COMBINED_BEHAVIOUR_MAPPING_ID = "combinedBehaviour",
 			BLOCK_MAPPING_ID = "block";
+	
+	private SequenceFreeformLayoutEditPartProvider layoutProvider = new SequenceFreeformLayoutEditPartProvider();
 
 	@Override
 	public boolean provides(IGraphicalEditPart container) {
-		if (container instanceof IDDiagramEditPart) {
-			Option<DDiagram> diagram = ((IDDiagramEditPart) container).resolveDDiagram();
-			if (diagram.some()) {
-				DDiagram d = diagram.get();
-				DiagramDescription dDesc = d.getDescription();
-				Viewpoint vp = (Viewpoint) dDesc.eContainer();
-				if (VIEWPOINT_ID.equals(vp.getName()) &&
-						TEST_DESCRIPTION_DIAGRAM_ID.equals(dDesc.getName()))
-					return true;
-			}
-		}
-		return false;
+		return layoutProvider.provides(container);
 	}
 
 	@Override
 	public AbstractLayoutEditPartProvider getLayoutNodeProvider(IGraphicalEditPart container) {
-		return new SequenceFreeformLayoutEditPartProvider();
+		return layoutProvider;
 	}
 
 	@Override
@@ -96,12 +86,51 @@ public class SequenceDiagramFreeformLayoutProvider implements LayoutProvider {
 class SequenceFreeformLayoutEditPartProvider extends TdlAbstractLayoutEditPartProvider {
 	
 	private static final int MARGIN = 20;
+	
+	private boolean defaultLayout = false;
+
+	public boolean provides(IGraphicalEditPart container) {
+		if (defaultLayout)
+			return false;
+		if (container instanceof IDDiagramEditPart) {
+			Option<DDiagram> diagram = ((IDDiagramEditPart) container).resolveDDiagram();
+			if (diagram.some()) {
+				DDiagram d = diagram.get();
+				DiagramDescription dDesc = d.getDescription();
+				Viewpoint vp = (Viewpoint) dDesc.eContainer();
+				if (SequenceDiagramFreeformLayoutProvider.VIEWPOINT_ID.equals(vp.getName()) &&
+						SequenceDiagramFreeformLayoutProvider.TEST_DESCRIPTION_DIAGRAM_ID.equals(dDesc.getName()))
+					return true;
+			}
+		}
+		return false;
+	}
 
 	@Override
 	public Command layoutEditParts(List selectedObjects, IAdaptable layoutHint) {
 		
+		Command defaultCommand = null;
+		if (!defaultLayout) {
+			try {
+				defaultLayout = true;
+				
+				EditPart editPart = (EditPart) selectedObjects.get(0);
+				while (!(editPart instanceof IDDiagramEditPart))
+					editPart = (EditPart) editPart.getParent();
+
+				DefaultLayoutProvider defaultProvider = new DefaultLayoutProvider();
+				defaultCommand = defaultProvider.layoutEditParts((IGraphicalEditPart)editPart, layoutHint);
+				
+			} finally {
+				defaultLayout = false;
+			}
+		}
+		
 		CompoundCommand cc = new CompoundCommand();
 		
+		if (defaultCommand != null)
+			cc.add(defaultCommand);
+		
 		Map<IGraphicalEditPart, List<Rectangle>> attachmentLocations = new Hashtable<IGraphicalEditPart, List<Rectangle>>();
 
         double scale = 0;
@@ -122,8 +151,8 @@ class SequenceFreeformLayoutEditPartProvider extends TdlAbstractLayoutEditPartPr
 				continue;
 			RepresentationElementMapping mapping = ((DMappingBased)dElement).getMapping();
 			
-			if (mapping.getName().equals(SequenceDiagramFreeformLayoutProvider.TIME_CONSTRAINT_MAPPING_ID) ||
-					mapping.getName().equals(SequenceDiagramFreeformLayoutProvider.TIME_LABEL_MAPPING_ID)) {
+			if (mapping.getName().equals(SequenceDiagramFreeformLayoutProvider.TIME_CONSTRAINT_MAPPING_ID)
+					|| mapping.getName().equals(SequenceDiagramFreeformLayoutProvider.TIME_LABEL_MAPPING_ID)) {
 				
 				IGraphicalEditPart anchorEditPart = (IGraphicalEditPart) ((ConnectionEditPart) ((GraphicalEditPart) editPart)
 						.getTargetConnections().get(0)).getSource();