add caching and uninstall behavior