improve batch operation