 private let _singleton = AdBlocker()
 
 class AdBlocker {
+  // Store the last 500 URLs checked
+  // Store 10 x 50 URLs in the array called timeOrderedCacheChunks. This is a FIFO array,
+  // Throw out a 50 URL chunk when the array is full
+  var fifoOfCachedUrlChunks: [NSMutableDictionary] = []
+  let maxChunks = 10
+  let maxUrlsPerChunk = 50
 
   private init() {
   }

      return false
    }

    return AdBlockCppFilter.singleton().checkWithCppABPFilter(url.absoluteString, mainDocumentUrl: domain)
  }
}
  }

  func shouldBlock(request: NSURLRequest) -> Bool {
    // TODO: there shouldn't be a cost to checking unchanged prefs, please confirm this
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let profile = appDelegate.getProfile(UIApplication.sharedApplication())
    if !(profile.prefs.boolForKey(AdBlockSetting.prefKey) ?? AdBlockSetting.defaultValue) {
