    If any of the constraints already exists, will update its constant.
    - Parameter _ attributes: An array of LayoutAttribute.
    - Parameter to anchor: A LayoutAnchorable.
+   - Parameter relation: A LayoutRelation between anchors.
    - Parameter constants: A list of CGFloat.
    - Returns: A Layout instance to allow chaining.
    */
-  func constraint(_ attributes: [LayoutAttribute], to anchor: LayoutAnchorable, constants: CGFloat...) -> Layout {
-    return constraint(attributes, to: anchor, constants: constants)
+  func constraint(_ attributes: [LayoutAttribute], to anchor: LayoutAnchorable, relationer: LayoutRelationer = LayoutRelationerStruct.equal, constants: CGFloat...) -> Layout {
+    return constraint(attributes, to: anchor, relationer: relationer, constants: constants)
   }
   
   /**

   Constraints horizontal center of the view to the given anchor.
   - Parameter _ anchor: A LayoutAnchorable.
   - Parameter _ offset: A CGFloat offset.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func centerX(_ anchor: LayoutAnchorable, _ offset: CGFloat = 0) -> Layout {
    return constraint(.centerX, to: anchor, constant: offset)
  }
  
  /**
   Constraints vertical center of the view to the given anchor.
   - Parameter _ anchor: A LayoutAnchorable.
   - Parameter _ offset: A CGFloat offset.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func centerY(_ anchor: LayoutAnchorable, _ offset: CGFloat = 0) -> Layout {
    return constraint(.centerY, to: anchor, constant: offset)
  }
  
  /**
   Constraints width of the view to the given anchor.
   - Parameter _ anchor: A LayoutAnchorable.
   - Parameter offset: A CGFloat offset.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func width(_ anchor: LayoutAnchorable, _ offset: CGFloat = 0) -> Layout {
    return constraint(.width, to: anchor, constant: offset)
  }
  
  /**
   Constraints height of the view to the given anchor.
   - Parameter _ anchor: A LayoutAnchorable.
   - Parameter offset: A CGFloat offset.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func height(_ anchor: LayoutAnchorable, _ offset: CGFloat = 0) -> Layout {
    return constraint(.height, to: anchor, constant: offset)
  }
  
  /**

  /**
   Constraints top of the view to its parent's.
   - Parameter _ offset: A CGFloat offset.
   - Parameter _ relationer: A LayoutRelationer.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func top(_ offset: CGFloat = 0, _ relationer: LayoutRelationer = LayoutRelationerStruct.equal) -> Layout {
    return constraint(.top, relationer: relationer, constant: offset)
  }
  
  /**
   Constraints left of the view to its parent's.
   - Parameter _ offset: A CGFloat offset.
   - Parameter _ relationer: A LayoutRelationer.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func left(_ offset: CGFloat = 0, _ relationer: LayoutRelationer = LayoutRelationerStruct.equal) -> Layout {
    return constraint(.left, relationer: relationer, constant: offset)
  }
  
  /**
   Constraints right of the view to its parent.
   - Parameter _ offset: A CGFloat offset.
   - Parameter _ relationer: A LayoutRelationer.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func right(_ offset: CGFloat = 0, _ relationer: LayoutRelationer = LayoutRelationerStruct.equal) -> Layout {
    return constraint(.right, relationer: relationer, constant: -offset)
  }
  
  /**
   Constraints leading of the view to its parent's.
   - Parameter _ offset: A CGFloat offset.
   - Parameter _ relationer: A LayoutRelationer.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func leading(_ offset: CGFloat = 0, _ relationer: LayoutRelationer = LayoutRelationerStruct.equal) -> Layout {
    return constraint(.leading, relationer: relationer, constant: offset)
  }
  
  /**
   Constraints trailing of the view to its parent.
   - Parameter _ offset: A CGFloat offset.
   - Parameter _ relationer: A LayoutRelationer.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func trailing(_ offset: CGFloat = 0, _ relationer: LayoutRelationer = LayoutRelationerStruct.equal) -> Layout {
    return constraint(.trailing, relationer: relationer, constant: -offset)
  }
  
  /**
   Constraints bottom of the view to its parent's.
   - Parameter _ offset: A CGFloat offset.
   - Parameter _ relationer: A LayoutRelationer.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func bottom(_ offset: CGFloat = 0, _ relationer: LayoutRelationer = LayoutRelationerStruct.equal) -> Layout {
    return constraint(.bottom, relationer: relationer, constant: -offset)
  }
  
  /**
