 
 		animation(superView, constraint: horizontalConstraint,
 				  constant: animationValueOne, timing: isTraversingView ? 0.3 : 0.15, options: [.curveEaseIn], finished: {
+					guard self.state != .restoring else { return /*second show animation cancelled, indicator is restoring*/ }
 					self.animation(superView, constraint: self.horizontalConstraint,
 								   constant: animationValueTwo, timing: 0.2, options: [.curveEaseOut], finished: {
-									if isTraversingView {}
+									self.state = .onHold
 					})
 		})
 	}

	private let config: CariocaIndicator
	///The constraints applied to the iconview. Can be updated later with custom configuration
	private var iconConstraints: [NSLayoutConstraint] = []

	///Initialise an IndicatorView
	///- Parameter edge: The inital edge. Will be updated every time the user changes of edge.
	///- Parameter indicator: The indicator custom configuration

	///- Parameter hostView: The menu's hostView, to calculate the positions
	///- Parameter isTraversingView: Should the indicator traverse the hostView, and stick to the opposite edge ?
	func show(edge: UIRectEdge, hostView: UIView, isTraversingView: Bool) {
		guard let superView = self.superview, state != .showing else { return }
		self.state = .showing
		self.edge = edge
		self.setNeedsDisplay()
		let positions = positionValues(hostView)
