diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/CompositionServiceLocalTransfer.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/CompositionServiceLocalTransfer.java
index 139728b195e18bc7cc141b38729c19bb63fcb66a..8d2e0edc6ecb00823eed8fc090166c104be8e912 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/CompositionServiceLocalTransfer.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/CompositionServiceLocalTransfer.java
@@ -28,7 +28,7 @@ import org.fortiss.tooling.kernel.service.IElementCompositorService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash:
+ * @ConQAT.Rating YELLOW Hash: 736E49D75B233CB065D623C1236DEE52
  */
 public class CompositionServiceLocalTransfer extends SimpleObjectTransfer {
 	/** Singleton instance. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDragSourceAdapter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDragSourceAdapter.java
index ec987761247f704e682f2a99e753e69a565f0f8d..2bd7cd27147916a89e11f44c42c15e2a3d130518 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDragSourceAdapter.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDragSourceAdapter.java
@@ -32,7 +32,7 @@ import org.eclipse.swt.dnd.DragSourceAdapter;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F6A441B08B971BCE814614E2C95BF3AF
+ * @ConQAT.Rating YELLOW Hash: 95C337E875F3C6A557C6067C7B4D4C42
  */
 public abstract class ConnectionCompositionDragSourceAdapter extends
 		ElementCompositionDragSourceAdapter {
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDropTargetAdapter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDropTargetAdapter.java
index 7af87d886a69eb560f09b14633b9eda12d62782b..83379ff4f9c35457bf3e0fd8658bf5a522ffbbc7 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDropTargetAdapter.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDropTargetAdapter.java
@@ -17,7 +17,12 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.kernel.ui.dnd;
 
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DropTargetAdapter;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.widgets.Widget;
+import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
 
 /**
  * {@link DropTargetAdapter} for completing an EObject connection via a drop
@@ -30,5 +35,41 @@ import org.eclipse.swt.dnd.DropTargetAdapter;
  */
 public abstract class ConnectionCompositionDropTargetAdapter extends
 		DropTargetAdapter {
-	// TODO: implement
+
+	/** {@inheritDoc} */
+	@Override
+	public void drop(DropTargetEvent event) {
+		ConnectionCompositionSource dragSource = getDragSourceFromTransfer();
+		EObject target = getTargetModel(event.item);
+		IConnectionCompositorService.INSTANCE.connect(
+				dragSource.getDesignatedElement(), target,
+				dragSource.getDesignatedParentElement(), null);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void dragOver(DropTargetEvent event) {
+		ConnectionCompositionSource dragSource = getDragSourceFromTransfer();
+		EObject target = getTargetModel(event.item);
+		if (target == null || dragSource.getDesignatedElement() == null) {
+			event.detail = DND.DROP_NONE;
+			return;
+		}
+		if (IConnectionCompositorService.INSTANCE.canConnect(
+				dragSource.getDesignatedElement(), target,
+				dragSource.getDesignatedParentElement(), null)) {
+			event.detail = DND.DROP_NONE;
+			return;
+		}
+		event.detail = DND.DROP_LINK;
+	}
+
+	/** Returns the current target element. */
+	protected abstract EObject getTargetModel(Widget dropTarget);
+
+	/** Returns the transfered object. */
+	private ConnectionCompositionSource getDragSourceFromTransfer() {
+		return (ConnectionCompositionSource) CompositionServiceLocalTransfer
+				.getInstance().getObject();
+	}
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionSource.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionSource.java
index b9f3fa1e0c6873b93e265cfedfebffc916bbc1cc..fda6aced469e873f9e4058fe596dc8af7e975b04 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionSource.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionSource.java
@@ -18,14 +18,17 @@ $Id$
 package org.fortiss.tooling.kernel.ui.dnd;
 
 import org.eclipse.emf.ecore.EObject;
+import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
 
 /**
- * DND transfer object for EObject linking.
+ * DND transfer object for EObject connection composition. If an object of this
+ * class is transfered via DND, the drop target usually uses the information
+ * contained herein to call the {@link IConnectionCompositorService}.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 8DA926A0F40041760D2A719D7D70F954
+ * @ConQAT.Rating YELLOW Hash: 7A9A3F2F21B95A7ABBC4CD6743224DD6
  */
 public class ConnectionCompositionSource extends ElementCompositionSource {
 	/** Stores the designated parent element. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDragSourceAdapter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDragSourceAdapter.java
index f9b494024137a03cd8607548643be1f80bfdafd4..a273d52961bc0bbdd16324623d4a4baab5f99154 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDragSourceAdapter.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDragSourceAdapter.java
@@ -32,7 +32,7 @@ import org.eclipse.swt.dnd.Transfer;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 26A507800DA077F9F9F4593751639A74
+ * @ConQAT.Rating YELLOW Hash: 70273F4B405C5A2C55ACC3BFFC57D5C1
  */
 public abstract class ElementCompositionDragSourceAdapter extends
 		DragSourceAdapter {
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionSource.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionSource.java
index 32dfae1b3b84af7207b9ec43740fa44caeeb4ce3..67b66d9088c7bac094e68b07635ddab601152d85 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionSource.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionSource.java
@@ -18,14 +18,17 @@ $Id$
 package org.fortiss.tooling.kernel.ui.dnd;
 
 import org.eclipse.emf.ecore.EObject;
+import org.fortiss.tooling.kernel.service.IElementCompositorService;
 
 /**
- * DND transfer object for EObject element composition.
+ * DND transfer object for EObject element composition. If an object of this
+ * class is transfered via DND, the drop target usually uses the information
+ * contained herein to call the {@link IElementCompositorService}.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: A077E28503FF32EFBB402C70FC7A61C2
+ * @ConQAT.Rating YELLOW Hash: EAB27D084A09CC5D79CABEBF38DCD7F9
  */
 public class ElementCompositionSource {