     @options ?= {}
     @matrix ?= new THREE.Matrix4()
 
-    console.log "Options:", @options
-    console.log "Matrix:", @matrix
-
-    # Start a timer if we have a timeout
-    if @options.timeout?
-      @options.timer = new Timelimit(@options.timeout)
+    # Start a timer if one wasn't passed
+    @options.timer ?= new Timelimit(@options.timeout)
 
     @tree   = @toTree treeIsh
 

      polygons = undefined

    @polygons = []
    @options?.timer?.doTask? =>
      @build(polygons) if polygons? and polygons.length

  build: (polygons) => returning this, =>
    sides = front: [], back: []
    @divider ?= polygons[0].clone()
    for poly in polygons
      @options?.timer?.doTask? =>
        @divider.subdivide poly, @polygons, @polygons, sides.front, sides.back

    for own side, polys of sides
      if polys.length

##
## ThreeBSP.Node
class ThreeBSP.Node
  clone: => returning (node = new ThreeBSP.Node(@options)), =>
    node.divider  = @divider?.clone()
    node.polygons = @options.timer.doTask => (p.clone() for p in @polygons)
    node.front    = @options.timer.doTask => @front?.clone()
    node.back     = @options.timer.doTask => @back?.clone()


  constructor: (polygons, @options={}) ->
    if polygons? and not (polygons instanceof Array)
