re-frame are subscribe, dispatch, register event, and register subscription • I chose to define each of these as part of a generic interface that depends on the concept of a “notifiable”, which will be “told” when the subscription it depends on has changed