caching more stuff, invalidate it more intelligently