Is a user expected to be able to register a callback, or is this just for internal use? I think this only allows one callback, and the previous one is replaced? That's probably fine(?) but if this is user-facing, we need to document that semantic.