add enum factory