     
     private func sessionTask(sessionTask: ImageSessionTask, didCompleteWithData data: NSData?, error: ErrorType?) {
         if let data = data {
-            self.decodingQueue.addOperationWithBlock { [weak self] in
+            self.configuration.decodingQueue.addOperationWithBlock { [weak self] in
                 let image = self?.configuration.decoder.imageWithData(data)
                 self?.sessionTask(sessionTask, didCompleteWithImage: image, error: error)
             }

    private var executingTasks = [ImageTask : ImageLoadState]()
    private var sessionTasks = [ImageRequestKey : ImageSessionTask]()
    private let queue = dispatch_queue_create("ImageLoader-InternalSerialQueue", DISPATCH_QUEUE_SERIAL)
    private let decodingQueue = NSOperationQueue(maxConcurrentOperationCount: 1)
    private let processingQueue = NSOperationQueue(maxConcurrentOperationCount: 2)
    
    public init(configuration: ImageLoaderConfiguration) {
        self.configuration = configuration

    public var dataLoader: ImageDataLoading
    public var decoder: ImageDecoding
    public var maxConcurrentTaskCount = 8
    public var decodingQueue = NSOperationQueue(maxConcurrentOperationCount: 1)
    public var processingQueue = NSOperationQueue(maxConcurrentOperationCount: 2)
    
    public init(dataLoader: ImageDataLoading, decoder: ImageDecoding = ImageDecoder()) {
        self.dataLoader = dataLoader
        self.decoder = decoder
