Replace complicated enum system with slightly more generic interface.
Allows about the same number of options but is easier to handler on managing end.