refactor, enum