getting there with enums, just need some reflection magic