more on collection abstraction