Auto casting of symbol to enum values is also a thing which is a key piece of info you’re missing I think; as that would solve most of your issues with the current syntax in your example. See my example in https://www.reddit.com/r/crystal_programming/comments/e9ak4m/can_i_create_a_literal_type/.