add enum, iterator