public void submitAll(IntervalList intervals) {
		
		//adjust threshold to be bigger if we're dealing with genome-sized files,
		//elsewise we may blow the stack
		if (intervals.getExtent() > 1e8) {
			thresholdExtent = (long) 1e7;
		}
		if (intervals.getExtent() > 1e9) {
			thresholdExtent = (long) 1e8;
		}
		
		if (intervals.getExtent() < thresholdExtent) {
			//Intervals size is pretty small, just call 'em
			IntervalCaller<T> caller;
			try {
				caller = getIntervalCaller(intervals);
				if (caller != null) {
					callers.add(caller);
					pool.execute(caller);
				}
			} catch (Exception e) { 
				e.printStackTrace();
				System.err.println("Error processing interval, aborting.");
				System.exit(1);
			}
			
		}
		else {	
			//Intervals cover a lot of ground, so split them in half and submit each half
			IntervalList[] intervalArray = splitter.splitIntervals(intervals);
			for(int i=0; i<intervalArray.length; i++) {
				submitAll(intervalArray[i]);
			}
		}
	}