refactored filtering behavior into FilteredCollection