shared_ptr capabilities