Using frozenset with lists to avoid problems.

It makes more sense to pass lists to frozensets since tuples need special syntax to be interpreted correctly in this context. For instance, the line  "hr": frozenset(("noshade")) has a bug. It won't produce a frozenset with "noshade" but with ['a', 'e', 'd', 'h', 'o', 'n', 's'] because if you forget to add a comma at the end, the tuple won't be an iterable but the string is it interprets is.