improved caching structure