         scrollView.addSubview(self._contentView)
         return scrollView
     }
-    
-    func _createDoubleTapRecognizer() -> UITapGestureRecognizer {
+}
+
+
+// MARK: Computed Properties
+private extension ZoomView {
+    var _doubleTapEnabled: Bool {
+        get {
+            return self.__doubleTapEnabled
+        }
+        set(newDoubleTapEnabled) {
+            self.__doubleTapEnabled = newDoubleTapEnabled
+            self._updateDoubleTapRecognizer()
+        }
+    }
+    
+    var _zoomOutTapEnabled: Bool {
+        get {
+            return self.__zoomOutTapEnabled
+        }
+        set(newZoomOutTapEnabled) {
+            self.__zoomOutTapEnabled = newZoomOutTapEnabled
+            self._updateZoomOutTapRecognizer()
+        }
+    }
+}
+
+
+// MARK: Add Subviews
+private extension ZoomView {
+    func _addSubviews() {
+        self.addSubview(self._scrollView)
+    }
+}
+
+
+// MARK: Tap Recognizers
+private extension ZoomView {
+    func _updateTapRecognizers() {
+        self._updateDoubleTapRecognizer()
+        self._updateZoomOutTapRecognizer()
+    }
+    
+    func _updateDoubleTapRecognizer() {
+        guard (self.doubleTapEnabled == (self._doubleTapRecognizer == nil)) else {
+            return
+        }
+        
+        if self.doubleTapEnabled {
+            self._doubleTapRecognizer = self._createDoubleTapRecognizer()
+            self._scrollView.addGestureRecognizer(self._doubleTapRecognizer!)
+        } else {
+            self._scrollView.removeGestureRecognizer(self._doubleTapRecognizer!)
+            self._doubleTapRecognizer = nil
+        }
+    }
+    
+    func _updateZoomOutTapRecognizer() {
+        guard (self.zoomOutTapEnabled == (self._zoomOutTapRecognizer == nil)) else {
+            return
+        }
+        
+        if self.zoomOutTapEnabled {
+            self._zoomOutTapRecognizer = self._createZoomOutRecognizer()
+            self._scrollView.addGestureRecognizer(self._zoomOutTapRecognizer!)
+        } else {
+            self._scrollView.removeGestureRecognizer(self._zoomOutTapRecognizer!)
+            self._zoomOutTapRecognizer = nil
+        }
+    }
+    
+    // Helpers
+    private func _createDoubleTapRecognizer() -> UITapGestureRecognizer {
         let doubleTapRecognizer: UITapGestureRecognizer = UITapGestureRecognizer()
         doubleTapRecognizer.numberOfTapsRequired = 2
         doubleTapRecognizer.addTarget(

        return doubleTapRecognizer
    }
    
    func _createZoomOutRecognizer() -> UITapGestureRecognizer {
        let zoomOutRecognizer: UITapGestureRecognizer = UITapGestureRecognizer()
        zoomOutRecognizer.numberOfTapsRequired = 2
        zoomOutRecognizer.numberOfTouchesRequired = 2

        )
        
        return zoomOutRecognizer
    }
}

