 
             KingfisherManager.sharedManager.downloader.downloadImageWithURL(URL, options: [.BackgroundDecode], progressBlock: nil) { [weak self] image, error, imageURL, originalData in
 
-                guard let originalImage = image else { return }
+                guard let originalImage = image, strongSelf = self else { return }
 
-                self?.showImage(originalImage, transformer: transformer, completionHandler: completionHandler)
+                strongSelf.resizeImage(byOriginalImage: originalImage, transformer: transformer, action: { reducedImage in
+
+                    strongSelf.image = reducedImage
+
+                }, completionHandler: completionHandler)
 
                 KingfisherManager.sharedManager.cache.storeImage(originalImage, originalData: originalData, forKey: URL.absoluteString, toDisk: true, completionHandler: nil)
             }
         }
     }
 
-    private func showImage(originalImage: UIImage, transformer: ImageReducible, completionHandler: ((image: UIImage?) -> Void)?) {
-
-        dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
-
-            let reducedImage = originalImage.navi_avatarImageWithStyle(transformer.style)
-
-            KingfisherManager.sharedManager.cache.storeImage(reducedImage, originalData: nil, forKey: transformer.key, toDisk: true, completionHandler: {
-
-                dispatch_async(dispatch_get_main_queue()) {
-
-                    UIView.transitionWithView(self, duration: 0.3, options: .TransitionCrossDissolve, animations: {
-                        self.image = reducedImage
-
-                    }, completion: { _ in
-                        completionHandler?(image: reducedImage)
-                    })
-                }
-
-            })
-        }
-
-    }
-
 }

        return nil
    }

    func kfe_setImage(byTransformer transformer: ImageReducible, completionHandler: ((image: UIImage?) -> Void)? = nil) {

        guard let URL = NSURL(string: transformer.URLString) else {
            image = nil

        } else if let localOriginalImage = transformer.localOriginalImage {

            image = transformer.placeholderImage

            resizeImage(byOriginalImage: localOriginalImage, transformer: transformer, action: { [weak self] reducedImage in

                guard let strongSelf = self else { return }
                strongSelf.image = reducedImage

            }, completionHandler: completionHandler)

        } else {

