basically:

* header and storage that are inner mutable
* a bunch of interfaces (arcmutex, producer, consumer, etc) that need an owned or borrowed reference to the hdr+storage
* some way to drop the storage if it's an arc, or not drop the storage if it's a static, when all the interfaces are dropped