we could cache this array in a constant.
can we wrap the `has_key?`/`include?` calls in a descriptive method name?