Better render abstractions and caching