reworked ChoiceField subclasses to remove *lots* of duplicated code
introduced some problems, however