Refactor events: add EventContext