reduced boilerplate in event/command protocol definitions