         return pinToEdge(.Bottom, inset: -inset, relatedBy: .LessThanOrEqual)
     }
     
-    private func pinToEdge(edge: NSLayoutAttribute, inset: CGFloat = 0, relatedBy: NSLayoutRelation = .Equal) -> NSLayoutConstraint {
+    private func pinToEdge(edge: NSLayoutAttribute, inset: CGFloat = 0, relatedBy: NSLayoutRelation = .Equal, priority: UILayoutPriority? = nil) -> NSLayoutConstraint {
         let superview = self.superview!
         setTranslatesAutoresizingMaskIntoConstraints(false)
         let pin = NSLayoutConstraint(item: self,

        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 {

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