Canonicalization API tweaks

issue #264

I ran test_canonical.py and it still passes