public boolean makeMove(BoardViewer board) {
		move = new Move();
		move.setPlayer(personalSymbol);
		
		//If winning move available, make it
        String index;
        index = rowWithWinningMove(board, personalSymbol);
        if (!index.equals("")) {
            move.setPosition(getRowEmptySpace(board, index));
            return board.updateBoard(move);
        }

        index = colWithWinningMove(board, personalSymbol);
        if (!index.equals("")) {
            move.setPosition(getColEmptySpace(board, index));
            return board.updateBoard(move);
        }

        index = digWithWinningMove(board, personalSymbol);
        if (!index.equals("")) {
            move.setPosition(getDigEmptySpace(board, index));
            return board.updateBoard(move);
        }

		//Search for opponent's winning move, and stop it
        index = rowWithLosingMove(board, personalSymbol);
        if (!index.equals("")) {
            move.setPosition(getRowEmptySpace(board, index));
            return board.updateBoard(move);
        }

        index = colWithLosingMove(board, personalSymbol);
        if (!index.equals("")) {
            move.setPosition(getColEmptySpace(board, index));
            return board.updateBoard(move);
        }

        index = digWithLosingMove(board, personalSymbol);
        if (!index.equals("")) {
            move.setPosition(getDigEmptySpace(board, index));
            return board.updateBoard(move);
        }

        //Else, make a random move
        int position = board.getBoardSize() * board.getBoardSize();
        move.setPosition(getRandomPosition(position));

		return board.updateBoard(move);
	}