refactor Collection classes (2)