         muteButton.selected = false
         blockButton.selected = false
     }
+}
 
 // MARK: STYLING
 
-    private func styleView() {
+extension BlockUserModalScreen {
+    private func style() {
         backgroundButton.backgroundColor = UIColor.modalBackground()
+        modalView.backgroundColor = UIColor.redColor()
+        for label in [titleLabel, muteLabel, blockLabel, flagLabel] {
+            styleLabel(label)
+        }
+        for button in [muteButton, blockButton, flagButton] {
+            styleButton(button)
+        }
+        closeButton.setImages(.X, white: true)
+    }
+
+    private func styleLabel(label: UILabel) {
+        label.font = .defaultFont()
+        label.textColor = .whiteColor()
+        label.lineBreakMode = .ByWordWrapping
+        label.numberOfLines = 0
+    }
+
+    private func styleButton(button: UIButton) {
+        button.backgroundColor = .whiteColor()
+        button.titleLabel?.font = .defaultFont()
+        button.titleLabel?.textColor = .whiteColor()
+    }
+}
+
+extension BlockUserModalScreen {
+    private func bindActions() {
         backgroundButton.addTarget(self, action: #selector(closeModal), forControlEvents: .TouchUpInside)
         blockButton.addTarget(self, action: #selector(blockTapped(_:)), forControlEvents: .TouchUpInside)
         muteButton.addTarget(self, action: #selector(muteTapped(_:)), forControlEvents: .TouchUpInside)
         flagButton.addTarget(self, action: #selector(flagTapped), forControlEvents: .TouchUpInside)
         closeButton.addTarget(self, action: #selector(closeModal), forControlEvents: .TouchUpInside)
-        modalView.backgroundColor = UIColor.redColor()
-        for label in [titleLabel, muteLabel, blockLabel, flagLabel] {
-            styleLabel(label)
-        }
-        for button in [muteButton, blockButton, flagButton] {
-            styleButton(button)
-        }
-        closeButton.setImages(.X, white: true)
-    }
-
-    private func styleLabel(label: UILabel) {
-        label.font = .defaultFont()
-        label.textColor = .whiteColor()
-        label.lineBreakMode = .ByWordWrapping
-        label.numberOfLines = 0
-    }
-
-    private func styleButton(button: UIButton) {
-        button.backgroundColor = .whiteColor()
-        button.titleLabel?.font = .defaultFont()
-        button.titleLabel?.textColor = .whiteColor()
-    }
-
+    }
+
+// MARK: ACTIONS
+
+    func blockTapped(sender: UIButton) {
+        let relationshipPriority: RelationshipPriority
+        if sender.selected == true {
+            relationshipPriority = .Inactive
+        } else {
+            relationshipPriority = .Block
+        }
+        delegate?.updateRelationship(relationshipPriority)
+    }
+
+    func muteTapped(sender: UIButton) {
+        let relationshipPriority: RelationshipPriority
+        if sender.selected == true {
+            relationshipPriority = .Inactive
+        } else {
+            relationshipPriority = .Mute
+        }
+        delegate?.updateRelationship(relationshipPriority)
+    }
+
+    func flagTapped() {
+        delegate?.flagTapped()
+    }
+
+    func closeModal() {
+        delegate?.closeModal()
+    }
+}
+
+extension BlockUserModalScreen {
     private func setText() {
         muteButton.setTitle(InterfaceString.Relationship.MuteButton, forState: UIControlState.Normal)
         blockButton.setTitle(InterfaceString.Relationship.BlockButton, forState: UIControlState.Normal)
         flagButton.setTitle(InterfaceString.Relationship.FlagButton, forState: UIControlState.Normal)
     }
-
-    private func arrangeViews() {
+}
+
+extension BlockUserModalScreen {
+    private func arrange() {
         backgroundButton.snp_makeConstraints { make in
             make.edges.equalTo(self)
         }

        }
    }

// MARK: ACTIONS

    func blockTapped(sender: UIButton) {
        let relationshipPriority: RelationshipPriority
        if sender.selected == true {
            relationshipPriority = .Inactive
        } else {
            relationshipPriority = .Block
        }
        delegate?.updateRelationship(relationshipPriority)
    }

    func muteTapped(sender: UIButton) {
        let relationshipPriority: RelationshipPriority
        if sender.selected == true {
            relationshipPriority = .Inactive
        } else {
            relationshipPriority = .Mute
        }
        delegate?.updateRelationship(relationshipPriority)
    }

    func flagTapped() {
        delegate?.flagTapped()
    }

    func closeModal() {
        delegate?.closeModal()
    }

}

            modalView.addSubview(view)
        }

        style()
        bindActions()
        setText()
        arrange()
    }

    required public init?(coder aDecoder: NSCoder) {
