I'll probably convert this MR just for destruction first, with follow-up MRs doing the unlinking and traversal.
FWIW, I'm not sure without seeing the result, but it seems to me like introducing unlinking and destructor in the same commit may be better. Once it's done on per-object basis, it should be easy enough and would avoid having to move (and review) the same things twice for each object.