You want OptEnum for this.  Please give that a try and see if you like it.