         return attributes
     }
     
-    func attributesWithTextColor(textColor: UIColor) -> [NSObject: AnyObject] {
-        
-        var mutableParagraphStyle = NSMutableParagraphStyle()
-        mutableParagraphStyle.alignment = self.textAlignment
-        
-        let attributes = [NSFontAttributeName: self.font,
-            NSForegroundColorAttributeName: textColor,
-            NSParagraphStyleAttributeName: mutableParagraphStyle]
+    private func attributesWithTextColor(textColor: UIColor) -> [NSObject: AnyObject] {
+        var attributes = attributesFromProperties()
+        attributes[NSForegroundColorAttributeName] = textColor
         
         return attributes
     }
     
-    // MARK : Functions
-    
-    func setupTextSystem() {
+    private func setupTextSystem() {
 
         // Attach the layou manager to the container and storage
         self.textContainer.layoutManager = self.layoutManager


                    if textCheckingResult.resultType == .Link {
                        if let matchString = realURL as? String {
                            rangesForURLs.append(LinkRangeResult(linkDetectionType: LinkDetectionType.URL, linkRange: matchRange, linkString: matchString))
                        }
                    }
                }

        return _linkTextColor
        }()
    
    var textLinkHighlightedTextColor: UIColor?
    var userHandleHighlightedTextColor: UIColor?
    var hashtagHighlightedTextColor: UIColor?
    var linkHighlightedTextColor: UIColor?
    
    // MARK: Private Properties
    
    private var privateTextLinkHighlightedTextColor: UIColor {
        get {
            if let textLinkHighlightedTextColor = textLinkHighlightedTextColor {
                return textLinkHighlightedTextColor
            } else {
                return highlightedTextColorForTextColor(textLinkTextColor)
            }
        }
    }
    
    private var privateUserHandleHighlightedTextColor: UIColor {
        get {
