         return minElement(orderedBefore(values))
     }
     
+    /// Use the given closures to extract the values for comparison. If the values 
+    /// are equal compare using the next closure in the list until they are all exhausted
     /// Use the given closures to extract the values for comparison. If the values 
     /// are equal compare using the next closure in the list until they are all exhausted
     public func sort(values: ((Self.Generator.Element, Self.Generator.Element) -> NSComparisonResult)...) -> [Self.Generator.Element] {

        return true
    }
    
    public func any(@noescape predicate: (Self.Generator.Element) -> Bool) -> Bool {
        for element in self {
            if predicate(element) { return true }

}

extension SequenceType {
    /// Returns the first non-nil value obtained by applying `transform` to the elements of `self`
    public func mapFirst<T>(@noescape transform: (Self.Generator.Element) -> T?) -> T? {        
        for value in self {
            if let result = transform(value) { return result }
