added block caching