this could be a performance issue: making so many arrays just to validate the values... don't think this is right.
I think better is to hardcode `allowed` with all possible variants and check like `h.any? {|_, value| !allowed.include?(value)}`