     }
     */
     
+    func loadFetchResults() {
+        PHPhotoLibrary.requestAuthorization({ (status) -> Void in
+            switch status {
+            case .Authorized:
+                PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
+                
+                if let fetchedAssetCollection = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumRecentlyAdded, options: nil)?.lastObject as? PHAssetCollection {
+                    let fetchOptions = PHFetchOptions()
+                    fetchOptions.predicate = NSPredicate(format: "SELF.mediaType = %d", PHAssetMediaType.Image.rawValue)
+                    fetchOptions.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: false) ]
+                    self.assetsFetchResults = PHAsset.fetchAssetsInAssetCollection(fetchedAssetCollection, options: fetchOptions)
+                }
+                
+                self.updateCachedAssets()
+                
+                dispatch_async(dispatch_get_main_queue(), { () -> Void in
+                    self.collectionView!.reloadSections(NSIndexSet(index: self.recentPhotosSection))
+                })
+                break
+            default:
+                break
+            }
+        })
+    }
+    
     // MARK: Asset Caching
     
     func resetCachedAssets() {

        self.collectionView!.showsHorizontalScrollIndicator = false
        self.collectionView!.showsVerticalScrollIndicator = false
        
        PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
        
        dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), { () -> Void in
            if let fetchedAssetCollection = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumRecentlyAdded, options: nil)?.lastObject as? PHAssetCollection {
                let fetchOptions = PHFetchOptions()
                fetchOptions.predicate = NSPredicate(format: "SELF.mediaType = %d", PHAssetMediaType.Image.rawValue)
                fetchOptions.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: false) ]
                self.assetsFetchResults = PHAsset.fetchAssetsInAssetCollection(fetchedAssetCollection, options: fetchOptions)
            }
            
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                if self.assetsFetchResults != nil {
                    self.collectionView!.reloadSections(NSIndexSet(index: self.recentPhotosSection))
                }
            })
        })
        
        let cellMaxWidth = self.preferredContentSize.width - collectionViewFlowLayout.sectionInset.left - collectionViewFlowLayout.sectionInset.right
        let cellHeight = self.preferredContentSize.height - collectionViewFlowLayout.sectionInset.top - collectionViewFlowLayout.sectionInset.bottom

                            }) ?? NSIndexSet()
                            if removedIndexes.count > 0 {
                                collectionView.deleteItemsAtIndexPaths(map(removedIndexes, { NSIndexPath(forItem: $0, inSection: self.recentPhotosSection) }))
                                collectionView.insertItemsAtIndexPaths(map(NSIndexSet(indexesInRange: NSRange(location: self.maxFetchResultsCount - removedIndexes.count, length: removedIndexes.count - max(self.maxFetchResultsCount - self.assetsFetchResults!.count, 0))), { NSIndexPath(forItem: $0, inSection: self.recentPhotosSection) }))
                            }
                            
                            let insertedindexes = collectionChanges.insertedIndexes?.indexesWithOptions(.Concurrent, passingTest: { (index, stop) -> Bool in
