refactor
add generate_canonical_collection spec
refactor