I don't see what the issue of either the register code goes here or in each event handler. Either way the register code has to run. It's actually easier if it's all in once place because you can look at one spot and determine which event handlers are registered. I thought the point of the registry was avoiding if statements checking all the message types. This is the point in time we have the interview id so the registration must happen here.  I mean we could have each event_handler add itself to a list and here have code to go through the list and call register on each item with an interview id, but I don't really see how it's a big improvement. We're basically just moving code around.