   continueDraw: (x, y) ->
     return unless @isDrawing
     @currentShape.addPoint(x, y)
-    @currentShape.drawLatest(@ctx)
+    @repaint()
 
   endDraw: (x, y) ->
     return unless @isDrawing
     @isDrawing = false
     @currentShape.addPoint(x, y)
-    @currentShape.drawLatest(@ctx)
     @saveShape()
 
   saveShape: ->
-    console.log @currentShape.points
-    @currentShape.points = LC.bspline LC.bspline LC.bspline @currentShape.points
-    console.log @currentShape.points
     @shapes.push(@currentShape)
-    @currentShape.drawLatest(@ctx)
     @currentShape = undefined
     @repaint()
 

    @ctx.clearRect(0, 0, @canvas.width, @canvas.height)
    _.each @shapes, (s) =>
      s.draw(@ctx)
 

class LC.LinePathShape

    @points.push(@lcState.makePoint(x, y))

  draw: (ctx) ->
    smoothedPoints = LC.bspline(LC.bspline(LC.bspline(@points)))
    return unless smoothedPoints.length
    ctx.beginPath()
    ctx.moveTo(smoothedPoints[0].x, smoothedPoints[0].y)
    _.each _.rest(smoothedPoints), (p) ->
      ctx.strokeStyle = p.color
      ctx.lineWidth = p.size
      ctx.lineTo(p.x, p.y)
