 
 private extension UIView {
 
-    func anchorForEdge(edge: EdgeAnchor) -> NSLayoutAnchor {
-        if edge == .leading {
+    func layoutDimensionForAnchor(size: SizeAnchor) -> NSLayoutDimension {
+        switch size {
+
+        case SizeAnchor.width:
+            return self.widthAnchor
+
+        case SizeAnchor.height:
+            return self.heightAnchor
+
+        default:
+            fatalError("There is an unhandled size. Have you considered checking in another dimension? 📐")
+
+        }
+    }
+
+    func layoutAnchorForEdge(edge: EdgeAnchor) -> NSLayoutAnchor {
+        switch edge {
+
+        case EdgeAnchor.leading:
             return self.leadingAnchor
-        } else if edge == .trailing {
+
+        case EdgeAnchor.trailing:
             return self.trailingAnchor
-        } else if edge == .top {
+
+        case EdgeAnchor.top:
             return self.topAnchor
-        } else if edge == .bottom {
+
+        case EdgeAnchor.bottom:
             return self.bottomAnchor
-        } else if edge == .centerX {
+
+        case EdgeAnchor.centerX:
             return self.centerXAnchor
-        } else if edge == .centerY {
+
+        case EdgeAnchor.centerY:
             return self.centerYAnchor
-        } else if edge == .width {
-            return self.widthAnchor
-        } else if edge == .height {
-            return self.heightAnchor
-        } else {
+
+        default:
             fatalError("There is an unhandled edge case with edges. Get it? Edge case… 😂")
-        }
-    }
-
-    func anchorForSize(size: SizeAnchor) -> NSLayoutDimension {
-        if size == .width {
-            return self.widthAnchor
-        } else if size == .height {
-            return self.heightAnchor
-        } else {
-            fatalError("There is an unhandled size. Have you considered checking in another dimension? 📐")
+            
         }
     }
 

    }

    func pinEdge(edge: EdgeAnchor, toEdge: EdgeAnchor, ofView: UIView, relation: NSLayoutRelation = .Equal, constant: CGFloat = 0.0, priority: UILayoutPriority = UILayoutPriorityRequired, activate: Bool = true) -> NSLayoutConstraint {
        let fromAnchor = self.anchorForEdge(edge)
        let toAnchor = ofView.anchorForEdge(toEdge)

        let constraint: NSLayoutConstraint
        if relation == .GreaterThanOrEqual {

                    priority = UILayoutPriorityRequired
                }

                let currentAnchor = self.layoutAnchorForEdge(edge)
                let viewAnchor = view.layoutAnchorForEdge(edge)
                let constraint: NSLayoutConstraint
                if relation == .GreaterThanOrEqual {
                    constraint = currentAnchor.constraintGreaterThanOrEqualToAnchor(viewAnchor, constant: constant)
