move caching to BatchControllerBase