     }
     
     fileprivate func _saveVideoToLibrary(_ fileURL: URL) {
-        if let validLibrary = library {
-            validLibrary.performChanges({
-                if let request = PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: fileURL) {
-                    request.creationDate = Date()
-                    
-                    if let location = self.locationManager?.latestLocation {
-                        request.location = location
-                    }
-                }
-            }, completionHandler: { _, error in
-                if let error = error {
-                    self._show(NSLocalizedString("Unable to save video to the device.", comment:""), message: error.localizedDescription)
-                    self._executeVideoCompletionWithURL(nil, error: error as NSError?)
-                } else {
-                    self._executeVideoCompletionWithURL(fileURL, error: error as NSError?)
-                }
-            })
-        }
+        
+        let location = self.locationManager?.latestLocation
+        let date = Date()
+        
+        library?.save(videoAtURL: fileURL, albumName: self.videoAlbumName, date: date, location: location, completion: { _ in
+            self._executeVideoCompletionWithURL(nil, error: nil)
+        })
+
     }
     
     // MARK: - UIGestureRecognizerDelegate

        return AVCaptureDevice.devices(for: AVMediaType.video)
    }
}

open class CameraManager: NSObject, AVCaptureFileOutputRecordingDelegate, UIGestureRecognizerDelegate {
    
    // MARK: - Public properties
    
    // custom image album name
    open var imageAlbumName: String?
    
    // custom image album name
    open var videoAlbumName: String?
    
    /// Capture session to customize camera settings.
    open var captureSession: AVCaptureSession?
