add batch processing