@Override
    public boolean move(Player player, int[] position) 
    {
        // Check if player is the currentPlayer
        if (player != currentPlayer) 
        {
            if (currentPlayer == null)
            {
                player.message("Game Over!");
            } 
            else 
            {
                player.message("Not your turn!");   
            }
            return false;
        }
        // Make the move
        boolean validMove = board.move(player, position);
        // Check if there are any winners
        Player winner = getWinner();
        Player loser = getLoser();
        if (winner != null) {
            winner.wonGame(board, this);
            loser.lostGame(board, this);
            endGame();
            return validMove;
        }
        // Check if the board is full
        else if (board.isFull())
        {
            // Game over
            System.out.println("Draw");
            currentPlayer.drawGame(board, this);
            getNextPlayer(currentPlayer).drawGame(board, this);
            endGame();
            return validMove;
        }
        // Check if player's move was successful.
        if (validMove) 
        {
            // GOOD: Player's move was valid. Onto the next player.
            switchPlayer();
        }
        // Ask the next current player to make their move
        promptPlayerForMove(currentPlayer);
        // Return
        return validMove;
    }