   constructor: (puzzle_app) ->
 
     @puzzle = puzzle_app
+    @hex_box = @puzzle.hex_box
+    @box = new PieceRenderBox(this)
+    @piece_mask  = new PiecePattern(this)
+    @redraw = new PieceRedrawBuffer
     @hexes = []
-
-    @grid_model = @puzzle.grid_model
-
-    @box = new PieceRenderBox(this)
-    @p_mask  = new PiecePattern(this)
-    @redraw = new PieceRedrawBuffer
 
 
   construct_piece: (sym) ->
     @sym = sym
     @hexes = @get_hexes()
+    @hex_box.set_hex_box(sym) # NEW
     @box.set_box_dimensions()
-    @p_mask.draw_pattern()
+    @piece_mask.draw_piece_pattern()
     @draw_piece(0,100)
     @cut_piece_from_photo()
 
+
   cut_piece_from_photo: () ->
 
     @photo_clip = document.createElement('canvas')
     @photo_clip.id = "photo-clip"
-    @photo_clip.width = @box.width
-    @photo_clip.height = @box.height
+    @photo_clip.width = @hex_box.width
+    @photo_clip.height = @hex_box.height
     @photo_clip_context = @photo_clip.getContext('2d')
-    @photo_clip_context.drawImage(@puzzle.puzzle_view.img,@box.box_xy[0],@box.box_xy[1],@box.width,@box.height,0,0,@box.width,@box.height)
+
+    xx = @hex_box.box_xy[0] - @puzzle.puzzle_view.puzzle_xy[0]
+    yy = @hex_box.box_xy[1] - @puzzle.puzzle_view.puzzle_xy[1]
+
+    @photo_clip_context.drawImage(@puzzle.puzzle_view.img,xx,yy,@hex_box.width,@hex_box.height,0,0,@hex_box.width,@hex_box.height)
 
     view_context = @puzzle.puzzle_view.context_canvas
     view_context.drawImage(@photo_clip,0,190)
 
-    context = @p_mask.piece_mask_context
+    context = @piece_mask.piece_mask_context
     context.globalCompositeOperation = 'source-atop'
     context.drawImage(@photo_clip,0,0)
     context.globalCompositeOperation = 'source-over'
 
 
-  draw_piece_ab: (a,b) ->
-
-    b = b-1 if a%2 == 0 and @box.anchor_hex[0] % 2 == 1
-    x = 107+a*14
-    y = 18+b*20
-    y = y+9 if @box.high_hex_adjust
-    y = y+9 if Math.abs(@box.anchor_hex[0] - a) % 2 == 1
-    @draw_piece(x,y)
+  # TODO Let the revised method use a new HexBox method that gives x,y values
+  # for rendering a piece at any arbitrary a,b.
+  draw_piece_ab: (a,b) -> #FIXME Right now, this actually draws the piece at its own a,b location.
+    xy = @puzzle.hex_box.get_box_xy()
+    @draw_piece(xy[0],xy[1])
+
+
+#  draw_piece_ab: (a,b) ->
+
+#    b = b-1 if a%2 == 0 and @box.anchor_hex[0] % 2 == 1
+#    x = 107+a*14
+#    y = 18+b*20
+#    y = y+9 if @box.high_hex_adjust
+#    y = y+9 if Math.abs(@box.anchor_hex[0] - a) % 2 == 1
+#    @draw_piece(x,y)
 
 
   draw_piece: (x,y) ->
     context = @puzzle.puzzle_view.context_canvas
-    context.drawImage(@p_mask.img,x,y)
+    context.drawImage(@piece_mask.img,x,y)
 
 
   # TODO Does this method belong in PuzzlePattern class?

  constructor: (piece) ->

    @piece = piece


  set_box_dimensions: () ->

  constructor: (puzzle_app) ->

    @puzzle = puzzle_app
    @puzzle_pattern = @puzzle.puzzle_pattern
    @grid = @puzzle_pattern.grid
    @hex_draw = @puzzle.hex_draw
    @missing = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"]

