first version of smart enum class