refactor unselect behavior into collection for flexibility