+ catch objects by reference instead of by value in for loops: `for (DLC &dlc : DLCs)` vs `for (DLC dlc : DLCs)`
+ rely on C/C++ standard sizes instead of SDK definitions `uint16_t` vs `uint16` since the data sizes are very important
+ added more comments explaining the reasoning for any special handling
+ added comments exaplaining the layout of the data
+ avoid any magical numbers as much as possible & calculate the required size via sizeof()
+ use a macro to serialize a single field & increment the pointer at the same time
+ added some more debug statements