             attribute: edge,
             multiplier: 1,
             constant: inset)
+        if let priority = priority {
+            pin.priority = priority
+        }
         superview.addConstraint(pin)
         return pin
     }

        return [pinToEdge(.Top, inset: inset), pinToEdge(.Bottom, inset: -inset)]
    }
    
    func insetFromParentLeft(inset: CGFloat) -> NSLayoutConstraint {
        return pinToEdge(.Left, inset: inset)
    }
    
    func insetFromParentRight(inset: CGFloat) -> NSLayoutConstraint {
        return pinToEdge(.Right, inset: -inset)
    }
    
    func insetFromParentTop(inset: CGFloat) -> NSLayoutConstraint {
        return pinToEdge(.Top, inset: inset)
    }
    
    func insetFromParentBottom(inset: CGFloat) -> NSLayoutConstraint {
        return pinToEdge(.Bottom, inset: -inset)
    }

    func insetFromParentLeftByAtLeast(inset: CGFloat) -> NSLayoutConstraint {

    
    // MARK: - sizing

    func setWidthConstraint(size: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint {
        return setSizeConstraint(size, dimension: .Width, priority: priority)
    }
    
    func setHeightConstraint(size: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint {
        return setSizeConstraint(size, dimension: .Height, priority: priority)
    }

    func setMinWidthConstraint(size: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint {
        return setSizeConstraint(size, dimension: .Width, relatedBy: .GreaterThanOrEqual, priority: priority)
    }

    func setMinHeightConstraint(size: CGFloat, priority: UILayoutPriority? = nil) -> NSLayoutConstraint {
        return setSizeConstraint(size, dimension: .Height, relatedBy: .GreaterThanOrEqual, priority: priority)
    }
    
    private func setSizeConstraint(size: CGFloat, dimension: NSLayoutAttribute, relatedBy: NSLayoutRelation = .Equal, priority: UILayoutPriority? = nil) -> NSLayoutConstraint {
        setTranslatesAutoresizingMaskIntoConstraints(false)
        let sizeConstraint = NSLayoutConstraint(item: self,
            attribute: dimension,
            relatedBy: relatedBy,
            toItem: nil,
            attribute: .NotAnAttribute,
            multiplier: 1,
            constant: size)
        if let priority = priority {
            sizeConstraint.priority = priority
        }
        addConstraint(sizeConstraint)
        return sizeConstraint
    }

    func matchHeightOfTallest(views: UIView...) -> [NSLayoutConstraint] {
