     var lastItem: UIView?
     static var sharedConstraintDict: [UIView: [NSLayoutConstraint]] = [:]
     
+    /// Initialize a SimpleAutoLayout object with a superview.
     public init(on superview:UIView) {
         self.superview = superview
         if SimpleAutoLayout.sharedConstraintDict[superview] == nil {

        return self
    }
    
    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)

        return self
    }
    
    /// Added a view as the subview of this SimpleAutoLayout object's superview, and place it below 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 bottom border of the superview
    public func goDown(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: .Top, item2: lastItem, a2: .Bottom, constant: distance)
