int alphaBetaMin(int alpha, int beta, int depthleft) {
        if (depthleft == 0) {
            return -eval(mPieces, oPieces);
        }
        for (Piece a : oPieces) {            
            Move[] possible = a.getMoves(board);
            System.out.println("min, white : " + a.white + ", # nodes " + possible.length);
            for (Move b : possible) {
                b.make(board);
                a.update(b.x2, b.y2);
                score = alphaBetaMax(alpha, beta, depthleft - 1);
                if (score <= alpha) {
                    return alpha; // fail hard alpha-cutoff
                }
                if (score < beta) {
                    beta = score; // beta acts like min in MiniMax
                }
                b.unmake(board);
                a.update(b.x1, b.y1);
            }
        }
        return beta;
    }