 			{
 				return description;
 			}
-			var descriptionXML : XML = getDescriptionXML(type);
-			if (descriptionXML.@name != 'Object' && descriptionXML.factory.extendsClass.length() == 0)
+			const descriptionXML : XML = getDescriptionXML(type);
+			const factory : XML = descriptionXML.factory[0];
+			if (descriptionXML.@name != 'Object' && factory.extendsClass.length() == 0)
 			{
 				throw new InjectorError('Interfaces can\'t be used as instantiatable classes.');
 			}
 
-			var injectionPoints : Array = [];
+			const injectionPoints : Array = [];
 			var node : XML;
 
 			//get constructor injections
 			var ctorInjectionPoint : InjectionPoint;
-			node = descriptionXML.factory.constructor[0];
+			node = factory.constructor[0];
 			if (node)
 			{
 				ctorInjectionPoint = new ConstructorInjectionPoint(node, type);

				ctorInjectionPoint = new NoParamsConstructorInjectionPoint();
			}
			var injectionPoint : InjectionPoint;
			//get injection points for variables
			for each (node in descriptionXML.factory.*.
					(name() == 'variable' || name() == 'accessor').metadata.(@name == 'Inject'))
			{
				injectionPoint = new PropertyInjectionPoint(node);


			//get post construct methods
			var postConstructMethodPoints : Array = [];
			for each (node in factory.method.metadata.(@name == 'PostConstruct'))
			{
				injectionPoint = new PostConstructInjectionPoint(node);
				postConstructMethodPoints.push(injectionPoint);
