added optional callbacks to all events as an interface which greatly simplified tests