having the pass the first batch on initialization is awkward, and a better API design would be something could just iterate over all the batches having to accept the result by calling ...