             dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0)) {
                 let start = NSDate()
 
-                let obj = FastCoder.objectWithData(data)
+                guard let obj = FastCoder.objectWithData(data) as? NSDictionary else { return }
                 self.finishedUnarchivingPreparsedJson(obj)
 
-                print("»»»»» HTTPS-E unarchive time: \(NSDate().timeIntervalSinceDate(start))")
+                NSLog("»»»»» HTTPS-E unarchive time: \(NSDate().timeIntervalSinceDate(start))")
             }
         } else if loader === rulesetsLoader {
             loadSqlDb()

        }
    }

    private func finishedUnarchivingPreparsedJson(json: AnyObject?) {
        delay(0) { // post to main thread
            guard let json = json as? [String:[Int]] else { return }
            self.domainToIdMapping = json
            self.checkBothLoadsAreComplete()
        }


    private func mapExactDomainToIdForLookup(domain: String) -> Int? {
        guard let domainToIdMapping = domainToIdMapping else { return nil }
        if let val = domainToIdMapping[domain] as? [Int] {
            return val[0]
        }
        return nil
