 private enum ImageLoadState {
     case CacheLookup(NSOperation)
     case Loading(DataTask)
-    case Decoding(NSOperation)
+    case Decoding()
     case Processing(NSOperation)
 }
 

                    let data = cache.dataFor(task)
                    self?.queue.async {
                        if let data = data {
                            self?.decodeData(data, task: task)
                        } else {
                            guard self?.loadStates[task] != nil else { /* no longer registered */ return }
                            self?.loadDataFor(task)

                        self.taskQueue.cancel(dataTask.URLSessionTask)
                        self.removeDataTask(dataTask) // No more ImageTasks can register
                    }
                case .Decoding: return
                case .Processing(let operation): operation.cancel()
                }
                self.loadStates[task] = nil // No longer registered
