for unique_ptr