     public func fetch(url: String, tag: String? = nil, options: [String: Any]? = nil, expired: WebCacheExpiration = .Default, progress: NSProgress? = nil, completion: (OBJECT?) -> Void) {
         dispatch_async(self.queue) {
             if let entry = self.cache.objectForKey(url) as? WebObjectEntry {
-                let object = entry.get(tag)
-                completion(object as? OBJECT)
-                return
+                if let object = entry.get(tag) as? OBJECT {
+                    completion(object)
+                    return
+                }
             }
         
             let receiver = WebCacheDataReceiver(url: url) {

    var tags: [String: (object: Any, cost: Int)]
    var cost: Int
    
    init(tag: String?, value: Any, cost: Int) {
        self.tags = [ (tag ?? ""): (value, cost) ]
        self.cost = cost
    }
    

        return nil
    }

    func set(tag: String?, object: Any, cost: Int) {
        let tag = tag ?? ""
        if let r = self.tags[tag] {
            self.cost -= r.cost
        }
        self.tags[tag] = (object, cost)
        self.cost += cost
    }
    
