reworking core enums so they are castable and don't require manual mapping