Add output caching