     
     private func addAudioOuput() -> Bool {
         
-        if self.audioOutput == nil {
-            self.audioOutput = AVCaptureAudioDataOutput()
-        }
-        
-        if let session = self.captureSession, let audioOutput = self.audioOutput {
+        if self._audioOutput == nil {
+            self._audioOutput = AVCaptureAudioDataOutput()
+        }
+        
+        if let session = self.captureSession, let audioOutput = self._audioOutput {
             if session.canAddOutput(audioOutput) {
                 session.addOutput(audioOutput)
                 audioOutput.setSampleBufferDelegate(self, queue: self.sessionQueue)

extension NextLevel: AVCaptureVideoDataOutputSampleBufferDelegate, AVCaptureAudioDataOutputSampleBufferDelegate {
    
    public func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) {
        if let videoOutput = self.videoOutput, let audioOutput = self.audioOutput {
            switch captureOutput {
            case videoOutput:
                self.executeClosureAsyncOnMainQueueIfNecessary {

    
    private func addPhotoOutput() -> Bool {
        
        if self._photoOutput == nil {
            self._photoOutput = AVCapturePhotoOutput()
        }
        
        if let session = self.captureSession, let photoOutput = self._photoOutput {
            if session.canAddOutput(photoOutput) {
                session.addOutput(photoOutput)
                return true
