I'm all for event-based interfaces, and I've whined here about that in the past (WRT to `Region`, in fact) but there are a few problems with your suggestion:
- the tests aren't consistent at present (ie. we don't always use events)
- the objects themselves don't act on events
- we aren't testing the arguments passed when we emit events

Let's solve this properly.  If you have code to replace mine, I'm happy to just squash my patch to the two `src` files and then amend your new tests.