+A type model selects the combinations that make sense for the application from all the values a program could construct. Consumers handle the fields belonging to each case. This is the basis of the familiar idea of making invalid states harder to represent.