// Each event can use a target (does one thing), a helper object (does a few things),
// or notifications (need to trigger callbacks in several other objects)
// Targets: use selectors to specify the method to trigger
// Helper Objects: delegates that override the methods they want to use from the list of methods
// in the appropriate protocol
// Notifications: Similar to targets in that objects that register are entered into via the specified
// selector method. Different in that many objects may register with them.
One question: do helper objects always respond to events by overriding protocol methods?