@Override
	public void allocate(JobMetaData job) {
		if (job.getNumFiles() < CUTOFF) {
			// We dont split so just use the regular allocator
			IAllocator onejob = new JobPerVMAllocator(pool, monitor);
			onejob.allocate(job);
		} else {
			int vmsneeded = 3;
			ArrayList<SlaveVM> vms = pool.requestVMs(vmsneeded);
			Allocation alloc = new Allocation();
			ArrayList<HashMap<Integer, String>> filelists = sliceMap(
					job.getFiles(), vmsneeded - 1);

			boolean first = true;
			int i = 0;
			int vmid = 0;
			for (SlaveVM vm : vms) {
				if (first) {
					alloc.allocate(vm, null);
					first = false;
					vmid = vm.getId();
					System.out.println("DEBUG: Last VM is: " + vm.getId());
				} else {
					alloc.allocate(vm, filelists.get(i));
					i++;
				}
			}
			System.out.println("Allocation: " + alloc.getAllocations());
			createActivity(job, alloc, vmid);
		}

	}