public Move computeNewPosition(int verb, Move currentMove)
    {
        //as a starting point, the new position is the same as the old
        Piece newPiece = currentMove.piece;
        int newX = currentMove.x;
        int newY = currentMove.y;
        
        //make changes based on the verbs
        switch(verb)
        {
            case LEFT: newX--; break;
            case RIGHT: newX++; break;
            case ROTATE: newPiece = newPiece.nextRotation();
                
            //make the piece rotate at its center
            newX = newX + (currentMove.piece.getWidth() - newPiece.getWidth())/2;
            newY = newY + (currentMove.piece.getHeight() - newPiece.getHeight())/2;
                
            break;
                
            case DOWN: newY--; break;
            case DROP: newY = board.dropHeight(newPiece, newX);
                if(newY > currentMove.y)
                {
                    newY = currentMove.y;
                }
            break;
            default: throw new RuntimeException("Bad verb");
        }
        
        Move newMove = new Move();
        newMove.piece = newPiece;
        newMove.x = newX;
        newMove.y = newY;
        
        return newMove;
    }