perhaps draft working enable_shared_from_this for SharedPtr