                     || !(_flags[nodeId] & FLAG_INIT_LOCAL_TO_WORLD))
                     dirtyRoot = tmpNodeId;
                 
+                path[numNodes] = tmpNodeId;
+                ++numNodes;
+                
                 tmpNodeId = _parentId[tmpNodeId];
             }
             
             if (dirtyRoot >= 0)
-                updateLocalToWorld(dirtyRoot, nodeId);
+                updateLocalToWorldPath(path);
+//                updateLocalToWorld(dirtyRoot, nodeId);
         }
         
         private function targetAddedHandler(ctrl	: TransformController,

            }
        }
        
        private function updateAncestorsAndSelfLocalToWorld(nodeId : uint) : void
        {
            var dirtyRoot : int = -1;
            var tmpNodeId : int = nodeId;
            
            while (tmpNodeId >= 0)
            {

            return worldToLocalTransform;
        }
        
        public function getSharedLocalToWorldTransformReference(node    : ISceneNode) : Matrix4x4
        {
            return _localToWorldTransforms[getNodeId(node)];
        }
        
        public function setSharedLocalToWorldTransformReference(node      : ISceneNode,
                                                                matrix    : Matrix4x4) : void
        {
