 		setNeedsLayout()
 	}
 
+	///The main constraint, with the highest priority. Depends on the current edge.
+	private var mainConstraint: NSLayoutConstraint {
+		return edge == .left ? leadingConstraint : trailingConstraint
+	}
+	///The second constraint, with the lowest priority. Depends on the current edge.
+	private var secondConstraint: NSLayoutConstraint {
+		return edge == .left ? trailingConstraint : leadingConstraint
+	}
+	///Calls the positionConstants() with all internal parameters
+	///- Returns: IndicatorPositionConstants All the possible calculated positions
+	private func positionValues(_ hostView: UIView) -> IndicatorPositionConstants {
+		return positionConstants(hostWidth: hostView.frame.width,
+								 indicatorWidth: frame.width,
+								 edge: edge,
+								 borderMargin: config.borderMargin,
+								 bouncingValues: config.bouncingValues)
+	}
 	///Show the indicator on a specific edge, by animating the horizontal position
 	///- Parameter edge: The screen edge
 	///- Parameter hostView: The menu's hostView, to calculate the positions

	}

	///Calculates the indicator's position for animation
	///- Parameter hostSize: The hostView's size
	///- Parameter indicatorSize: The indicator's size
	///- Parameter edge: The original edge
	///- Parameter borderMargin: The border magins
	///- Parameter bouncingValues: The values to make the bouncing effect in animations

				positionTwo: animationValueTwo,
				finished: {
					if isTraversingView {
						self.constraintPriorities(main: self.secondConstraint,
												  second: self.mainConstraint)
					}
		})
	}
	///Retore the indicator on it's original edge position
	///- Parameter hostView: The menu's hostView, to calculate the positions
	func restore(hostView: UIView) {
		let positions = positionValues(hostView)
		constraintPriorities(main: mainConstraint, second: secondConstraint)
		mainConstraint.isActive = true
		secondConstraint.isActive = false
