                         @camera.position.z = z(t)
                 .each "end", resolve
 
+    getBBoxFromSubset: (parent, array) ->
+        siblings = parent.children.filter (child) ->
+            return array.indexOf(child) < 0
+        parent.remove.apply parent, siblings
+        box = getBBox parent
+        parent.add.apply parent, siblings
+        return box
+
     getBBox = (object) ->
-        box = new THREE.Box3()
-        box.setFromObject object
+        bbox = new THREE.BoundingBoxHelper( object, 0xff0000 )
+        do bbox.update
+        box = bbox.box
+
         return box
 
-    panCameraToBBox: (object, duration) =>
-        # bbox = new THREE.BoundingBoxHelper( object, 0xff0000 )
-        # do bbox.update
-        # box = bbox.box
-
+    panCameraToObject: (object, duration) =>
         box = getBBox object
-
+        @panCameraToBBox box, duration
+
+    panCameraToBBox: (box, duration) =>
         @panCameraToPosition3 box.center(), duration
 
     zoomCameraToPosition: (target, duration) =>

    alignToNode: alignToNode

    getLetterObjectsForWord: (text_object, word, accessor) ->
        line = text_object._line
        if accessor? then line = accessor text_object
        debugger if typeof line isnt "string"
        begin = getWordIndex line, word
        end = begin + word.length


            if node.children
                faded_in.then =>
                    @panCameraToObject(text_object)
                .then =>
                    if node.parent?
                        siblings = node.parent.children.filter (child) ->
