add MetaEnum infrastructure