         }
         
         let backgroundView = UIImageView()
-        
-        AssetManager.sharedManager.fetchAsset(url: url) { data in
-            guard let data = data, let image = UIImage(data: data, scale: deviceScale) else {
-                return
-            }
-
-            backgroundView.image = image
-            backgroundView.contentMode = UIViewContentMode(imageContentMode: .Original)
-        }
-        
+        backgroundView.setBackgroundImage(url: url, contentMode: block.backgroundContentMode, scale: scale)
         return backgroundView
     }
 

        
        // BackgroundImage
        
        cell.backgroundView = backgroundView(forBlock: block, inRect: frame)
        
        // Appearance
        

        return components.url
    }
    
    func backgroundView(forBlock block: Block?, inFrame frame: CGRect) -> UIImageView? {
        guard let block = block else {
            return nil
        }
        
        switch block.backgroundContentMode {
        case .Original:
            return centeredBackgroundView(forBlock: block, inFrame: frame)
        case .Tile:
            return tiledBackgroundView(forBlock: block, inFrame: frame)
        default:
            return nil
        }
    }

    func centeredBackgroundView(forBlock block: Block, inFrame frame: CGRect) -> UIImageView? {
        guard let backgroundImage = block.backgroundImage else {
            return nil
        }
        
        let width = min(frame.width * block.backgroundScale, backgroundImage.size.width)
        let height = min(frame.height * block.backgroundScale, backgroundImage.size.height)
        let x = (backgroundImage.size.width - width) / 2
        let y = (backgroundImage.size.height - height) / 2
        let rect = CGRect(x: x, y: y, width: width, height: height)
        
        return croppedBackgroundView(forBlock: block, backgroundImage: backgroundImage, inRect: rect)
    }
    
    func tiledBackgroundView(forBlock block: Block, inFrame frame: CGRect) -> UIImageView? {
        guard let backgroundImage = block.backgroundImage else {
            return nil
        }
        
        let width = min(frame.width * block.backgroundScale, backgroundImage.size.width)
        let height = min(frame.height * block.backgroundScale, backgroundImage.size.height)
        let rect = CGRect(x: 0, y: 0, width: width, height: height)
        
        return croppedBackgroundView(forBlock: block, backgroundImage: backgroundImage, inRect: rect)
    }
    
    func croppedBackgroundView(forBlock block: Block, backgroundImage: Image, inRect rect: CGRect) -> UIImageView? {
        guard var components = URLComponents(url: backgroundImage.url, resolvingAgainstBaseURL: false) else {
            return nil
