added caching & pull completion