     }
     
     // MARK: Attributes
+    
+    private struct DefaultLinkAttributes {
+        static var Color = UIColor.blueColor()
+        static var UnderlineStyle = NSUnderlineStyle.StyleSingle
+    }
 
     private func processLinks() {
         var ranges = [LinkRange]()

                // the default styling.
                let attributes = self.textStorage.attributesAtIndex(range.location, effectiveRange: nil)
                if attributes[NSForegroundColorAttributeName] == nil {
                    self.textStorage.addAttribute(NSForegroundColorAttributeName, value: UIColor.blueColor(), range: range)
                }
                if attributes[NSUnderlineStyleAttributeName] == nil {
                    self.textStorage.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.StyleSingle.rawValue, range: range)
                }
                self.textStorage.removeAttribute(NSLinkAttributeName, range: range)
            }

    
    private func linkRangeAtPoint(point: CGPoint) -> LinkRange? {
        if let linkRanges = linkRanges {
            // Passing in the UILabel's fitting size here doesn't work, the height
            // needs to be unrestricted for it to correctly lay out all the text.
            // Might be due to a difference in the computed text sizes of `UILabel`
            // and `NSLayoutManager`.
            textContainer.size = CGSize(width: CGRectGetWidth(bounds), height: CGFloat.max)
            layoutManager.ensureLayoutForTextContainer(textContainer)
            
