Use a shared_ptr as a 'backpointer'?