diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TransformationService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TransformationService.java
index fc93e9fb59647cc6296f9ac7b6da6410a631ad08..3fd8d0995daee1ad4dd71efaa7f53ef34ac53826 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TransformationService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TransformationService.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.conqat.lib.commons.reflect.ReflectionUtils;
 import org.fortiss.tooling.kernel.extension.ITransformationProvider;
 import org.fortiss.tooling.kernel.extension.data.ITransformationContext;
 import org.fortiss.tooling.kernel.extension.data.TransformationProviderChain;
@@ -140,8 +141,8 @@ public class TransformationService extends
 			// infinite loop protection
 			return;
 		}
-		Map<Class<?>, List<ITransformationProvider>> providerMap = handlersBySource
-				.get(sourceClass);
+		Map<Class<?>, List<ITransformationProvider>> providerMap = ReflectionUtils
+				.performNearestClassLookup(sourceClass, handlersBySource);
 		if (providerMap == null || providerMap.isEmpty()) {
 			// dead end reached
 			return;