serdes default field implementation seems to require a separate function for each field. this is okay for small structs but for complex things it starts to quickly become a