added render caching