now we ACTUALLY handle caching correctly