Move rootAlphaBeta(NodeLVL1 node, int alpha, int beta, int player, int depth) 
            throws Exception {
        Move bestMove = null;
        this.value = -10000;
        DraughtsState state = node.getState();
        List<Move> moves = state.getMoves();
        if (moves.size() == 0){
            return moves.get(0);
        }
        for (Move move : moves){        
            state.doMove(move);
            alpha = max(alpha, -alphaBeta(new NodeLVL1(state.clone()), 
                    -beta, -alpha, -(player), depth - 1));
            state.undoMove(move);
            if (alpha > this.value){
                this.value = alpha;
                bestMove = move;
            }
        }
        System.out.println("PlayerLVL1 count:" + count);
        count = 0;
        if (bestMove == null){
            Collections.shuffle(moves);
            return moves.get(0);
        }
        return bestMove;
    }