 		 * 
 		 */
 		public function testRay(ray 		: Ray,
-								transform	: Matrix4x4	= null) : Boolean
+								transform	: Matrix4x4	= null,
+								maxDistance	: Number	= Number.POSITIVE_INFINITY) : Boolean
 		{
 			var localOrigin 	: Vector4	= transform
-				? transform.transformVector(ray.origin)
+				? transform.transformVector(ray.origin, TMP_VECTOR4)
 				: ray.origin;
+			var ox				: Number	= localOrigin.x;
+			var oy				: Number	= localOrigin.y;
+			var oz				: Number	= localOrigin.z;
+			
 			var localDirection	: Vector4	= transform
-				? transform.deltaTransformVector(ray.direction)
+				? transform.deltaTransformVector(ray.direction, TMP_VECTOR4)
 				: ray.direction;
 			
 			localDirection.normalize();
 			
-			var ox		: Number	= localOrigin.x;
-			var oy		: Number	= localOrigin.y;
-			var oz		: Number	= localOrigin.z;
+			var dx		: Number	= 1.0 / localDirection.x;
+			var dy		: Number	= 1.0 / localDirection.y;
+			var dz		: Number	= 1.0 / localDirection.z;
+			
 			var minX	: Number	= _min.x;
 			var minY	: Number	= _min.y;
 			var minZ	: Number	= _min.z;

			var maxY	: Number	= _max.y;
			var maxZ	: Number	= _max.z;
			
			return false;
		}

		public function clone() : BoundingBox

	{
		use namespace minko_math;

		private static const TMP_VECTOR4	: Vector4	= new Vector4();
		
		minko_math var _min			: Vector4			= new Vector4();
		minko_math var _max			: Vector4			= new Vector4();

		minko_math var _vertices	: Vector.<Number>	= new Vector.<Number>(24, true);

