diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/.ratings
index 34e8ebcbd069598e9547d1358ca0b74f5523a123..cdefb51652be0a3f0bab65ab20cb047d26514212 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/.ratings
@@ -1,4 +1,4 @@
 DelegatingControllerFactory.java ad214d83b5821b39862b7c382c91a13c3dfddbd0 YELLOW
 DelegatingFactoryBase.java f421742267610f41bb6196346026d2f239d90ed0 YELLOW
-DelegatingModelFactory.java ea7c3e1c612101bb3ba71d7dc97893783c0319a3 YELLOW
+DelegatingModelFactory.java 87ad29bc457b6316392625fb63221039bbb7c616 YELLOW
 DelegatingVisualFactory.java 7e834acd12ae4d1c2b2b32a5456dc9f2b6d4e466 YELLOW
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/DelegatingModelFactory.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/DelegatingModelFactory.java
index ea7c3e1c612101bb3ba71d7dc97893783c0319a3..87ad29bc457b6316392625fb63221039bbb7c616 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/DelegatingModelFactory.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/DelegatingModelFactory.java
@@ -55,9 +55,9 @@ public class DelegatingModelFactory extends DelegatingFactoryBase<IModelFactory>
 			constructFactory(Class<? extends IModelFactory> delegateFactory) {
 		Constructor<? extends IModelFactory> ctor = null;
 		try {
-			// TODO(AD): Avoid that cast...
-			ctor = getMatchingAccessibleConstructor(delegateFactory,
-					getInterfaceType((EObject)editedObject));
+			Class<?> ctorParamType = (editedObject instanceof EObject)
+					? getInterfaceType((EObject)editedObject) : editedObject.getClass();
+			ctor = getMatchingAccessibleConstructor(delegateFactory, ctorParamType);
 			try {
 				return Optional.of(ctor.newInstance(editedObject));
 			} catch(InstantiationException | IllegalAccessException | IllegalArgumentException |