working on more generic collation