     public var userHandleHighlightedTextColor: UIColor?
     public var hashtagHighlightedTextColor: UIColor?
     public var linkHighlightedTextColor: UIColor?
+    
+    // UnderlineStyle
+    public var textLinkUnderlineStyle: NSUnderlineStyle = .StyleNone
+    public var userHandleUnderlineStyle: NSUnderlineStyle = .StyleNone
+    public var hashtagUnderlineStyle: NSUnderlineStyle = .StyleNone
+    public var linkUnderlineStyle: NSUnderlineStyle = .StyleNone
     
     // MARK: - Private Properties
     

            
            if linkRangeResult.linkDetectionType == .TextLink {
                let color = highlighted ? privateTextLinkHighlightedTextColor : textLinkTextColor
                attributes = attributesWithTextColor(color)
            }
            
            if linkRangeResult.linkDetectionType == .UserHandle {
                let color = highlighted ? privateUserHandleHighlightedTextColor : userHandleTextColor
                attributes = attributesWithTextColor(color)
            }
            
            if linkRangeResult.linkDetectionType == .Hashtag {
                let color = highlighted ? privateHashtagHighlightedTextColor : hashtagTextColor
                attributes = attributesWithTextColor(color)
            }
            
            if linkRangeResult.linkDetectionType == .URL {
                let color = highlighted ? privateLinkHighlightedTextColor : linkTextColor
                attributes = attributesWithTextColor(color)
            }
            
            if let attributes = attributes {

        return attributes
    }
    
    private func attributesWithTextColor(textColor: UIColor, underlineStyle: NSUnderlineStyle) -> [String: AnyObject] {
        var attributes = attributesWithTextColor(textColor)
        attributes[NSUnderlineStyleAttributeName] = underlineStyle.rawValue
        
        return attributes
    }
    
    private func setupTextSystem() {
        lineBreakMode = .ByTruncatingTail
        
