using primitive types instead of structs