events and callbacks

Need to expose via API before the tests will pass but I'm "pretty sure"™ they will pass.