enhance caching and doc