Can't just iterator over CANONICAL_SHAPES because the arrival at the shape would be different