         
         switch backgroundConfiguration.backgroundContentMode {
         case .Original:
-            imageConfiguration = backgroundImage.centeredConfiguration(forFrame: frame, scale: backgroundConfiguration.backgroundScale)
+            imageConfiguration = backgroundImage.originalConfiguration(forFrame: frame, scale: backgroundConfiguration.backgroundScale)
         case .Tile:
-            imageConfiguration = backgroundImage.tiledConfiguration(forFrame: frame, scale: backgroundConfiguration.backgroundScale)
+            imageConfiguration = backgroundImage.tileConfiguration(forFrame: frame, scale: backgroundConfiguration.backgroundScale)
         case .Stretch:
-            imageConfiguration = backgroundImage.constrainedConfiguration(forFrame: frame)
+            imageConfiguration = backgroundImage.stretchConfiguration(forFrame: frame)
+        case .Fill:
+            imageConfiguration = backgroundImage.fillConfiguration(forFrame: frame)
+        case .Fit:
+            imageConfiguration = backgroundImage.fitConfiguration(forFrame: frame)
         default:
             break
         }

            let imageCell = collectionView.dequeueReusableCell(withReuseIdentifier: imageBlockCellIdentifier, for: indexPath) as! ImageBlockViewCell
            
            imageCell.imageView.image = nil
            // TODO: cancel any requests or images from the reused cell
            
            if let image = imageBlock.image {
                let config = image.constrainedConfiguration(forFrame: frame)
                imageCell.imageView.rv_setImage(url: config.url, activityIndicatorStyle: .gray)
            }
            


fileprivate extension Image {
    
    func stretchConfiguration(forFrame frame: CGRect) -> ImageConfiguration {
        guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
            return (url, 1)
        }
