 	func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
 		guard let panRecognizer = gestureRecognizer as? UIPanGestureRecognizer else {
 			return true
+		}
+
+		guard state == .idle else {
+			return false
 		}
 		
 		let translation = panRecognizer.translation(in: targetView)

		// Finally we make our first adjustment to the mask layer based on the
		// values of the pan recognizer.
		adjustMaskLayer(basedOn: panRecognizer)
	}
	
	fileprivate func adjustMaskLayer(basedOn panRecognizer: UIPanGestureRecognizer) {

		guard let snapshotMaskLayer = snapshotMaskLayer else {
			return
		}

		state = .transitioning
		
		// When cancelling the transition we simply move the mask layer to it's original
		// location (which means that the entire previous style snapshot is shown), then
