 
     public func render() -> String {
         let separator = fence(columns.map({ column in
-            Repeat(count: column.width + 2, repeatedValue: rowFence).joinWithSeparator("")
+            #if swift(>=3)
+                return repeatElement(rowFence, count: column.width + 2).joined(separator: "")
+            #else
+                return Repeat(count: column.width + 2, repeatedValue: rowFence).joinWithSeparator("")
+            #endif
         }), separator: cornerFence)
         let header = fence(columns.map({ " \($0.header.withPadding($0.width)) " }), separator: columnFence)
-        let values = columns.isEmpty ? "" : (0..<columns.first!.values.count).map({ rowIndex in
-            fence(columns.map({ " \($0.values[rowIndex].withPadding($0.width)) " }), separator: columnFence)
-        }).joinWithSeparator("\n")
-        return [separator, header, separator, values, separator].joinWithSeparator("\n")
+        #if swift(>=3)
+            let values = columns.isEmpty ? "" : (0..<columns.first!.values.count).map({ rowIndex in
+                fence(columns.map({ " \($0.values[rowIndex].withPadding($0.width)) " }), separator: columnFence)
+            }).joined(separator: "\n")
+            return [separator, header, separator, values, separator].joined(separator: "\n")
+        #else
+            let values = columns.isEmpty ? "" : (0..<columns.first!.values.count).map({ rowIndex in
+                fence(columns.map({ " \($0.values[rowIndex].withPadding($0.width)) " }), separator: columnFence)
+            }).joinWithSeparator("\n")
+            return [separator, header, separator, values, separator].joinWithSeparator("\n")
+        #endif
     }
 }

    private func withPadding(count: Int) -> String {
        let length = characters.count
        if length < count {
            return self +
                Repeat(count: count - length, repeatedValue: " ").joinWithSeparator("")
        }
        return self
    }

    func stripped() -> String {
        let matches = strippingRegex
            .matchesInString(self, options: [], range: NSRange(location: 0, length: self.characters.count))
            .map {
                (self as NSString).substringWithRange($0.rangeAtIndex(1))
        }
        return matches.isEmpty ? self : matches.joinWithSeparator("")
    }

    func strippedLength() -> Int {

}

private func fence(strings: [String], separator: String) -> String {
    #if swift(>=3)
        return separator + strings.joined(separator: separator) + separator
    #else
        return separator + strings.joinWithSeparator(separator) + separator
    #endif
}

public struct TextTableColumn {
