   @msg['updown'] = 'Press R to move a floor up, F to move a floor down.'
   @msg['win'] = 'Yay! You mastered the maze!'
 
-  constructor: (@maze, frame, @messagebox, viewport) ->
+  constructor: (@maze, @frame, @messagebox, @viewport) ->
     # dynamic attributes
     [@x, @y, @z] = @maze.start
     @busy = false

        top: (@here.height - @above.height + 71) / 2
        left: (@here.width - @above.width + 71) / 2
    })
    frame.append(@container)

    # make invisible grid on which the pawn moves
    grid = $('<div id=grid></div>').css({

      @messagebox.append($('<p></p>').append(@makeTweetActionLink()).append('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class=actionLink href=javascript:location.reload()>play again</a>'))
      @disable()
    if [@x, @y, @z] of @maze.portals
      level = @maze.portals[[@x, @y, @z]]
      @destroy()
      new MazeUI3D(new RandomMaze([level, level, level]), @frame, @messagebox,
          @viewport)

  makeTweetActionLink: ->
    $('<a></a>')
        .attr({
            class: 'actionLink'
            target: '_blank'
            href: 'https://twitter.com/share?text=' + encodeURIComponent(
                @makeTweetText())
        })
        .append('tweet')

