for (ProcessorExchangePair pair : pairs) {
final Processor processor = pair.getProcessor();
final Processor prepared = pair.getPrepared();
final Exchange subExchange = pair.getExchange();
updateNewExchange(subExchange, total.intValue(), pairs);
completion.submit(new Callable<Exchange>() {
public Exchange call() throws Exception {
if (!running.get()) {
// do not start processing the task if we are not running