         pinToEdge(.Right)
     }
     
-    private func pinToEdge(edge: NSLayoutAttribute) {
+    func insetFromParentHorizontally(inset: CGFloat) {
+        pinToEdge(.Left, inset: inset)
+        pinToEdge(.Right, inset: -inset)
+    }
+
+    func insetFromParentVertically(inset: CGFloat) {
+        pinToEdge(.Top, inset: inset)
+        pinToEdge(.Bottom, inset: -inset)
+    }
+    
+    func insetFromParentLeft(inset: CGFloat) {
+        pinToEdge(.Left, inset: inset)
+    }
+    
+    func insetFromParentRight(inset: CGFloat) {
+        pinToEdge(.Right, inset: -inset)
+    }
+    
+    func insetFromParentTop(inset: CGFloat) {
+        pinToEdge(.Top, inset: inset)
+    }
+    
+    func insetFromParentBottom(inset: CGFloat) {
+        pinToEdge(.Bottom, inset: -inset)
+    }
+    
+    private func pinToEdge(edge: NSLayoutAttribute, inset: CGFloat = 0) {
         let superview = self.superview!
         setTranslatesAutoresizingMaskIntoConstraints(false)
         let pin = NSLayoutConstraint(item: self,

            toItem: superview,
            attribute: edge,
            multiplier: 1,
            constant: 0)
        superview.addConstraint(pin)
    }
    
    // MARK: - sizing

    }
    
    // MARK: - positioning
     
    func placeBelow(sibling: UIView, by offset: CGFloat = 0) {
        let superview = self.superview!
        if (superview != sibling.superview!) {
            return
