Canonicalization

For reviewing this code
how about `attribute_variants` instead of `key_values`