Shared cache

needs review, and some more package discussion, but it is very functional and would like to merge sooner than later.