Feature: add batch processing