This makes it much easier to implement enums, and the printing code is shared. We might want to convert other enums to this in the future.