Index: Include/NsCore/Factory.h
===================================================================
--- Include/NsCore/Factory.h	(revision 10984)
+++ Include/NsCore/Factory.h	(working copy)
@@ -35,6 +35,9 @@
 /// Creates an instance of the specified component 
 NS_CORE_KERNEL_API Ptr<BaseComponent> CreateComponent(Symbol name);
 
+typedef Ptr<BaseComponent> (*FallbackHandler)(Symbol name);
+NS_CORE_KERNEL_API void SetFallbackHandler(FallbackHandler handler);
+
 /// Registers a component
 typedef BaseComponent* (*CreatorFn)(Symbol name);
 NS_CORE_KERNEL_API void RegisterComponent(Symbol name, Symbol category, CreatorFn func);
Index: Src/Factory.cpp
===================================================================
--- Src/Factory.cpp	(revision 10984)
+++ Src/Factory.cpp	(working copy)
@@ -27,7 +27,9 @@
 typedef HashMap<Symbol, Vector<Symbol>> CategoryMap;
 static CategoryMap gCategories;
 
+static Factory::FallbackHandler gFallbackHandler;
 
+
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 static ComponentMap::ConstIterator FallbackFind(Symbol name)
 {
@@ -44,7 +46,7 @@
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 bool Factory::IsComponentRegistered(Symbol name)
 {
-    return FallbackFind(name) != gComponents.End();
+    return FallbackFind(name) != gComponents.End() || (gFallbackHandler && gFallbackHandler(name));
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -64,10 +66,21 @@
         return *(it->value(name));
     }
 
+    if (gFallbackHandler != nullptr)
+    {
+        return gFallbackHandler(name);
+    }
+
     return nullptr;
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
+void Factory::SetFallbackHandler(FallbackHandler handler)
+{
+    gFallbackHandler = handler;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
 void Factory::RegisterComponent(Symbol name, Symbol category, Factory::CreatorFn func)
 {
     NS_ASSERT(!name.IsNull());
