refactored collection to hide private members