diff --git a/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF b/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF
index 1b301674c2b24ad4f506e990e3b8faef9747c2f7..6b838be0965003c08eaa0290ab36c58117a61d3a 100644
--- a/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF
+++ b/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF
@@ -15,7 +15,8 @@ Export-Package: org.fortiss.tooling.base.ui,
  org.fortiss.tooling.base.ui.compose,
  org.fortiss.tooling.base.ui.contentprovider,
  org.fortiss.tooling.base.ui.databinding,
- org.fortiss.tooling.base.ui.dnd,
+ org.fortiss.tooling.base.ui.dnd.gef,
+ org.fortiss.tooling.base.ui.dnd.jface,
  org.fortiss.tooling.base.ui.editor,
  org.fortiss.tooling.base.ui.editpart,
  org.fortiss.tooling.base.ui.editpart.anchor,
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/command/ConnectionCommand.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/command/ConnectionCommand.java
index 097523ba5840bab350a184efc217502615912d67..6e4b30a5f17dd8ca9b762e89c0a8315f62ab4d61 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/command/ConnectionCommand.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/command/ConnectionCommand.java
@@ -21,7 +21,7 @@ import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.commands.Command;
-import org.fortiss.tooling.base.ui.dnd.ConnectionDragContext;
+import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDragContext;
 import org.fortiss.tooling.base.ui.editpart.policy.ConnectionGraphicalNodeEditPolicy;
 import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
 
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/ConnectorConnectionCompositorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/ConnectorConnectionCompositorBase.java
index 6f9f291bfa7e29e93badc83ea3df34ff76e20495..6baf83d31eea66d520059f608e738c1823ee07b9 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/ConnectorConnectionCompositorBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/ConnectorConnectionCompositorBase.java
@@ -27,7 +27,7 @@ import org.fortiss.tooling.base.model.element.IConnection;
 import org.fortiss.tooling.base.model.element.IConnector;
 import org.fortiss.tooling.base.model.element.IHierarchicElement;
 import org.fortiss.tooling.base.model.element.IModelElementSpecification;
-import org.fortiss.tooling.base.ui.dnd.ConnectionDragContext;
+import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDragContext;
 import org.fortiss.tooling.base.ui.editpart.FreeConnectorEditPartBase;
 import org.fortiss.tooling.kernel.extension.IConnectionCompositor;
 import org.fortiss.tooling.kernel.extension.data.IConnectionCompositionContext;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/HierarchicElementConnectionCompositorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/HierarchicElementConnectionCompositorBase.java
index 8640db7fce6b9ac5c1175ab513662dca5877617e..3e899772c840145329441b802d4cbe20ab522bf1 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/HierarchicElementConnectionCompositorBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/HierarchicElementConnectionCompositorBase.java
@@ -23,8 +23,8 @@ import org.fortiss.tooling.base.model.element.IConnection;
 import org.fortiss.tooling.base.model.element.IConnector;
 import org.fortiss.tooling.base.model.element.IHierarchicElement;
 import org.fortiss.tooling.base.model.element.IModelElementSpecification;
-import org.fortiss.tooling.base.ui.dnd.ConnectionDragContext;
-import org.fortiss.tooling.base.ui.dnd.ElementDropContext;
+import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDragContext;
+import org.fortiss.tooling.base.ui.dnd.gef.ElementDropContext;
 import org.fortiss.tooling.base.ui.editpart.DiagramEditPartBase;
 import org.fortiss.tooling.kernel.extension.IConnectionCompositor;
 import org.fortiss.tooling.kernel.extension.data.IConnectionCompositionContext;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionCompositionDropTargetListener.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionCompositionDropTargetListener.java
similarity index 98%
rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionCompositionDropTargetListener.java
rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionCompositionDropTargetListener.java
index 5f3ebcc20d16b5e31e196879bd6a3b3fad95d4f9..58ac7b506e8bb8957e2594d7c961572e573220b6 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionCompositionDropTargetListener.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionCompositionDropTargetListener.java
@@ -15,7 +15,7 @@ $Id$
 | See the License for the specific language governing permissions and      |
 | limitations under the License.                                           |
 +--------------------------------------------------------------------------*/
-package org.fortiss.tooling.base.ui.dnd;
+package org.fortiss.tooling.base.ui.dnd.gef;
 
 import org.eclipse.gef.EditPartViewer;
 import org.eclipse.gef.Request;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDragContext.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDragContext.java
similarity index 98%
rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDragContext.java
rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDragContext.java
index e1406cd7aacb1ded46b078cd5ebef71d935645c2..bf2594268fe95ccd5aac23be3e6f4dc1c5e63887 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDragContext.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDragContext.java
@@ -15,7 +15,7 @@ $Id$
 | See the License for the specific language governing permissions and      |
 | limitations under the License.                                           |
 +--------------------------------------------------------------------------*/
-package org.fortiss.tooling.base.ui.dnd;
+package org.fortiss.tooling.base.ui.dnd.gef;
 
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.gef.EditPart;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDropContext.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDropContext.java
similarity index 98%
rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDropContext.java
rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDropContext.java
index cbb2c14777ff4318f0de2c135281d24a20b54d4e..ac58c505286a0aa28d2c78bc08f66ae6a6627288 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDropContext.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDropContext.java
@@ -15,7 +15,7 @@ $Id$
 | See the License for the specific language governing permissions and      |
 | limitations under the License.                                           |
 +--------------------------------------------------------------------------*/
-package org.fortiss.tooling.base.ui.dnd;
+package org.fortiss.tooling.base.ui.dnd.gef;
 
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.gef.EditPart;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementCompositionDropTargetListener.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementCompositionDropTargetListener.java
similarity index 98%
rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementCompositionDropTargetListener.java
rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementCompositionDropTargetListener.java
index e91c75ed490dca2cb6d73e547e5a5c25c3b95ec3..32fc03fea876023dc0c528f17aeedcb3e2fb5e6c 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementCompositionDropTargetListener.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementCompositionDropTargetListener.java
@@ -15,7 +15,7 @@ $Id$
 | See the License for the specific language governing permissions and      |
 | limitations under the License.                                           |
 +--------------------------------------------------------------------------*/
-package org.fortiss.tooling.base.ui.dnd;
+package org.fortiss.tooling.base.ui.dnd.gef;
 
 import org.eclipse.gef.EditPartViewer;
 import org.eclipse.gef.Request;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementDropContext.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementDropContext.java
similarity index 98%
rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementDropContext.java
rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementDropContext.java
index 54159005cb626b891c0cabdd589ad72e716c860c..d657631f570042a6a456261268f77ef8a8adb7fc 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementDropContext.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementDropContext.java
@@ -15,7 +15,7 @@ $Id$
 | See the License for the specific language governing permissions and      |
 | limitations under the License.                                           |
 +--------------------------------------------------------------------------*/
-package org.fortiss.tooling.base.ui.dnd;
+package org.fortiss.tooling.base.ui.dnd.gef;
 
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.gef.EditPart;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/jface/ViewerElementCompositionDropAdapter.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/jface/ViewerElementCompositionDropAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..baa3e9b8e5eb0100e7133ea564e13f0d4394e16e
--- /dev/null
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/jface/ViewerElementCompositionDropAdapter.java
@@ -0,0 +1,113 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.tooling.base.ui.dnd.jface;
+
+import static org.fortiss.tooling.kernel.ui.util.DragAndDropUtils.extractDroppedEObject;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerDropAdapter;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.dnd.TransferData;
+import org.fortiss.tooling.kernel.service.IElementCompositorService;
+import org.fortiss.tooling.kernel.ui.dnd.CompositionServiceLocalTransfer;
+import org.fortiss.tooling.kernel.ui.dnd.ElementCompositionDropTargetAdapter;
+import org.fortiss.tooling.kernel.ui.util.DragAndDropUtils;
+import org.fortiss.tooling.kernel.utils.ModelUtils;
+
+/**
+ * {@link ElementCompositionDropTargetAdapter} implementation for a JFace
+ * {@link TreeViewer}.
+ * 
+ * @author hoelzl
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash:
+ */
+public class ViewerElementCompositionDropAdapter extends ViewerDropAdapter {
+
+	/** Remember the last target. */
+	Object lastTarget = null;
+
+	/** Constructor. */
+	public ViewerElementCompositionDropAdapter(Viewer viewer) {
+		super(viewer);
+		setExpandEnabled(true);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean validateDrop(Object target, int operation,
+			TransferData transferType) {
+		if (target == null) {
+			target = getViewer().getInput();
+		}
+		lastTarget = target;
+
+		if (lastTarget instanceof EObject) {
+			EObject dropped = extractDroppedEObject(CompositionServiceLocalTransfer
+					.getInstance().getObject());
+
+			return IElementCompositorService.INSTANCE.canCompose(
+					(EObject) lastTarget, dropped, null);
+		}
+		return false;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean performDrop(Object data) {
+		if (lastTarget instanceof EObject) {
+			final EObject target = (EObject) lastTarget;
+			final EObject dropped = DragAndDropUtils
+					.extractDroppedEObject(data);
+			if (IElementCompositorService.INSTANCE.canCompose(target, dropped,
+					null)) {
+				ModelUtils.runAsCommand(target, new Runnable() {
+					@Override
+					public void run() {
+						IElementCompositorService.INSTANCE.compose(target,
+								dropped, null);
+					}
+				});
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/** Returns the supported DND operations as defined in {@link DND}. */
+	public int getSupportedDNDOperations() {
+		return DND.DROP_COPY;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void dragEnter(DropTargetEvent event) {
+		event.detail = DND.DROP_COPY;
+		super.dragEnter(event);
+	}
+
+	/** Returns the preferred transfer for the DND operation. */
+	public Transfer[] getPreferredTransfers() {
+		return DragAndDropUtils.getCompositionServiceTransfers();
+	}
+}
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java
index 6e5dc8eba21997a2923f14e7b1d380dc59d79a7f..a578af775b93b04337997a3ccf04b9a94df6ab96 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java
@@ -76,7 +76,7 @@ import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PartInitException;
 import org.fortiss.tooling.base.layout.DefaultLayoutConstants;
 import org.fortiss.tooling.base.ui.ToolingBaseUIActivator;
-import org.fortiss.tooling.base.ui.dnd.ElementCompositionDropTargetListener;
+import org.fortiss.tooling.base.ui.dnd.gef.ElementCompositionDropTargetListener;
 import org.fortiss.tooling.base.ui.editpart.ConnectorEditPartBase;
 import org.fortiss.tooling.base.ui.editpart.ExtendedLayerRootEditPart;
 import org.fortiss.tooling.base.ui.editpart.figure.EVisualStyle;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/TreeViewerEditorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/TreeViewerEditorBase.java
index 0ef53ab5b652082deaa7f947984908bae21ed71a..cb0e34d3e3fa27fe5d1c2e51209cd217e892f8eb 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/TreeViewerEditorBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/TreeViewerEditorBase.java
@@ -27,19 +27,11 @@ import org.eclipse.emf.ecore.util.EContentAdapter;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Menu;
-import org.fortiss.tooling.kernel.service.IElementCompositorService;
+import org.fortiss.tooling.base.ui.dnd.jface.ViewerElementCompositionDropAdapter;
 import org.fortiss.tooling.kernel.ui.extension.base.EditorBase;
-import org.fortiss.tooling.kernel.ui.util.DragAndDropUtils;
 import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
 
 /**
@@ -76,11 +68,10 @@ public abstract class TreeViewerEditorBase<T extends EObject> extends
 
 		setupTreeViewer(treeViewer);
 
-		// FIXME (FH): use new kernel DND mechanism
-		treeViewer.addDropSupport(
-				DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK,
-				new Transfer[] { LocalSelectionTransfer.getTransfer() },
-				new TreeDropAdapter(treeViewer));
+		ViewerElementCompositionDropAdapter dndAdapter = new ViewerElementCompositionDropAdapter(
+				treeViewer);
+		treeViewer.addDropSupport(dndAdapter.getSupportedDNDOperations(),
+				dndAdapter.getPreferredTransfers(), dndAdapter);
 
 		treeViewer.setInput(editedObject);
 		getEditorSite().setSelectionProvider(treeViewer);
@@ -135,71 +126,4 @@ public abstract class TreeViewerEditorBase<T extends EObject> extends
 	public void setFocus() {
 		treeViewer.getTree().setFocus();
 	}
-
-	/** The drop adapter for the tree. */
-	private class TreeDropAdapter extends ViewerDropAdapter {
-
-		/** Remember the last target. */
-		Object lastTarget = null;
-
-		/** Constructor. */
-		private TreeDropAdapter(Viewer viewer) {
-			super(viewer);
-			setExpandEnabled(true);
-		}
-
-		/**
-		 * {@inheritDoc}
-		 * <p>
-		 * Hook this method to set a "valid" details field.
-		 */
-		@Override
-		public void dragEnter(DropTargetEvent event) {
-			event.detail = DND.DROP_COPY;
-			// event.data = LocalSelectionTransfer.getTransfer().getSelection();
-			super.dragEnter(event);
-		}
-
-		/** {@inheritDoc} */
-		@Override
-		public boolean validateDrop(Object target, int operation,
-				TransferData transferType) {
-			if (target == null) {
-				target = treeViewer.getInput();
-			}
-			lastTarget = target;
-
-			if (lastTarget instanceof EObject) {
-
-				EObject dropped = DragAndDropUtils
-						.extractDroppedEObject(LocalSelectionTransfer
-								.getTransfer().getSelection());
-
-				return IElementCompositorService.INSTANCE.canCompose(
-						(EObject) lastTarget, dropped, null);
-			}
-			return false;
-		}
-
-		/** {@inheritDoc} */
-		@Override
-		public boolean performDrop(Object data) {
-			if (lastTarget instanceof EObject) {
-				final EObject dropped = DragAndDropUtils
-						.extractDroppedEObject(data);
-				if (IElementCompositorService.INSTANCE.canCompose(
-						(EObject) lastTarget, dropped, null)) {
-					TreeViewerEditorBase.this.executeCommand(new Runnable() {
-						@Override
-						public void run() {
-							IElementCompositorService.INSTANCE.compose(
-									(EObject) lastTarget, dropped, null);
-						}
-					});
-					return true;
-				}
-			}
-			return false;
-		}
-	}
 }
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/ConnectionGraphicalNodeEditPolicy.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/ConnectionGraphicalNodeEditPolicy.java
index 82bf150345f280b74cbdf074223bce00fa534669..72b36b90cefdf3f9f812e6d81e9fdef681b0832b 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/ConnectionGraphicalNodeEditPolicy.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/ConnectionGraphicalNodeEditPolicy.java
@@ -25,7 +25,7 @@ import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy;
 import org.eclipse.gef.requests.CreateConnectionRequest;
 import org.eclipse.gef.requests.ReconnectRequest;
 import org.fortiss.tooling.base.ui.command.ConnectionCommand;
-import org.fortiss.tooling.base.ui.dnd.ConnectionDragContext;
+import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDragContext;
 
 /**
  * This is the edit policy to be installed on edit parts that allow creation of
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/RelayCreateCommandEditPolicyBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/RelayCreateCommandEditPolicyBase.java
index 4ac2945123404005fbdfa0feb9ef6bad145cdf1f..d7b3102e818e9359da1add901987018abad90054 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/RelayCreateCommandEditPolicyBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/RelayCreateCommandEditPolicyBase.java
@@ -25,8 +25,8 @@ import org.eclipse.gef.Request;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.editpolicies.LayoutEditPolicy;
 import org.eclipse.gef.requests.CreateRequest;
-import org.fortiss.tooling.base.ui.dnd.ConnectionDropContext;
-import org.fortiss.tooling.base.ui.dnd.ElementDropContext;
+import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDropContext;
+import org.fortiss.tooling.base.ui.dnd.gef.ElementDropContext;
 import org.fortiss.tooling.base.ui.editpart.request.CreateConnectionCompositionRequest;
 import org.fortiss.tooling.base.ui.editpart.request.CreateElementCompositionRequest;
 import org.fortiss.tooling.kernel.extension.data.IConnectionCompositionContext;
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/RectangleLayoutUtils.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/RectangleLayoutUtils.java
index 20df2784e908befdf86a6f17d8098d002fe80a38..219da08059552ffa70c8394fcc959abb6d7ccdbb 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/RectangleLayoutUtils.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/RectangleLayoutUtils.java
@@ -26,7 +26,7 @@ import org.fortiss.tooling.base.layout.DefaultLayoutConstants;
 import org.fortiss.tooling.base.model.layout.EOrientation;
 import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
 import org.fortiss.tooling.base.model.layout.OffsetOrientation;
-import org.fortiss.tooling.base.ui.dnd.ElementDropContext;
+import org.fortiss.tooling.base.ui.dnd.gef.ElementDropContext;
 import org.fortiss.tooling.base.utils.LayoutModelElementFactory;
 
 /**
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDropTargetAdapter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDropTargetAdapter.java
index dad97433ee151370a0f792147a478b9b58dad025..49bf542d9ebbf58f9af2a380af17e8c7eff6e7fa 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDropTargetAdapter.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDropTargetAdapter.java
@@ -37,8 +37,6 @@ import org.fortiss.tooling.kernel.service.IElementCompositorService;
 public abstract class ElementCompositionDropTargetAdapter extends
 		DropTargetAdapter {
 
-	// TODO @review CD: Again: This class sure is useful yet has never been
-	// implemented. Has it ever been tested?
 	/** {@inheritDoc} */
 	@Override
 	public void drop(DropTargetEvent event) {
@@ -57,13 +55,12 @@ public abstract class ElementCompositionDropTargetAdapter extends
 			event.detail = DND.DROP_NONE;
 			return;
 		}
-		// TODO @review CD: abort when canCompose succeeds?
 		if (IElementCompositorService.INSTANCE.canCompose(target,
 				dragSource.getDesignatedElement(), null)) {
-			event.detail = DND.DROP_NONE;
+			event.detail = DND.DROP_COPY;
 			return;
 		}
-		event.detail = DND.DROP_COPY;
+		event.detail = DND.DROP_NONE;
 	}
 
 	/** Returns the current target element. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DragAndDropUtils.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DragAndDropUtils.java
index d092835a655507aaad4394005ea73528619e8ffd..6f57012c86e95fb9cc5c3594446c1c21e47b2899 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DragAndDropUtils.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DragAndDropUtils.java
@@ -19,7 +19,9 @@ package org.fortiss.tooling.kernel.ui.util;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.dnd.Transfer;
 import org.fortiss.tooling.kernel.extension.data.Prototype;
+import org.fortiss.tooling.kernel.ui.dnd.CompositionServiceLocalTransfer;
 import org.fortiss.tooling.kernel.ui.dnd.ElementCompositionSource;
 
 /**
@@ -52,4 +54,18 @@ public final class DragAndDropUtils {
 		}
 		return null;
 	}
+
+	/** Returns the transfered element composition source. */
+	public static ElementCompositionSource getElementCompositionSourceFromTransfer() {
+		return (ElementCompositionSource) CompositionServiceLocalTransfer
+				.getInstance().getObject();
+	}
+
+	/**
+	 * Returns the preferred transfer for the DND operation via composition
+	 * service.
+	 */
+	public static Transfer[] getCompositionServiceTransfers() {
+		return new Transfer[] { CompositionServiceLocalTransfer.getInstance() };
+	}
 }