 				dependency[objA] = behind;
 			}
 
+			trace("dependency scan time", getTimer() - startTime, "ms");
+			
+			// TODO - set the invalidated children first, then do a rescan to make sure everything else is where it needs to be, too?  probably need to order the invalidated children sets from low to high index
+			
 			// Set the childrens' depth, using dependency ordering
 			var depth:uint = 0;
 			var visited:Dictionary = new Dictionary();
-			var place:Function = function(obj:IIsoDisplayObject):void
+			var place:Function = function(obj:IsoDisplayObject):void
 			{
 				if (visited[obj])
 					return;
 				visited[obj] = true;
 				
-				for each(var inner:IIsoDisplayObject in dependency[obj])
+				for each(var inner:IsoDisplayObject in dependency[obj])
 					place(inner);
 					
 				scene.setChildIndex(obj, depth);
 				++depth;
 			};
 			
-			for each(var obj:IIsoDisplayObject in children)
+			for each(var obj:IsoDisplayObject in children)
 			{
 				place(obj);
 			}

package as3isolib.display.renderers
{
	import as3isolib.bounds.IBounds;
	import as3isolib.core.IIsoDisplayObject;
	import as3isolib.core.as3isolib_internal;
	import as3isolib.display.scene.IIsoScene;
	import flash.utils.Dictionary;
	

		{
			var startTime:uint = getTimer();

			// Rewrite #2 by David Holz, dependency version (naive for now)
			
			// TODO - screen space subdivision to limit dependency scan
			// TODO - cache dependencies between frames, only adjust invalidated objects, keeping old ordering as best as possible
			
			// IIsoDisplayObject -> [obj that should be behind the key]
			var dependency:Dictionary = new Dictionary();
			
			// For now, use the non-rearranging display list so that the dependency sort will tend to create similar output each pass
			var children:Array = scene.displayListChildren;
			
			// Full naive cartesian scan, see what objects are behind child[i]
