 		
 		private function updateRootLocalToWorld(nodeId : uint = 0) : void
 		{
-			var rootLocalToWorld	: Matrix4x4		= _localToWorldTransforms[nodeId];
-			var rootTransform		: Matrix4x4		= _transforms[nodeId];
-			var root				: ISceneNode	= _idToNode[nodeId];
-			var rootFlags           : uint          = _flags[nodeId];
+			var rootLocalToWorld		: Matrix4x4		= _localToWorldTransforms[nodeId];
+			var rootTransform			: Matrix4x4		= _transforms[nodeId];
+			var root					: ISceneNode	= _idToNode[nodeId];
+			var rootFlags           	: uint			= _flags[nodeId];
 			
 			if (rootTransform._hasChanged || !(rootFlags & FLAG_INIT_LOCAL_TO_WORLD))
 			{
+				_prevLocalToWorld.copyFrom(rootLocalToWorld);
+				
 				if (rootFlags & FLAG_LOCK_TRANSFORMS)
 					rootLocalToWorld.lock();
 				

				var childFlags          : uint          = _flags[childId];
				var child	            : ISceneNode	= _idToNode[childId];
				
				prevChildLocalToWorld.copyFrom(childLocalToWorld);
				
				if (childFlags & FLAG_LOCK_TRANSFORMS)
					childLocalToWorld.lock();

				
				var localToWorldTransformChanged : Signal = root.localToWorldTransformChanged;
				
				if (root.localToWorldTransformChanged.enabled && !_prevLocalToWorld.compareTo(rootLocalToWorld))
					root.localToWorldTransformChanged.execute(root, rootLocalToWorld);
			}
		}
		
		private function updateLocalToWorld(nodeId : uint = 0) : void
		{
			var numNodes 				: uint			= _transforms.length;
			var subtreeMax  			: uint			= nodeId;
			
			updateRootLocalToWorld(nodeId);
			
