   clone: ->
     new ThreeBSP.Vertex @x, @y, @z, @normal.clone(), @uv.clone()
 
-  lerp: (v, alpha) =>
+  lerp: (v, alpha) => returning super, =>
     # @uv is a V2 instead of V3, so we perform the lerp by hand
     @uv.add v.uv.clone().sub(@uv).multiplyScalar alpha
     @normal.lerp v, alpha
-    super
 
   interpolate: (args...) =>
     @clone().lerp args...


    return front.concat if @back then back else []

  clipTo: (node) =>
    @polygons = node.clipPolygons @polygons
    @front?.clipTo node
    @back?.clipTo node
    @

  # Converters/Exporters
  toMesh: (material=new THREE.MeshNormalMaterial()) =>
    geometry = @toGeometry()
    returning (mesh = new THREE.Mesh geometry, material), =>
      mesh.position.getPositionFromMatrix @matrix
      mesh.rotation.setEulerFromRotationMatrix @matrix

  toGeometry: () =>
    matrix = new THREE.Matrix4().getInverse @matrix

    returning (geometry = new THREE.Geometry()), =>
      for polygon in @tree.allPolygons()
        polyVerts = (v.clone().applyMatrix4(matrix) for v in polygon.vertices)
        for idx in [2...polyVerts.length]
          verts = [polyVerts[0], polyVerts[idx-1], polyVerts[idx]]
          vertUvs = (new THREE.Vector2(v.uv?.x, v.uv?.y) for v in verts)

          face = new THREE.Face3 (geometry.vertices.push(v) - 1 for v in verts)..., polygon.normal.clone()
          geometry.faces.push face
          geometry.faceVertexUvs[0].push vertUvs

  # CSG Operations
  subtract: (other) =>
