diff --git a/OpenRa.DataStructures/OpenRa.DataStructures.csproj b/OpenRa.DataStructures/OpenRa.DataStructures.csproj
index 8da1f21edd..b0d2c9ca21 100644
--- a/OpenRa.DataStructures/OpenRa.DataStructures.csproj
+++ b/OpenRa.DataStructures/OpenRa.DataStructures.csproj
@@ -33,6 +33,10 @@
prompt
+
+ False
+ ..\Ijw.DirectX\Release\IjwFramework.dll
+
3.5
diff --git a/OpenRa.DataStructures/TypeDictionary.cs b/OpenRa.DataStructures/TypeDictionary.cs
index 574e624cbe..81fedaf549 100755
--- a/OpenRa.DataStructures/TypeDictionary.cs
+++ b/OpenRa.DataStructures/TypeDictionary.cs
@@ -1,50 +1,56 @@
using System;
using System.Collections.Generic;
-using System.Text;
+using System.Linq;
+using System.Reflection;
+using IjwFramework.Collections;
namespace OpenRa
{
public class TypeDictionary
{
- Dictionary inner = new Dictionary();
-
- public void Add( Type t, object val )
- {
- inner.Add( t, val );
- }
+ Cache> innerInherit = new Cache>( _ => new List