use a separate NSOperationQueue, not the main one