first and last can accept explicit batchSize