diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/EmbeddedReferenceControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/EmbeddedReferenceControl.java
index f0f2305..d307fc9 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/EmbeddedReferenceControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/EmbeddedReferenceControl.java
@@ -12,6 +12,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.ECPUtil;
 
 public class EmbeddedReferenceControl extends AbstractEmbeddedControl {
@@ -19,10 +20,13 @@
 	protected Hyperlink hyperlink;
 	protected AdapterImpl valueAdapter;
 	protected EObject value;
-
-	public EmbeddedReferenceControl(IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain, int initialIndex) {
+	protected ECPModelElementOpener modelElementOpener;
+	
+	public EmbeddedReferenceControl(IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain, int initialIndex, ECPModelElementOpener modelElementOpener) {
 		super(propertyDescriptor, modelElement, editingDomain, initialIndex);
 		
+		this.modelElementOpener = modelElementOpener;
+		
 		valueAdapter = new AdapterImpl() {
 
 			@Override
@@ -85,9 +89,8 @@
 				public void handle(ActionEvent arg0) {
 					if (eList.size() > index) {
 						Object item = eList.get(index);
-						// TODO: change this to model element opener
-						//if (item instanceof EObject)
-							//context.openInNewContext((EObject) item);
+						if (item instanceof EObject)
+							modelElementOpener.openModelElement((EObject) item);
 					}
 				}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/MultiControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/MultiControl.java
index a605a43..04b6cd5 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/MultiControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/MultiControl.java
@@ -39,7 +39,8 @@
 	protected EList<Object> values;
 	protected VBox controlsBox;
 	protected ECPControlBase addControl;
-	private Command addReferenceCommand;
+	protected Command addReferenceCommand;
+	protected ECPModelElementOpener modelElementOpener;
 
 	class Skin extends SkinBase<MultiControl> {
 
@@ -49,9 +50,10 @@
 
 	}
 
-	public MultiControl(final IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain) {
+	public MultiControl(final IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 		super(propertyDescriptor, modelElement, editingDomain);
-
+		this.modelElementOpener = modelElementOpener;
+		
 		setSkin(new Skin(this));
 
 		values = (EList<Object>) modelElement.eGet(feature);
@@ -179,7 +181,7 @@
 			final EObject modelElement, final EditingDomain editingDomain, int i) {
 
 		if (feature instanceof EReference) {
-			return new EmbeddedReferenceControl(propertyDescriptor, modelElement, editingDomain, i);
+			return new EmbeddedReferenceControl(propertyDescriptor, modelElement, editingDomain, i, modelElementOpener);
 		} else if (feature.getEType() instanceof EEnum) {
 			return new EmbeddedEnumControl(propertyDescriptor, modelElement, editingDomain, i);
 		} else {
@@ -207,7 +209,7 @@
 
 		@Override
 		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
-			return new MultiControl(itemPropertyDescriptor, modelElement, editingDomain);
+			return new MultiControl(itemPropertyDescriptor, modelElement, editingDomain, modelElementOpener);
 		}
 
 	}
