updated smart_ptr fork