         collectionView.registerClass(PhotoCell.self, forCellWithReuseIdentifier: PhotoCell.reuseIdentifier)
         collectionView.registerClass(CameraCell.self, forCellWithReuseIdentifier: CameraCell.reuseIdentifier)
         
-        let opts = PHFetchOptions()
-        opts.sortDescriptors = [
-            NSSortDescriptor(key: "creationDate", ascending: false)
-        ]
-        if let photos = PHAsset.fetchAssetsWithMediaType(.Image, options: opts) {
-            let max = min(ImagePickerViewController.maxPhotoCount, photos.count)
-            let indexes = NSIndexSet(indexesInRange: NSMakeRange(0, max))
-            recentPhotos = photos.objectsAtIndexes(indexes).map { $0 as! PHAsset }
-        }
         pickerContainer.addSubview(collectionView)
         initCamera()
     }

        backgroundView.addGestureRecognizer(UITapGestureRecognizer(target: self, action:"onOutsideTap"))
        window.addSubview(backgroundView)
        window.addSubview(pickerContainer)
    }
    
    func onOutsideTap() {

    // Photo Assets
    ///////////////////////////////////////
    
    var maxPhotoCount = 20 {
        didSet {
            fetchImageAssets()
        }
    }
    
    var targetImageSize: CGSize = PHImageManagerMaximumSize {
        didSet {
            cachingImageManager.startCachingImagesForAssets(self.recentPhotos, targetSize: targetImageSize, contentMode: .AspectFit, options: nil)
        }
    }

    var recentPhotos: [PHAsset] = [] {
        willSet {
            cachingImageManager.stopCachingImagesForAllAssets()
        }
        didSet {
            cachingImageManager.startCachingImagesForAssets(self.recentPhotos, targetSize: targetImageSize, contentMode: .AspectFit, options: nil)
        }
    }
    
    public convenience init() {
        self.init(nibName: nil, bundle: nil)
