refactored all enumerated type classes