What I actually want to do is create a very simple `Event` object to hold some of this information, then make it something more like the second option.  Basically something along the lines of `ctx.events.complete.append(your_function)` or `ctx.events['complete'].append(your_function)`.  I think the first incarnation is going to stay pretty simple and will just do the `ctx.on_complete(complete_method)` pattern.