Shared cache

needs review, and some more package discussion, but it is very functional and would like to merge sooner than later.
no, an exception thrown bypasses the caching.