shared_ptr substituted with unique_ptr