new @enum implementation