struct constructor
nested structs