moved operators into a polymorphic enum