public void tick (int verb) 
    {
        if(!gameOn) return;
        
        //sets the new ivars
        Move newMove = computeNewPosition(verb, currentMove);
        
        //how to detect when a piece has landed
        //if this move hits something on its down vert, and the pervious verb was also down
        //then the pervious position must be the correct landed position
        
        if(board.canPlace(newMove)) 
        {
            currentMove = newMove;
            displayBoard = new DisplayBoard(board);
            displayBoard.place(currentMove);
        }
        else
        {
            //landed
            if(verb == DOWN)
            {
                board.place(currentMove);
                rowsCleared += board.clearRows();
                
                //check to see if board is too tall
                if(board.getMaxHeight() > board.getHeight() - TOP_SPACE)
                {
                    gameOn = false;
                }
                else
                {
                    //add a new piece and keep playing
                    addNewPiece();
                }
            }
        }
    }