``p.canonical()`` would definitely be preferable to me