         }
         
         end = string.startIndex.advancedBy(result.range.location)
-        results.append(string.substringWithRange(start..<end))
+        results.append(string[start..<end])
         if regex.numberOfCaptureGroups > 0 {
-          results.appendContentsOf(MatchObject(string: string, match: result).groups())
+          results += MatchObject(string: string, match: result).groups()
         }
         splitsLeft--
         start = end.advancedBy(result.range.length)
       }
       if start <= string.endIndex {
-        results.append(string.substringWithRange(start..<string.endIndex))
+        results.append(string[start..<string.endIndex])
       }
       return results
     }

    
    /// NSRegularExpressionOptions used to contructor this RegexObject
    public var flags: Flag {
      return regex?.options ?? Flag(rawValue: 0)
    }
    
    /// Number of capturing groups

      guard let range = span(index) where range.startIndex < string.endIndex else {
        return nil
      }
      return string[range]
    }
    
    /**
