working on abstract enumeration class