     }
 
     private func updateTitles(active: Bool) {
+        label.attributedText = styleText(config.name, color: active ? config.selectedTextColor : config.normalTextColor)
+        mainButtonBackground.backgroundColor = active ? config.selectedBackgroundColor : config.normalBackgroundColor
+        mainButtonBackground.layer.borderColor = config.borderColor.CGColor
+        updateLayout()
+    }
+
+    private func updateRelationship(relationship: RelationshipPriority) {
         switch relationship {
-        case .Friend:
-            attributedNormalTitle = friendNormalAttributedTitle
-            attributedSelectedTitle = friendSelectedAttributedTitle
-            normalBackgroundColor = establishedNormalBackgroundColor
-            selectedBackgroundColor = establishedSelectedBackgroundColor
-            borderColor = .blackColor()
-        case .Noise:
-            attributedNormalTitle = noiseNormalAttributedTitle
-            attributedSelectedTitle = noiseSelectedAttributedTitle
-            normalBackgroundColor = establishedNormalBackgroundColor
-            selectedBackgroundColor = establishedSelectedBackgroundColor
-            borderColor = .blackColor()
-        case .Mute:
-            attributedNormalTitle = muteNormalAttributedTitle
-            attributedSelectedTitle = muteSelectedAttributedTitle
-            normalBackgroundColor = muteNormalBackgroundColor
-            selectedBackgroundColor = muteSelectedBackgroundColor
-            borderColor = .redColor()
-        default:
-            attributedNormalTitle = followNormalAttributedTitle
-            attributedSelectedTitle = followSelectedAttributedTitle
-            normalBackgroundColor = followNormalBackgroundColor
-            selectedBackgroundColor = followSelectedBackgroundColor
-            borderColor = .blackColor()
-        }
-        label.attributedText = active ? attributedSelectedTitle : attributedNormalTitle
-        mainButtonBackground.backgroundColor = active ? selectedBackgroundColor : normalBackgroundColor
-        mainButtonBackground.layer.borderColor = borderColor.CGColor
-        updateLayout()
-    }
-
-    private func updateRelationship(relationship: RelationshipPriority) {
+        case .Friend: config = .Friend
+        case .Noise: config = .Noise
+        case .Mute: config = .Muted
+        default: config = .Follow
+        }
+
         updateTitles(false)
     }
 
     private func updateLayout() {
         label.sizeToFit()
-        let textWidth = attributedNormalTitle.widthForHeight(0)
+        let textWidth = label.attributedText.widthForHeight(0)
         let contentX: CGFloat = size.width / 2 - textWidth / 2
         contentContainer.frame =
             CGRect(

        relationshipDelegate?.relationshipTapped(userId, relationship: relationship) {
            [unowned self] (status, relationship) in
        }
    }

    public override func intrinsicContentSize() -> CGSize {
        return showMareButton ? sizeWithMore : size
    }

    // MARK: Private

        addSubviews()
        addTargets()
        moreButton.hidden = true
        label.attributedText = styleText(config.name, color: config.normalTextColor)
        mainButtonBackground.layer.borderWidth = 1
    }

    public override func intrinsicContentSize() -> CGSize {
        return showMareButton ? sizeWithMore : size
    }

    // MARK: IBActions
