single threaded batching