public void processSelection()
    {
        if (state == LobberState.WELCOME_PLAYER || state == LobberState.WAITING_FOR_OPPONENT)
        {
            if (playGrid[currentOpponentPos.getRow()][currentOpponentPos.getColumn()] == CellContent.NON_FILLED_CELL)
            {
                /*
                 * 1. Check if opponent won. If so, display message and give options
                 * 2. If not, player to find the best move and play it. Update the field.
                 * 3. Check if player won, display message and give options
                 * 4. Else, wait for opponent to play
                 */
                selectCell(currentOpponentPos, CellContent.OPPONENT_CELL);
                boolean opponentWinStatus = checkWinStatus(CellContent.OPPONENT_CELL, currentOpponentPos);
                if (opponentWinStatus)
                {
                    displayStatus(LobberState.OPPONENT_WON);
                    System.out.println("OPPONENT WON......");
                } else
                {
                    if (checkDrawnCondition())
                    {
                        displayStatus(LobberState.GAME_DRAWN);
                    } else
                    {
                        displayStatus(LobberState.PLAYER_THINKING);
                        GridPosition playerPosition = getBestMove();
                        selectCell(playerPosition, CellContent.PLAYER_CELL);
                        boolean playerWinStatus = checkWinStatus(CellContent.PLAYER_CELL, playerPosition);
                        if (playerWinStatus)
                        {
                            displayStatus(LobberState.PLAYER_WON);
                            System.out.println("PLAYER WON......");
                        } else
                        {
                            if (checkDrawnCondition())
                            {
                                displayStatus(LobberState.GAME_DRAWN);
                            } else
                            {
                                displayStatus(LobberState.WAITING_FOR_OPPONENT);
                            }

                        }
                    }
                }
            }
            checkDrawnCondition();
        }
    }