      - date: February 17, 2016
      */
     func range() -> NSRange
+
+    func stringByLowercasingFirstLetter() -> String
+    func stringByUppercasingFirstLetter() -> String
+    func stringByTrimmingString(string: String) -> String
+    func stringByReplacingSpacesWithDashes() -> String
+    func stringByConvertingToNamingFormat(naming: VariableNamingFormat) -> String
 }
 
 public protocol LHSURLStringType {
-    mutating func URLEncode()
-    mutating func slugify() throws
+    func URLEncodedString() -> String?
 }
 
 extension String: LHSStringType, LHSURLStringType {}

     - date: February 17, 2016
     */
    func range() -> NSRange {
        return NSMakeRange(0, length)
    }
}


    func slugify() {
        return String(self).slugify()
    }

    func stringByLowercasingFirstLetter() -> String {
        return String(self).stringByLowercasingFirstLetter()
    }

    func stringByUppercasingFirstLetter() -> String {
        return String(self).stringByLowercasingFirstLetter()
    }

    func stringByReplacingSpacesWithDashes() -> String {
        return String(self).stringByReplacingSpacesWithDashes()
    }

    func stringByConvertingToNamingFormat(naming: VariableNamingFormat) -> String {
        return String(self).stringByConvertingToNamingFormat(naming)
    }

    func stringByTrimmingString(string: String) -> String {
        return String(self).stringByTrimmingString(string)
    }
}

public extension NSAttributedString {
