 
 		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

						self.topConstraint.constant = self.verticalConstant(for: initialPosition,
																			hostHeight: hostView.frame.height,
																			height: self.frame.height)
						self.state = .onHold
						self.show(edge: edgeToShow, hostView: hostView, isTraversingView: false)
					} else {
						self.animation(self.superview!, constraint: self.horizontalConstraint,
									   constant: positions.start, timing: timingAnim2, options: [.curveEaseOut], finished: {
										firstStepDone(hasBoomerang)
										self.state = .onHold
						})
					}
		})
