it's also very easy to get it wrong by not at minimum using constants and it's far easier to use a TLV reader/writer library to do this, or at least a reader/writer library like the buffer type in golang the ease with which one grows the types of messages and the ease with which they can have one glitch appear due to a typo or moment of memory failure (human) makes it an extremely tiresome experience debugging APIs built from such primitives