changed to structs