most of the rewriting
Merge branch 'master' of https://github.com/ravinet/dependency_caching