implement retainAll