tighten up api and expose all_events
wip