Move events into core