structs and enums