implemented async batching