collection abstraction finished