disjoint data type / enums
class and struct