More optimizations from @zeebo

Improved GetBatch to behave more like a Read()