This is the only part that I really don't like. Extending the signature of the class to add the hook reference after the callback is not pretty. Let's try to find another way to keep that reference around.