 
 
 	public mutating func intersect(set: OrderedSet<T>) {
-		filter { set.contains($0) }
+		filterInPlace { set.contains($0) }
 	}
 
 

	}


	public mutating func filter(includeElement: (T) -> Bool) {
		var excludes = [T]()
		for element in elements {
			if !includeElement(element) {
				excludes.append(element)
			}
		}

		minus(excludes)
	}


	@warn_unused_result
	public func filterAsOrderedSet(@noescape includeElement: (T) -> Bool) -> OrderedSet<T> {
		var filteredElements = OrderedSet<T>()
		for element in orderedElements {
			if includeElement(element) {
				filteredElements.add(element)
			}
		}

		return filteredElements
	}





	@warn_unused_result
	public func mapAsOrderedSet<U: Hashable>(@noescape transform: T throws -> U) rethrows -> OrderedSet<U> {
		var newSet = OrderedSet<U>(minimumCapacity: count)
		for element in orderedElements {
			newSet.add(try transform(element))
		}

		return newSet
