 				throw new IllegalOperationError("Type cannot be null when resolving.");
 			
 			var parameters:Array = [];
-			var description:XML = describeType(type);
+			var description:XML;
+			
+			if (_descriptions[type] !== undefined)
+				description = _descriptions[type];
+			else
+				description = _descriptions[type] = describeType(type);
+			
 			var constructor:XMLList = description.factory.constructor;
 			
 			if (constructor.length() === 0)

	public class AsFactory
	{
		private var _registrations:Dictionary;
		
		/**
		 * Constructs a new AsFactory

		public function AsFactory()
		{
			_registrations = new Dictionary();
			_descriptions = new Dictionary();
		}
		
		/**
