         }
         
         // buttons
-        self.recordButton = UIButton(type: .custom)
-        if let recordButton = self.recordButton {
-            recordButton.setImage(UIImage(named: "record_button"), for: .normal)
+        self.recordButton = UIImageView(image: UIImage(named: "record_button"))
+        self.longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPressGestureRecognizer(_:)))
+        if let recordButton = self.recordButton,
+            let longPressGestureRecognizer = self.longPressGestureRecognizer {
+            recordButton.isUserInteractionEnabled = true
             recordButton.sizeToFit()
-            recordButton.addTarget(self, action: #selector(handleRecordButton(_:)), for: .touchUpInside)
+            longPressGestureRecognizer.delegate = self
+            longPressGestureRecognizer.minimumPressDuration = 0.05
+            longPressGestureRecognizer.allowableMovement = 5.0
+            recordButton.addGestureRecognizer(longPressGestureRecognizer)
         }
         
         self.flipButton = UIButton(type: .custom)

    internal var gestureView: UIView?
    internal var controlDockView: UIView?

    internal var recordButton: UIButton?
    internal var flipButton: UIButton?
    internal var flashButton: UIButton?
    internal var saveButton: UIButton?

    internal var focusTapGestureRecognizer: UITapGestureRecognizer?
    internal var zoomPanGestureRecognizer: UIPanGestureRecognizer?
    internal var flipDoubleTapGestureRecognizer: UITapGestureRecognizer?

    
}

// MARK: - capture

extension CameraViewController {
    
    internal func startCapture() {
        NextLevel.sharedInstance.record()
    }
    
    internal func pauseCapture() {
        NextLevel.sharedInstance.pause()
    }
    
    internal func endCapture() {
        NextLevel.sharedInstance.session?.mergeClips(usingPreset: AVAssetExportPresetHighestQuality, completionHandler: { (url: URL?, error: Error?) in
            if let _ = url {
                //
