Restructure enum implementation