+ replace auto_ptr with unique_ptr