can we use a smart pointer instead? linked_ptr for instance