 
 
     func blurImage(image: UIImage, completion: UIImage -> Void) {
-        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
-            let blurredImage = image.blurredImageWithRadius(20, iterations: 20, tintColor: UIColor.blackColor())
 
-            completion(blurredImage)
+        if let blurredAvatarImage = blurredAvatarImage {
+            completion(blurredAvatarImage)
+
+        } else {
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
+                let blurredImage = image.blurredImageWithRadius(20, iterations: 20, tintColor: UIColor.blackColor())
+
+                completion(blurredImage)
+            }
         }
     }
 
     func updateAvatarWithAvatarURLString(avatarURLString: String) {
+
         if avatarImageView.image == nil {
             avatarImageView.alpha = 0
             avatarBlurImageView.alpha = 0


            self?.blurImage(image) { blurredImage in
                dispatch_async(dispatch_get_main_queue()) {
                    self?.avatarBlurImageView.image = blurredImage
                }
            }


    }

    func configureWithUser(user: User) {

        updateAvatarWithAvatarURLString(user.avatarURLString)

        if user.friendState == UserFriendState.Me.rawValue {
            YepUserDefaults.avatarURLString.bindListener(Listener.Avatar) { [weak self] avatarURLString in
                if let avatarURLString = avatarURLString {
                    self?.blurredAvatarImage = nil // need reblur
                    self?.updateAvatarWithAvatarURLString(avatarURLString)
                }
            }
