use structs for packet data. mark big endian bytes appropriately