 extension Double: DHConstraintBuildable, DHConstraintScalar {}
 
 extension DHConstraintBuildable where Self: UIView {
-	
-	public func gapLengthEqual() -> DHConstraintBuilder {
-		return DHConstraintBuilder(self, .equal)
-	}
-	
-	public func gapLengthEqual(to: DHConstraintScalar) -> DHConstraintBuilder {
+	// MARK: - Equal
+	public func lengthEqual(to: DHConstraintScalar) -> DHConstraintBuilder {
 		return DHConstraintBuilder(self, .equal1(to: to))
 	}
 	
-	public func gapLengthEqual(to: DHConstraintScalar, priority: Int) -> DHConstraintBuilder {
+	public func lengthEqual(to: DHConstraintScalar, priority: Int) -> DHConstraintBuilder {
 		return DHConstraintBuilder(self, .equal2(to: to, priority: priority))
+	}
+	
+	public func lengthEqual(to view: UIView) -> DHConstraintBuilder {
+		return DHConstraintBuilder(self, lengthRelativeToView: view)
+	}
+	
+	// MARK: - Greater than
+	public func lengthGreaterThanOrEqual(to: DHConstraintScalar) -> DHConstraintBuilder {
+		return DHConstraintBuilder(self, .greaterThanOrEqual1(to: to))
+	}
+	
+	public func lengthGreaterThanOrEqual(to: DHConstraintScalar, priority: Int) -> DHConstraintBuilder {
+		return DHConstraintBuilder(self, .greaterThanOrEqual2(to: to, priority: priority))
+	}
+	
+	public func lengthGreaterThanOrEqual(to view: UIView) -> DHConstraintBuilder {
+		return DHConstraintBuilder(self, .greaterThanOrEqual, lengthRelativeToView: view)
+	}
+	
+	// MARK: - Less than
+	public func lengthLessThanOrEqual(to: DHConstraintScalar) -> DHConstraintBuilder {
+		return DHConstraintBuilder(self, .lessThanOrEqual1(to: to))
+	}
+	
+	public func lengthLessThanOrEqual(to: DHConstraintScalar, priority: Int) -> DHConstraintBuilder {
+		return DHConstraintBuilder(self, .lessThanOrEqual2(to: to, priority: priority))
+	}
+	
+	public func lengthLessThanOrEqual(to view: UIView) -> DHConstraintBuilder {
+		return DHConstraintBuilder(self, .greaterThanOrEqual, lengthRelativeToView: view)
+	}
+
+	// MARK: - Mixed
+	public func lengthGreaterThanOrEqual(to s0: DHConstraintScalar, priority p0: Int = 1000
+		, andLessThanOrEqualTo s1: DHConstraintScalar, priority p1: Int = 1000) -> DHConstraintBuilder {
+		return DHConstraintBuilder(self
+			, .greaterThanOrEqual2(to: s0, priority: p0)
+			, .lessThanOrEqual2(to: s1, priority: p1))
 	}
 }
 

		constraintString = "[view_\(uuid)(\(metricString))]"
	}
	
	public init(_ view: UIView, _ relation: DHConstraintRelation = .equal, lengthRelativeToView: UIView) {
		let uuid = __.count
		__.count = __.count &+ 1
		let uuid2 = __.count

	
}

private enum DHConstraintRelation {
	case greaterThanOrEqual
	case greaterThanOrEqual1(to: DHConstraintScalar)
	case greaterThanOrEqual2(to: DHConstraintScalar, priority: Int)
