     public func fileOutput(captureOutput: AVCaptureFileOutput, didStartRecordingTo fileURL: URL, from connections: [AVCaptureConnection]) {
         captureSession?.beginConfiguration()
         if flashMode != .off {
-            _updateFlashMode(flashMode)
+            _updateIlluminationMode(flashMode)
         }
         
         captureSession?.commitConfiguration()
     }
     
     open func fileOutput(_ captureOutput: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {
-        _updateFlashMode(.off)
         if let error = error {
             _show(NSLocalizedString("Unable to save video to the device", comment:""), message: error.localizedDescription)
         } else {

        }
    }
    
    fileprivate func _updateFlashMode(_ flashMode: CameraFlashMode) {
        captureSession?.beginConfiguration()
        defer { captureSession?.commitConfiguration() }
        for captureDevice in AVCaptureDevice.videoDevices  {
            guard let avFlashMode = AVCaptureDevice.FlashMode(rawValue: flashMode.rawValue) else { continue }
            if captureDevice.isFlashModeSupported(avFlashMode) {
                do {
                    try captureDevice.lockForConfiguration()
                } catch {
                    return
                }
                captureDevice.flashMode = avFlashMode
                captureDevice.unlockForConfiguration()
            }
        }
        
    }
    
    fileprivate func _performShutterAnimation(_ completion: (() -> Void)?) {

            return
        }
        
        _updateIlluminationMode(flashMode)
        
        sessionQueue.async(execute: {
            let stillImageOutput = self._getStillImageOutput()
            if let connection = stillImageOutput.connection(with: AVMediaType.video),
