diff --git a/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/META-INF/MANIFEST.MF b/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/META-INF/MANIFEST.MF
index 3f4d41a..baa21d0 100644
--- a/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/META-INF/MANIFEST.MF
+++ b/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/META-INF/MANIFEST.MF
@@ -13,8 +13,8 @@
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.emf.ecore.xmi;visibility:=reexport,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.gef,
  org.eclipse.bpmn2,
  org.eclipse.bpmn2.edit,
diff --git a/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/META-INF/MANIFEST.MF b/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/META-INF/MANIFEST.MF
index f5d1a50..670b58a 100644
--- a/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/META-INF/MANIFEST.MF
+++ b/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/META-INF/MANIFEST.MF
@@ -10,8 +10,8 @@
  org.eclipse.core.runtime,
  org.eclipse.ui.views.properties.tabbed,
  org.eclipse.gef,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.emf.transaction,
  org.eclipse.emf.databinding,
  org.eclipse.emf.edit.ui,
diff --git a/examples/plugins/org.eclipse.bpmn2.modeler.examples.modelreader/META-INF/MANIFEST.MF b/examples/plugins/org.eclipse.bpmn2.modeler.examples.modelreader/META-INF/MANIFEST.MF
index 5c9b9cd..2bc6bb9 100644
--- a/examples/plugins/org.eclipse.bpmn2.modeler.examples.modelreader/META-INF/MANIFEST.MF
+++ b/examples/plugins/org.eclipse.bpmn2.modeler.examples.modelreader/META-INF/MANIFEST.MF
@@ -8,8 +8,8 @@
  org.eclipse.core.runtime,
  org.eclipse.ui.views.properties.tabbed,
  org.eclipse.gef,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.emf.transaction,
  org.eclipse.emf.databinding,
  org.eclipse.emf.edit.ui,
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.bpmn2.modeler.core/META-INF/MANIFEST.MF
index d058c18..f076061 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.bpmn2.modeler.core/META-INF/MANIFEST.MF
@@ -9,8 +9,8 @@
  org.eclipse.emf.edit.ui,
  org.eclipse.emf.validation.ocl,
  org.eclipse.osgi,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.gef,
  org.eclipse.bpmn2.edit,
  org.eclipse.bpmn2.editor,
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/di/DIImport.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/di/DIImport.java
index 5ae8521..e2bc1d7 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/di/DIImport.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/di/DIImport.java
@@ -161,7 +161,7 @@
 						
 						currentBPMNDiagram = d;
 						diagram = DIUtils.findDiagram(editor.getDiagramBehavior(),d);
-						editor.getDiagramTypeProvider().init(diagram, editor);
+						editor.getDiagramTypeProvider().init(diagram, editor.getDiagramBehavior());
 	
 						BPMNPlane plane = d.getPlane();
 						if (plane.getBpmnElement() == null) {
@@ -941,7 +941,7 @@
 		if (context.getTargetContainer() instanceof Diagram) {
 			Diagram diagram = (Diagram)context.getTargetContainer();
 			if (diagram!=featureProvider.getDiagramTypeProvider().getDiagram())
-				featureProvider.getDiagramTypeProvider().init(diagram, editor);
+				featureProvider.getDiagramTypeProvider().init(diagram, editor.getDiagramBehavior());
 		}
 		return addFeature.canAdd(context);
 	}
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2AddFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2AddFeature.java
index 15a7973..308d5bc 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2AddFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2AddFeature.java
@@ -62,6 +62,7 @@
 import org.eclipse.graphiti.services.IGaService;
 import org.eclipse.graphiti.services.ILayoutService;
 import org.eclipse.graphiti.services.IPeService;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 /**
  * This is the Graphiti {@code AddFeature} base class for all BPMN2 model elements which
@@ -478,4 +479,8 @@
 		}
 		return getFeatureProvider().layoutIfPossible(layoutContext);
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateConnectionFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateConnectionFeature.java
index ad07cf7..7680947 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateConnectionFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateConnectionFeature.java
@@ -485,4 +485,8 @@
 	 */
 	protected abstract Class<TARGET> getTargetClass();
 
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java
index dca384c..0824af3 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java
@@ -285,4 +285,8 @@
 	public boolean hasDoneChanges() {
 		return changesDone;
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CustomFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CustomFeature.java
new file mode 100644
index 0000000..864fb5d
--- /dev/null
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CustomFeature.java
@@ -0,0 +1,17 @@
+package org.eclipse.bpmn2.modeler.core.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
+
+public abstract class AbstractBpmn2CustomFeature extends AbstractCustomFeature {
+
+	public AbstractBpmn2CustomFeature(IFeatureProvider fp) {
+		super(fp);
+		// TODO Auto-generated constructor stub
+	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
+}
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CompoundCreateFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CompoundCreateFeature.java
index b116e5e..0cecaaf 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CompoundCreateFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CompoundCreateFeature.java
@@ -38,6 +38,7 @@
 import org.eclipse.graphiti.mm.pictograms.Diagram;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 /**
  * This is a Graphiti CreateFeature class that can be used to create multiple objects.
@@ -401,4 +402,8 @@
 	public EClass getFeatureClass() {
 		return null;
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CustomElementFeatureContainer.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CustomElementFeatureContainer.java
index 250e425..8a99d85 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CustomElementFeatureContainer.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CustomElementFeatureContainer.java
@@ -135,7 +135,7 @@
 	 */
 	@Override
 	public boolean isAvailable(IFeatureProvider fp) {
-		DiagramEditor editor = (DiagramEditor) fp.getDiagramTypeProvider().getDiagramEditor();
+		DiagramEditor editor = (DiagramEditor) fp.getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		if (editor != null) {
 			ModelEnablements me = (ModelEnablements)editor.getAdapter(ModelEnablements.class);
 			if (me!=null) {
@@ -423,5 +423,4 @@
 	public ICustomFeature[] getCustomFeatures(IFeatureProvider fp) {
 		return getFeatureContainer(fp).getCustomFeatures(fp);
 	}
-
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
index 48668ca..4104fc6 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
@@ -33,6 +33,7 @@
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.mm.pictograms.Shape;
 import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 /**
  * Default Graphiti {@code MoveShapeFeature} class for Shapes.
@@ -162,4 +163,8 @@
 			}
 		}
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
index b9599bb..af45a4a 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
@@ -69,6 +69,7 @@
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.mm.pictograms.Shape;
 import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 import org.eclipse.graphiti.ui.features.AbstractPasteFeature;
 
 /**
@@ -246,7 +247,7 @@
 			newPes[i++] = entry.getValue();
 		}
 		
-		this.getDiagramEditor().setPictogramElementsForSelection(newPes);
+		getDiagramEditor().setPictogramElementsForSelection(newPes);
 	}
 	
 	/* (non-Javadoc)
@@ -756,4 +757,8 @@
 			container = container.eContainer();
 		return (FlowElementsContainer)container;
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/ShowDocumentationFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/ShowDocumentationFeature.java
index dd36d63..a675352 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/ShowDocumentationFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/ShowDocumentationFeature.java
@@ -13,19 +13,15 @@
 import java.util.List;
 
 import org.eclipse.bpmn2.Bpmn2Factory;
-import org.eclipse.bpmn2.Bpmn2Package;
 import org.eclipse.bpmn2.Documentation;
 import org.eclipse.bpmn2.modeler.core.IConstants;
-import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.AbstractObjectEditingDialog;
 import org.eclipse.bpmn2.modeler.core.preferences.ModelEnablements;
 import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
-import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IContext;
 import org.eclipse.graphiti.features.context.ICustomContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.ui.editor.DiagramEditor;
 import org.eclipse.jface.dialogs.Dialog;
@@ -45,7 +41,7 @@
 /**
  * The Class ShowPropertiesFeature.
  */
-public class ShowDocumentationFeature extends AbstractCustomFeature {
+public class ShowDocumentationFeature extends AbstractBpmn2CustomFeature {
 
 	/** The changes done. */
 	protected boolean changesDone = false;
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractBpmn2PropertySection.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractBpmn2PropertySection.java
index e307941..3a351f1 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractBpmn2PropertySection.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractBpmn2PropertySection.java
@@ -128,10 +128,6 @@
 		return parent;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.graphiti.ui.platform.GFPropertySection#getDiagramEditor()
-	 */
-	@Override
 	protected DiagramEditor getDiagramEditor() {
 		return editor;
 	}
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/META-INF/MANIFEST.MF b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/META-INF/MANIFEST.MF
index 63efc26..f3b83ac 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/META-INF/MANIFEST.MF
@@ -7,8 +7,8 @@
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui.ide,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.bpmn2.modeler.core,
  org.eclipse.emf.transaction,
  org.eclipse.ui.views.properties.tabbed,
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/features/JbpmCustomTaskFeatureContainer.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/features/JbpmCustomTaskFeatureContainer.java
index c7aa465..acddf47 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/features/JbpmCustomTaskFeatureContainer.java
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/features/JbpmCustomTaskFeatureContainer.java
@@ -229,7 +229,7 @@
 		 */
 		@Override
 		public boolean canExecute(IContext context) {
-			BPMN2Editor editor = (BPMN2Editor)getFeatureProvider().getDiagramTypeProvider().getDiagramEditor();
+			BPMN2Editor editor = (BPMN2Editor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 			IBpmn2RuntimeExtension rte = editor.getTargetRuntime().getRuntimeExtension();
 			if (rte instanceof JBPM5RuntimeExtension && context instanceof ICustomContext) {
 				PictogramElement[] pes = ((ICustomContext) context).getPictogramElements();
@@ -264,7 +264,7 @@
 		 */
 		@Override
 		public void execute(IContext context) {
-			BPMN2Editor editor = (BPMN2Editor)getFeatureProvider().getDiagramTypeProvider().getDiagramEditor();
+			BPMN2Editor editor = (BPMN2Editor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 			PictogramElement pe = ((ICustomContext) context).getPictogramElements()[0];
 			final Task task = (Task)Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
 			String taskName = ""; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.bpmn2.modeler.ui/META-INF/MANIFEST.MF
index 47cce9f..ce6d7ce 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/META-INF/MANIFEST.MF
@@ -8,8 +8,8 @@
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui.ide,
  org.eclipse.osgi,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.bpmn2.modeler.core,
  org.eclipse.emf.transaction,
  org.eclipse.ui.views.properties.tabbed,
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMN2FeatureProvider.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMN2FeatureProvider.java
index 9936d3a..415d639 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMN2FeatureProvider.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMN2FeatureProvider.java
@@ -419,7 +419,7 @@
 //		if (lfc.getApplyObject(context)!=null)
 //			return lfc;
 		
-		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramEditor();;
+		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		TargetRuntime rt = editor.getTargetRuntime();
 		EObject object = getApplyObject(context);
 		if (object!=null) {
@@ -471,7 +471,7 @@
 		// is called during file loading.
 		Object id = CustomElementFeatureContainer.getId(context); 
 		if (id!=null) {
-			BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramEditor();
+			BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 			TargetRuntime rt = editor.getTargetRuntime();
 			for (CustomTaskDescriptor ct : rt.getCustomTaskDescriptors()) {
 				if (id.equals(ct.getId())) {
@@ -619,7 +619,7 @@
 	public ICustomFeature[] getCustomFeatures(ICustomContext context) {
 		List<ICustomFeature> list = new ArrayList<ICustomFeature>();
 
-		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramEditor();;
+		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		TargetRuntime rt = editor.getTargetRuntime();
 		String id = CustomElementFeatureContainer.getId(context);
 		if (id!=null) {
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2DiagramTypeProvider.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2DiagramTypeProvider.java
index f3e92fa..83b5fdf 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2DiagramTypeProvider.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2DiagramTypeProvider.java
@@ -29,6 +29,7 @@
 import org.eclipse.graphiti.notification.DefaultNotificationService;
 import org.eclipse.graphiti.notification.INotificationService;
 import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 public class Bpmn2DiagramTypeProvider extends AbstractDiagramTypeProvider {
 	private IToolBehaviorProvider[] toolBehaviorProviders;
@@ -126,4 +127,8 @@
 			super.updatePictogramElements(updated.toArray(new PictogramElement[updated.size()]));
 		}
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2ToolBehaviorProvider.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2ToolBehaviorProvider.java
index 547db22..492e3e2 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2ToolBehaviorProvider.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2ToolBehaviorProvider.java
@@ -185,7 +185,7 @@
 	@Override
 	public IPaletteCompartmentEntry[] getPalette() {
 
-		editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramEditor();
+		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		targetRuntime = editor.getTargetRuntime();
 		modelEnablements = editor.getModelEnablements();
 		featureProvider = (BPMN2FeatureProvider)getFeatureProvider();
@@ -491,7 +491,7 @@
 	private void createCustomTasks(List<IPaletteCompartmentEntry> ret) {
 
 		PaletteCompartmentEntry compartmentEntry = null;
-		BPMN2Editor editor = (BPMN2Editor) getDiagramTypeProvider().getDiagramEditor();
+		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		TargetRuntime rt = editor.getTargetRuntime();
 		
 		try {
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
index 6cb5521..41f066d 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
@@ -1398,7 +1398,7 @@
 	}
 
 	@Override
-	protected void configureGraphicalViewer() {
+	public void configureGraphicalViewer() {
 	    super.configureGraphicalViewer();
 	    // add zooming action with "CTRL + Mouse Wheel"
 	    GraphicalViewer viewer = getGraphicalViewer();
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2EditorUpdateBehavior.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2EditorUpdateBehavior.java
index 2acf87b..713776a 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2EditorUpdateBehavior.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2EditorUpdateBehavior.java
@@ -37,6 +37,7 @@
 import org.eclipse.graphiti.ui.editor.DefaultUpdateBehavior;
 import org.eclipse.graphiti.ui.editor.DiagramBehavior;
 import org.eclipse.graphiti.ui.editor.IDiagramContainerUI;
+import org.eclipse.graphiti.ui.editor.IDiagramEditorInput;
 import org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl;
 
 /**
@@ -63,12 +64,12 @@
 
 	public TransactionalEditingDomain getEditingDomain() {
 		if (editingDomain == null)
-			createEditingDomain();
+			createEditingDomain(null);
 		return editingDomain;
 	}
 
 	@Override
-	public void createEditingDomain() {
+	public void createEditingDomain(IDiagramEditorInput input) {
 		if (editingDomain == null) {
 			// If another editor window is already open for this BPMN2 file
 			// then reuse its Editing Domain; otherwise create a new one.
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractAppendNodeFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractAppendNodeFeature.java
index 7a0d824..78c3537 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractAppendNodeFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractAppendNodeFeature.java
@@ -26,6 +26,7 @@
 import org.eclipse.bpmn2.Lane;
 import org.eclipse.bpmn2.SequenceFlow;
 import org.eclipse.bpmn2.SubProcess;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.features.GraphitiConstants;
 import org.eclipse.bpmn2.modeler.core.features.IBpmn2CreateFeature;
 import org.eclipse.bpmn2.modeler.core.features.SubMenuCustomFeature;
@@ -46,13 +47,11 @@
 import org.eclipse.graphiti.features.ICreateFeature;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IContext;
-import org.eclipse.graphiti.features.context.ICreateConnectionContext;
 import org.eclipse.graphiti.features.context.ICustomContext;
 import org.eclipse.graphiti.features.context.impl.AddConnectionContext;
 import org.eclipse.graphiti.features.context.impl.CreateConnectionContext;
 import org.eclipse.graphiti.features.context.impl.CreateContext;
 import org.eclipse.graphiti.features.context.impl.MoveShapeContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
 import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
 import org.eclipse.graphiti.mm.algorithms.styles.Point;
@@ -81,7 +80,7 @@
  * @author Bob Brodt
  *
  */
-public abstract class AbstractAppendNodeFeature<T extends FlowNode> extends AbstractCustomFeature {
+public abstract class AbstractAppendNodeFeature<T extends FlowNode> extends AbstractBpmn2CustomFeature {
 	
 	protected boolean changesDone = false;
 	protected Bpmn2Preferences preferences;
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractMorphNodeFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractMorphNodeFeature.java
index 3c0bd55..a04e054 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractMorphNodeFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractMorphNodeFeature.java
@@ -23,6 +23,7 @@
 import org.eclipse.bpmn2.FlowElement;
 import org.eclipse.bpmn2.FlowNode;
 import org.eclipse.bpmn2.Lane;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.features.CustomShapeFeatureContainer.CreateCustomShapeFeature;
 import org.eclipse.bpmn2.modeler.core.features.GraphitiConstants;
 import org.eclipse.bpmn2.modeler.core.features.IBpmn2CreateFeature;
@@ -48,7 +49,6 @@
 import org.eclipse.graphiti.features.context.impl.DeleteContext;
 import org.eclipse.graphiti.features.context.impl.ReconnectionContext;
 import org.eclipse.graphiti.features.context.impl.UpdateContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.pictograms.Anchor;
 import org.eclipse.graphiti.mm.pictograms.Connection;
 import org.eclipse.graphiti.mm.pictograms.ContainerShape;
@@ -73,7 +73,7 @@
  * @author Bob Brodt
  *
  */
-public abstract class AbstractMorphNodeFeature<T extends FlowNode> extends AbstractCustomFeature {
+public abstract class AbstractMorphNodeFeature<T extends FlowNode> extends AbstractBpmn2CustomFeature {
 
 	protected boolean changesDone = false;;
 	
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CollapseFlowNodeFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CollapseFlowNodeFeature.java
index 1477af3..d1954c8 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CollapseFlowNodeFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CollapseFlowNodeFeature.java
@@ -17,6 +17,7 @@
 import org.eclipse.bpmn2.di.BPMNDiagram;
 import org.eclipse.bpmn2.di.BPMNShape;
 import org.eclipse.bpmn2.modeler.core.di.DIUtils;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
 import org.eclipse.bpmn2.modeler.core.preferences.ShapeStyle;
 import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
@@ -30,12 +31,11 @@
 import org.eclipse.graphiti.features.context.ICustomContext;
 import org.eclipse.graphiti.features.context.impl.ResizeShapeContext;
 import org.eclipse.graphiti.features.context.impl.UpdateContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
 import org.eclipse.graphiti.mm.pictograms.ContainerShape;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 
-public class CollapseFlowNodeFeature extends AbstractCustomFeature {
+public class CollapseFlowNodeFeature extends AbstractBpmn2CustomFeature {
 
 	public CollapseFlowNodeFeature(IFeatureProvider fp) {
 		super(fp);
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/choreography/ShowDiagramPageFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/choreography/ShowDiagramPageFeature.java
index 5bcc190..d7784e6 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/choreography/ShowDiagramPageFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/choreography/ShowDiagramPageFeature.java
@@ -10,34 +10,23 @@
  *******************************************************************************/
 package org.eclipse.bpmn2.modeler.ui.features.choreography;
 
-import java.io.IOException;
-
 import org.eclipse.bpmn2.BaseElement;
 import org.eclipse.bpmn2.CallActivity;
 import org.eclipse.bpmn2.Participant;
-import org.eclipse.bpmn2.Process;
 import org.eclipse.bpmn2.di.BPMNDiagram;
-import org.eclipse.bpmn2.modeler.ui.IConstants;
-import org.eclipse.bpmn2.modeler.ui.ImageProvider;
 import org.eclipse.bpmn2.modeler.core.di.DIUtils;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.features.choreography.ChoreographyUtil;
-import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.ObjectEditingDialog;
-import org.eclipse.bpmn2.modeler.core.model.ModelHandler;
-import org.eclipse.bpmn2.modeler.core.model.ModelHandlerLocator;
-import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
-import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
+import org.eclipse.bpmn2.modeler.ui.ImageProvider;
 import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;
 import org.eclipse.bpmn2.modeler.ui.editor.BPMN2MultiPageEditor;
-import org.eclipse.dd.di.DiagramElement;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IContext;
 import org.eclipse.graphiti.features.context.ICustomContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
-import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
-public class ShowDiagramPageFeature extends AbstractCustomFeature {
+public class ShowDiagramPageFeature extends AbstractBpmn2CustomFeature {
 
 	public ShowDiagramPageFeature(IFeatureProvider fp) {
 		super(fp);
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/event/FollowLinkFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/event/FollowLinkFeature.java
index 37c2c3b..0d1d5bc 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/event/FollowLinkFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/event/FollowLinkFeature.java
@@ -16,21 +16,19 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.bpmn2.DataInput;
 import org.eclipse.bpmn2.Event;
 import org.eclipse.bpmn2.EventDefinition;
 import org.eclipse.bpmn2.IntermediateCatchEvent;
 import org.eclipse.bpmn2.IntermediateThrowEvent;
 import org.eclipse.bpmn2.LinkEventDefinition;
-import org.eclipse.bpmn2.di.BPMNShape;
 import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
 import org.eclipse.bpmn2.modeler.core.di.DIUtils;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
 import org.eclipse.bpmn2.modeler.ui.ImageProvider;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IContext;
 import org.eclipse.graphiti.features.context.ICustomContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.pictograms.Diagram;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.services.Graphiti;
@@ -46,7 +44,7 @@
 /**
  *
  */
-public class FollowLinkFeature extends AbstractCustomFeature {
+public class FollowLinkFeature extends AbstractBpmn2CustomFeature {
 
 	ICustomContext context;
 	private static ILabelProvider labelProvider = new ILabelProvider() {
@@ -124,7 +122,7 @@
 	 */
 	@Override
 	public void execute(ICustomContext context) {
-		DiagramEditor editor = (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramEditor();
+		DiagramEditor editor = getDiagramEditor();
 		PictogramElement pe = context.getPictogramElements()[0];
 		Event event = BusinessObjectUtil.getFirstElementOfType(pe, Event.class);
 		LinkEventDefinition target = null;
