see comment above about canonical ordering