Doesn't a normal `switch` work? (I'm not sure if it does strict checking)