reordered structs for more readability