More shared_ptr work (needs more work)