RUBY-596 Implement Collection (WIP)

This is a WIP refactor of Sam's collection work.