finished event manager example (not added exercise)