operate collections with a callback
some clean up
Merge branch 'different-collections'