enumeration generation