 		return instance
 	}()
 
+	func handleOneTouchDoubleTap(gesture: UIPinchGestureRecognizer) {
+		print("zoom in")
+		let originalScale = model.scale
+		let originalValue = self.value
+		
+		let scale0: Double = originalScale * 2
+		let scale1: Double = originalScale * 4
+		let scale2: Double = originalScale * 6
+		let scale3: Double = originalScale * 8
+		let scale4: Double = originalScale * 10
+
+		let clampedScale = clampScale(scale4)
+		if model.scale == clampedScale {
+			return // already zoomed in, no need to update UI
+		}
+
+		changeScale(scale: scale0, value: originalValue)
+
+		let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(0.08 * Float(NSEC_PER_SEC)))
+		dispatch_after(delay, dispatch_get_main_queue()) {
+			self.changeScale(scale: scale1, value: originalValue)
+
+			dispatch_after(delay, dispatch_get_main_queue()) {
+				self.changeScale(scale: scale2, value: originalValue)
+
+				dispatch_after(delay, dispatch_get_main_queue()) {
+					self.changeScale(scale: scale3, value: originalValue)
+					
+					dispatch_after(delay, dispatch_get_main_queue()) {
+						self.changeScale(scale: scale4, value: originalValue)
+						self.valueDidChange?()
+					}
+				}
+			}
+		}
+	}
+	
+	
+	// MARK: two-finger double-tap for zoom out
+	
 	lazy var twoTouchDoubleTapGestureRecognizer: UITapGestureRecognizer = {
 		let instance = UITapGestureRecognizer(target: self, action: #selector(PrecisionSlider.handleTwoTouchDoubleTap))
 		instance.numberOfTapsRequired = 2

		instance.userInteractionEnabled = false
		return instance
	}()

	var value: Double {
		get { return valueFromContentOffset() }

			originalValue = self.value
		}
		if gesture.state == .Changed {
			let scale = originalScale * Double(gesture.scale)
			changeScale(scale: scale, value: originalValue)
			valueDidChange?()
		}
	}
	
	
	// MARK: one-finger double-tap for zoom in
	
	lazy var oneTouchDoubleTapGestureRecognizer: UITapGestureRecognizer = {
		let instance = UITapGestureRecognizer(target: self, action: #selector(PrecisionSlider.handleOneTouchDoubleTap))
