         textStorage.setAttributedString(attrString)
         cacheLinkRanges()
         invalidateDisplayAndLayout()
+        
+        let attributes = attrString.attributesAtIndex(0, effectiveRange: nil)
+        _font = (attributes[NSFontAttributeName] as? UIFont) ?? Defaults.font
+        _textColor = (attributes[NSFontAttributeName] as? UIColor) ?? Defaults.textColor
+        
+        let paragraphStyle = attributes[NSParagraphStyleAttributeName] as? NSParagraphStyle
+        _textAlignment = paragraphStyle?.alignment ?? Defaults.textAlignment
+        _lineBreakMode = paragraphStyle?.lineBreakMode ?? Defaults.lineBreakMode
+        
+        let shadow = attributes[NSShadowAttributeName] as? NSShadow
+        _shadowColor = shadow?.shadowColor as? UIColor
+        _shadowOffset = shadow?.shadowOffset
     }
     
     private func applyAttributeWithKey(key: String, value: AnyObject?) {

        }
    }
    
    private var _attributedText: NSAttributedString?
    public var attributedText: NSAttributedString? {
        get {
            return _attributedText

    
    // MARK: Applying Attributes
    
    private func clear() {
        textStorage.deleteCharactersInRange(NSRange(location: 0, length: textStorage.length))
        invalidateDisplayAndLayout()
