                     progressBlock(receivedSize: receivedSize, totalSize: totalSize)
                 })
             }
-        }) { (image, error, cacheType, imageURL) -> () in
-            dispatch_async(dispatch_get_main_queue(), { () -> Void in
-                var cachedInWatch: Bool = false
-                
-                if (imageURL == self.kf_webURL && image != nil) {
-                    self.setImage(image)
+            }) { (image, error, cacheType, imageURL) -> () in
+                dispatch_async(dispatch_get_main_queue(), { () -> Void in
+                    var cachedInWatch: Bool = false
                     
-                    if cacheInWatch {
-                        if let key = URL.absoluteString?.kf_MD5() {
-                            cachedInWatch = WKInterfaceDevice.currentDevice().addCachedImage(image!, name: key)
+                    if (imageURL == self.kf_webURL && image != nil) {
+                        self.setImage(image)
+                        
+                        if cacheInWatch {
+                            if let URLString = URL.absoluteString {
+                                let key = WKInterfaceImage.kf_hashForURLString(URLString)
+                                cachedInWatch = WKInterfaceDevice.currentDevice().addCachedImage(image!, name: key)
+                            }
                         }
                     }
-                }
-                
-                completionHandler?(error: error, cacheType: cacheType, imageURL: imageURL, cachedInWatch: cachedInWatch)
-            })
+                    
+                    completionHandler?(error: error, cacheType: cacheType, imageURL: imageURL, cachedInWatch: cachedInWatch)
+                })
         }
         
         return task
     }
 }
+
 
 // MARK: - Associated Object
 private var lastURLkey: Void?

        return kf_setImageWithURL(URL, placeholderImage: placeholderImage, optionsInfo: optionsInfo, progressBlock: nil, completionHandler: completionHandler)
    }
    
    public func kf_setImageWithURL(URL: NSURL,
            placeholderImageNamed name: String?,
                           optionsInfo: KingfisherOptionsInfo?,

    :param: progressBlock     Called when the image downloading progress gets updated.
    :param: completionHandler Called when the image retrieved and set.
    
    :returns: A task represents the retriving process or `nil` if device cache is used.
    */
    public func kf_setImageWithURL(URL: NSURL,
                      placeholderImage: UIImage?,
