 import Photos
 
 public struct PhotoLibraryDataSource {
+    /// A reference to the calling PHFetchResult.
     public private(set) var fetchResult: PHFetchResult<PHAsset>
+    
+    /// A reference to a PHAssetCollection returned from the fetchResult.
     public private(set) var collection: PHAssetCollection
+    
+    /// A reference to an Array of PHAssets for the PHAssetCollection.
     public private(set) var assets: [PHAsset]
+}
+
+@objc(PhotoLibraryMove)
+public class PhotoLibraryMove: NSObject {
+    /// An index that is being moved from.
+    public private(set) var from: Int
+    
+    /// An index that is being moved to.
+    public private(set) var to: Int
+    
+    /**
+     An initializer that accepts a `from` and `to` Int value.
+     - Parameter from: An Int.
+     - Parameter to: An Int.
+     */
+    public init(from: Int, to: Int) {
+        self.from = from
+        self.to = to
+    }
 }
 
 @objc(PhotoLibraryDelegate)

     - Parameter removedIndexes: An IndexSet of the changed indexes.
     - Parameter insertedIndexes: An IndexSet of the inserted indexes.
     - Parameter changedIndexes: An IndexSet of the changed indexes.
     */
    @objc
    optional func photoLibrary(photoLibrary: PhotoLibrary, removedIndexes: IndexSet?, insertedIndexes: IndexSet?, changedIndexes: IndexSet?)
    
    /**
     A delegation method that is executed when there are moves
     within the photo library.
     - Parameter photoLibrary: A reference to the PhotoLibrary.
     - Parameter hasMoves from: The from index.
     - Parameter to: The to index.
     */
    @objc
    optional func photoLibrary(photoLibrary: PhotoLibrary, hasMoves from: Int, to: Int)
}

@objc(PhotoLibrary)

     - Parameter photoLibrary: A reference to the PhotoLibrary.
     - Parameter fetchBeforeChanges: A PHFetchResult<PHObject> before changes.
     - Parameter fetchAfterChanges: A PHFetchResult<PHObject> after changes.
     changes exist. True if yes, false otherwise.
     */
    @objc
    optional func photoLibrary(photoLibrary: PhotoLibrary, fetchBeforeChanges: PHFetchResult<PHObject>, fetchAfterChanges: PHFetchResult<PHObject>)
    
    /**
     A delegation method that is executed when there are moved objects.
