public Position chooseComputerMove (int side) {
        int opp, simpleEvaluation, value;
        int bestRow = 0, bestColumn = 0;
        Position reply;

        if ((simpleEvaluation = gameStatus()) != Constants.UNCLEAR){
            return new Position(simpleEvaluation);
        }

        if(side == Constants.COMPUTER) {
            opp = Constants.HUMAN;
            value = Constants.HUMAN_WIN;
        } else {
            opp = Constants.COMPUTER;
            value = Constants.COMPUTER_WIN;
        }

        for (int row = 0; row < Constants.NUM_OF_ROWS; row++) {
            for (int column = 0; column < Constants.NUM_OF_COLS; column++) {
                if (board[row][column] == Constants.EMPTY) {
                    board[row][column] = side;
                    reply = chooseComputerMove(opp);
                    board[row][column] = Constants.EMPTY;
                    if (side == Constants.COMPUTER && reply.getValue() > value || side == Constants.HUMAN && reply.getValue() < value) {
                        value = reply.getValue();
                        bestRow = row;
                        bestColumn = column;
                    }
                }
            }
        }
        return new Position (value, bestRow, bestColumn);
    }