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

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

  /**
   Constraints width of the view to a constant value.
   - Parameter _ width: A CGFloat value.
   - Parameter _ relationer: A LayoutRelationer.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func width(_ width: CGFloat, _ relationer: LayoutRelationer = LayoutRelationerStruct.equal) -> Layout {
    return constraint(.constantWidth, relationer: relationer, constants: width)
  }
  
  /**
   Constraints height of the view to a constant value.
   - Parameter _ height: A CGFloat value.
   - Parameter _ relationer: A LayoutRelationer.
   - Returns: A Layout instance to allow chaining.
   */
  @discardableResult
  func height(_ height: CGFloat, _ relationer: LayoutRelationer = LayoutRelationerStruct.equal) -> Layout {
    return constraint(.constantHeight, relationer: relationer, constants: height)
  }
  
  /**
