public static void divideLabor() {
		// allocate indexes for each worker
		int spacer = CHARS.length / numThreads;		
		int remainder = CHARS.length % numThreads;		
		
		int count = 0;
		int end = 0;
		int i = 0;
		while(i < numThreads) {
			end = count + spacer - 1;
			if (remainder > 0) {
				end++;
				remainder--;
			}
			crackWorker worker = new crackWorker(count, end);
			workers.add(worker);
			
//			// debugging
//			System.out.println(worker.startIndex);
//			System.out.println(worker.endIndex);
//			System.out.println("\n");
			
			count = end + 1;
			i++;
		}
	}