make single link and use shared_ptr