prefer structs to maps