make interaction return unique_ptr