I don't think we need to deregister hooks.  `on_change` is private, anyway.

> I've updated this for the ones that set metadata, 

What about `delete`, `delete_if`, `select!` and `reject!`?