added canonicalization