* Your `removingFirst()` is not necessary. Set has a `first` and a `dropFirst()` that you can use to get those values. * The typical Swift developer would expect to see this algorithm as an extension on Set rather than a free function. * This is a power set algorithm with the empty set subtracted. It would probably be better to just implement powerSet and then subtract the empty set. A google search will find a few implementations of powerSet. Here's my favorite: ``` extension Collection { var powerSet: [[Element]] { guard !isEmpty else { return [[]] } return Array(dropFirst()).powerSet.flatMap { [$0, [self.first!] + $0] } } } let result = Set( [1, 2, 3] .powerSet .map { Set($0) } ) .subtracting(Set([Set()])) print(result) ```