cleaned up with EventCodec