collation algorithm