first plausible attempt at event handling

Using very helpful design advice from @seliopou.
Update reps file to include all exposed modules
Merge branch 'events'