           geometry.faceVertexUvs[0].push vertUvs
 
   # CSG Operations
-  subtract: (other) => @options.timer.doTask =>
+  subtract: (other) => @options.timer.doTask => other.withTimer @options.timer, =>
     [us, them] = [@tree.clone(), other.tree.clone()]
     us
       .invert()

      .invert()
      .clipTo(us)
      .invert()
    new ThreeBSP us.build(them.allPolygons()).invert(), @matrix

  union: (other) =>
    [us, them] = [@tree.clone(), other.tree.clone()]

    node.front    = @options.timer.doTask => @front?.clone()
    node.back     = @options.timer.doTask => @back?.clone()

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