Use shared_ptr for future result