diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/BaseElementFeatureContainer.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/BaseElementFeatureContainer.java
index 999e7d0..92e2841 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/BaseElementFeatureContainer.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/BaseElementFeatureContainer.java
@@ -72,7 +72,7 @@
 	@Override
 	public ICustomFeature[] getCustomFeatures(IFeatureProvider fp) {
 		return new ICustomFeature[] {
-			new ShowPropertiesFeature(fp)
+			//new ShowPropertiesFeature(fp)
 		};
 	}
 }
\ No newline at end of file
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
index b7a8efa..aba177c 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
@@ -67,7 +67,6 @@
 					try{
 						ContainerShape container = (ContainerShape) element;
 						// only align when not selected, the move feature of the label will do the job when selected
-						if (!ModelUtil.isElementSelected(getDiagramEditor().getSelectedPictogramElements(), element)) {
 							GraphicsUtil.alignWithShape(
 									(AbstractText) container.getChildren().get(0).getGraphicsAlgorithm(), 
 									container,
@@ -78,7 +77,6 @@
 									preShapeX,
 									preShapeY
 							);
-						}
 					}
 					catch(Exception e){
 						new RuntimeException("Composition of label container is not as expected");
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/flow/AbstractAddFlowFeature.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/flow/AbstractAddFlowFeature.java
index 211bd3d..32ccc28 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/flow/AbstractAddFlowFeature.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/flow/AbstractAddFlowFeature.java
@@ -13,6 +13,7 @@
 package org.eclipse.bpmn2.modeler.core.features.flow;
 
 import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.di.BPMNLabel;
 import org.eclipse.bpmn2.modeler.core.di.DIImport;
 import org.eclipse.bpmn2.modeler.core.features.AbstractAddBPMNShapeFeature;
 import org.eclipse.bpmn2.modeler.core.features.UpdateBaseElementNameFeature;
@@ -21,6 +22,8 @@
 import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
 import org.eclipse.bpmn2.modeler.core.utils.StyleUtil;
 import org.eclipse.bpmn2.modeler.core.utils.Tuple;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IAddConnectionContext;
 import org.eclipse.graphiti.features.context.IAddContext;
@@ -78,6 +81,17 @@
 		if (ModelUtil.hasName(element)) {
 			ConnectionDecorator labelDecorator = Graphiti.getPeService().createConnectionDecorator(connection, true, 0.5, true);
 			Text text = gaService.createText(labelDecorator, ModelUtil.getName(element));
+		    if (context.getProperty("BPMNLABEL") != null) {
+		      BPMNLabel label = (BPMNLabel) context.getProperty("BPMNLABEL");
+		      gaService.setLocation(text, new Float(label.getBounds().getX()).intValue(), new Float(label.getBounds().getY()).intValue());
+		      label.toString();
+		    }
+		    text.eAdapters().add(new AdapterImpl() {
+		        @Override
+		        public void notifyChanged(Notification msg) {
+		          super.notifyChanged(msg);
+		        }
+		    });
 			peService.setPropertyValue(labelDecorator, UpdateBaseElementNameFeature.TEXT_ELEMENT, Boolean.toString(true));
 			StyleUtil.applyStyle(text, element);
 		}
diff --git a/org.eclipse.bpmn2.modeler.ui/plugin.xml b/org.eclipse.bpmn2.modeler.ui/plugin.xml
index 3a30320..175d48a 100644
--- a/org.eclipse.bpmn2.modeler.ui/plugin.xml
+++ b/org.eclipse.bpmn2.modeler.ui/plugin.xml
@@ -367,12 +367,12 @@
 			label="Sub Choreography">
 		</propertyTab>
 
-		<propertyTab
+		<!-- propertyTab
 			id="org.eclipse.bpmn2.modeler.activity.io.tab"
 			class="org.eclipse.bpmn2.modeler.ui.property.tasks.IoParametersPropertySection"
 			afterTab="org.eclipse.bpmn2.modeler.task.tab"
 			label="I/O Parameters">
-		</propertyTab>
+		</propertyTab -->
 
 		<propertyTab
 			id="org.eclipse.bpmn2.modeler.group.tab"
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/label/LabelFeatureContainer.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/label/LabelFeatureContainer.java
index 9f97212..2ae122a 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/label/LabelFeatureContainer.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/label/LabelFeatureContainer.java
@@ -26,6 +26,7 @@
 import org.eclipse.graphiti.features.IUpdateFeature;
 import org.eclipse.graphiti.features.context.IAddContext;
 import org.eclipse.graphiti.features.context.IContext;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
 import org.eclipse.graphiti.features.context.IPictogramElementContext;
 import org.eclipse.graphiti.features.custom.ICustomFeature;
 import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
@@ -107,7 +108,18 @@
 
 	@Override
 	public IMoveShapeFeature getMoveFeature(IFeatureProvider fp) {
-		return new DefaultMoveShapeFeature(fp);
+		return new DefaultMoveShapeFeature (fp) {
+  		 @Override
+  		public boolean canMoveShape(IMoveShapeContext context) {
+  		   return true;
+  		}
+  		
+  		@Override
+  		protected void postMoveShape(IMoveShapeContext context) {
+  		  super.postMoveShape(context);
+  		}
+  		 
+		};
 	}
 
 	@Override
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
index becf0cb..a642085 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
@@ -259,7 +259,7 @@
 	
 	public static String createTempName(String name) {
 		String tempDir = System.getProperty("java.io.tmpdir");
-		String tempName = tempDir + name + "." + EcoreUtil.generateUUID();
+		String tempName = tempDir + File.separatorChar + name + "." + EcoreUtil.generateUUID();
 		return tempName;
 	}
 	
