             }
         }
     }
+    
+    // MARK: ViewWillAppear
+    
+    /// ViewWillAppear(_ animated:) Implementation
+    
+    open override func viewWillAppear(_ animated: Bool) {
+        super.viewWillAppear(animated)
+        NotificationCenter.default.addObserver(self, selector: #selector(captureSessionDidStartRunning), name: .AVCaptureSessionDidStartRunning, object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(captureSessionDidStopRunning),  name: .AVCaptureSessionDidStopRunning,  object: nil)
+    }
+    
+    
+    
 	// MARK: ViewDidAppear
 
 	/// ViewDidAppear(_ animated:) Implementation
-
-
 	override open func viewDidAppear(_ animated: Bool) {
 		super.viewDidAppear(animated)
-
+        
 		// Subscribe to device rotation notifications
 
 		if shouldUseDeviceOrientation {

			self.configureSession()
		}
	}

    // MARK: ViewDidLayoutSubviews
    
    /// ViewDidLayoutSubviews() Implementation

	}

	fileprivate func capturePhotoAsyncronously(completionHandler: @escaping(Bool) -> ()) {
        
        guard sessionRunning == true else {
            print("[SwiftyCam]: Cannot take photo while session isn't running")
            return
        }
        
		if let videoConnection = photoFileOutput?.connection(withMediaType: AVMediaTypeVideo) {

			photoFileOutput?.captureStillImageAsynchronously(from: videoConnection, completionHandler: {(sampleBuffer, error) in
