signature fixes
use unique_ptr