         }
     }
     
-    internal func flashActiveChanged() {
-        // adjust white balance mode depending on the flash
-        if let device = self._currentDevice {
-            let exposureMode = device.exposureMode
-            let whiteBalanceMode = self.whiteBalanceModeBestForExposureMode(exposureMode: exposureMode)
-            let currentWhiteBalanceMode = device.whiteBalanceMode
-            
-            if whiteBalanceMode != currentWhiteBalanceMode {
-                do {
-                    try device.lockForConfiguration()
-                    
-                    self.adjustWhiteBalanceForExposureMode(exposureMode: exposureMode)
-                    
-                    device.unlockForConfiguration()
-                }
-                catch {
-                    print("NextLevel, failed to lock device for white balance configuration")
-                }
-            }
-        }
-        
-        DispatchQueue.main.async {
-            self.flashDelegate?.nextLevelFlashActiveChanged(self)
-        }
-    }
-    
-    internal func torchActiveChanged() {
-        DispatchQueue.main.async {
-            self.flashDelegate?.nextLevelTorchActiveChanged(self)
-        }
-    }
-    
-    internal func flashAndTorchAvailabilityChanged() {
-        DispatchQueue.main.async {
-            self.flashDelegate?.nextLevelFlashAndTorchAvailabilityChanged(self)
-        }
-    }
-    
     // mirroring
     
     /// Changes the current capture device's mirroring mode.

                self.whiteBalanceEnded()
            }
        })
        
        

        self._observers.append(currentDevice.observe(\.isFlashAvailable, options: [.new]) { (object, change) in
            self.flashAndTorchAvailabilityChanged()
        })
        
        self._observers.append(currentDevice.observe(\.isTorchAvailable, options: [.new]) { (object, change) in
            self.flashAndTorchAvailabilityChanged()
        })
        
        self._observers.append(currentDevice.observe(\.isFlashActive, options: [.new]) { (object, change) in
            self.flashActiveChanged()
        })
        
        self._observers.append(currentDevice.observe(\.isTorchActive, options: [.new]) { (object, change) in
            self.torchActiveChanged()
        })

        self._observers.append(currentDevice.observe(\.lensPosition, options: [.new]) { (object, change) in

        }
    }
    
    /// Triggers a photo capture from the last video frame.
    public func capturePhotoFromVideo() {
        
