         return self
     }
     
+    /// Added a view as the subview of this SimpleAutoLayout object's superview, and place it above the last subview that we added a constraint through SimpleAutoLayout.
+    /// @param item the subview to be added
+    /// @param distance the distance between this subview and the last subview
+    /// @param w the subview's width
+    /// @param h the subview's height
+    /// @param aspectRatio the subview's width/height ratio
+    /// @param alignToLast a dictionary where keys are NSLayoutAttribute, the values are the difference between this subview's value on that attribute and the last subview's. (The last subview is the subview which we set layout constraint through SimpleAutoLayout)
+    /// @param endWithMargin if passed in, this subview will have this such distance to the top border of the superview
     public func goUp(item: UIView, _ distance: CGFloat = 0, w: CGFloat? = nil, h: CGFloat? = nil, aspectRatio: CGFloat? = nil, alignToLast: [NSLayoutAttribute: CGFloat]? = nil, endWithMargin: CGFloat? = nil) -> SimpleAutoLayout {
         add(item)
         addConstraint(item, a1: .Bottom, item2: lastItem, a2: .Top, constant: -distance)

        view.translatesAutoresizingMaskIntoConstraints = false
    }
    
    public func constraint(item1: UIView, a1: NSLayoutAttribute, item2: UIView? = nil, a2: NSLayoutAttribute = .NotAnAttribute) -> NSLayoutConstraint? {
        for oldConstraint in superview.constraints {
            if item1 === oldConstraint.firstItem as? UIView

    
    // MARK: - Setting attributes on individual items
    
    /// Set some attributes for a subview.
    /// @param w the subview's width
    /// @param h the subview's height
    /// @param aspectRatio the subview's width/height ratio
    public func setAttributes(item: UIView, w: CGFloat? = nil, h: CGFloat? = nil, aspectRatio: CGFloat? = nil) -> SimpleAutoLayout {
        if let w = w {
            width(item, w)
