Introduce Event GADT (including Monoid instance)