             })
         }
         
-        let library = ALAssetsLibrary()
         library.enumerateGroupsWithTypes((1 << 4), usingBlock: { (group: ALAssetsGroup!, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
             if group != nil {
                 group.setAssetsFilter(ALAssetsFilter.allPhotos())
                 group.enumerateAssetsUsingBlock({ (asset: ALAsset!, index: Int, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
                     if asset != nil {
                         let representation: ALAssetRepresentation = asset.defaultRepresentation()
-                        let orientation = UIImageOrientation(representation.orientation())
-                        let photo = UIImage(CGImage: representation.fullResolutionImage().takeUnretainedValue(), scale: CGFloat(representation.scale()), orientation: orientation)
-                        self.photos.insert(photo!, atIndex: 0)
+                        self.photos.insert(representation, atIndex: 0)
+                        self.photosCache.addObject(NSNull())
                     }
                 })
                 

    
    required public init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // MARK: - UITableViewDataSource

        return self.buttonIndexForRow(lastRow)
    }
    
    public var selectedPhotos: [NSURL] {
        get {
            var selectedPhotos = [NSURL]()
            for index in self.selectedPhotoIndices {
                selectedPhotos.append(self.photos[index].url())
            }
            
            return selectedPhotos
