add share_ptr learning