         let superview: UIView? = self.superview
         assert(superview != nil, "View's superview must not be nil")
         assert(axis == .CenterX || axis == .CenterY, "You can center a view horizontally or vertically, no other attribute is accepted")
-        return NSLayoutConstraint(item: self, attribute: axis, relatedBy: .Equal, toItem: superview, attribute: axis, multiplier: 1, constant: 0)
+        return NSLayoutConstraint(item: self, attribute: axis, toItem: superview)
     }
 
     // MARK: Pin Edges to Superview

    func pinEdgesToSuperview(distance: CGFloat) -> [NSLayoutConstraint] {
        let superview: UIView? = self.superview
        assert(superview != nil, "View's superview must not be nil")
        let left = NSLayoutConstraint(item: self, attribute: .Left, relatedBy: .Equal, toItem: superview, attribute: .Left, multiplier: 1, constant: distance)
        let right = NSLayoutConstraint(item: self, attribute: .Right, relatedBy: .Equal, toItem: superview, attribute: .Right, multiplier: 1, constant: distance)
        let top = NSLayoutConstraint(item: self, attribute: .Top, relatedBy: .Equal, toItem: superview, attribute: .Top, multiplier: 1, constant: distance)
        let bottom = NSLayoutConstraint(item: self, attribute: .Bottom, relatedBy: .Equal, toItem: superview, attribute: .Bottom, multiplier: 1, constant: distance)
        return [left, right, top, bottom]
    }

    // MARK: Same dimension

    func matchDimension(dimension: NSLayoutAttribute, otherView: UIView) -> NSLayoutConstraint {
        assert(dimension == .Width || dimension == .Height, "You can match the width or the height of a view, no other attribute is accepted")
        return NSLayoutConstraint(item: self, attribute: dimension, relatedBy: .Equal, toItem: otherView, attribute: dimension, multiplier: 1, constant: 0)
    }

    func matchHeightAndWidth() -> NSLayoutConstraint {

        return [width, height]
    }
}

extension NSLayoutConstraint {

    // same attribute, relation = .Equal, multiplier = 1, constant = 0
    convenience init(item view1: AnyObject, attribute attr: NSLayoutAttribute, relatedBy relation: NSLayoutRelation = .Equal, toItem view2: AnyObject?, multiplier: CGFloat = 1, constant c: CGFloat = 0) {
        self.init(item: view1, attribute: attr, relatedBy: relation, toItem: view2, attribute: attr, multiplier: multiplier, constant: c)
    }

    class func constraintsWithVisualFormat(format: String, metrics: [NSObject : AnyObject]?, views: [NSObject : AnyObject]) -> [AnyObject] {
        return NSLayoutConstraint.constraintsWithVisualFormat(format, options: NSLayoutFormatOptions(0), metrics: metrics, views: views)
    }

    class func constraintsWithVisualFormat(format: String, options opts: NSLayoutFormatOptions, views: [NSObject : AnyObject]) -> [AnyObject] {
        return NSLayoutConstraint.constraintsWithVisualFormat(format, options: opts, views: views)
    }

    class func constraintsWithVisualFormat(format: String, views: [NSObject : AnyObject]) -> [AnyObject] {
        return NSLayoutConstraint.constraintsWithVisualFormat(format, options: NSLayoutFormatOptions(0), metrics: nil, views: views)
    }
}
