   constructor: (puzzle_app) ->
     @puzzle = puzzle_app
     @all_pieces = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"]
-    @pieces_in_puzzle = 16
 
 
   start_new_puzzle: () ->
+    @finished = false
     @unset_pieces = []
     @unset_pieces[p] = @puzzle.pz_status.all_pieces[p] for p in [0..15]
+    @pieces_in_puzzle = 16
     @pieces_set = 0
+    @puzzle.ui_status.reset()
+    @puzzle.puzzle_view.reset()
     @start_first_piece()
 
 

  constructor: (puzzle_app) ->
    @puzzle = puzzle_app

    @drag_active = false
    @mouse_on_hex = false
    @active_hex = [99,99]

    x = px-dx
    y = py-dy

    if @pz_status.finished == true
      @pz_status.start_new_puzzle()
    else
      if @puzzle.piece.in_bounding_box(x,y)
        @ui_status.activate_piece_drag()
        @puzzle.hex_box.get_anchor_to_dragpoint(x,y)
        mouse_hex = @puzzle.grid_model.get_hex(x,y)


  handle_mouseup: (e) ->
