need to refactor enum support