add caching back in to new async load model