enum generation & doc