initial work for protocol
- implement lookup table & enum using X macros