Add event infrastructure