+1 these should be explicit. And I'd avoid Enumeration. A normal algebraic data type does not require the Enumeration hacks, is easier to write/use and gives you exhaustiveness checking.