public boolean createPartition(int partId, int numPE, 
    		PartitionPredicate predicate) {
    	
		if(partId >= partitions.length || partId < 0) {
			throw new IndexOutOfBoundsException("It is not possible to " +
					"add a partition with index: " + partId + ".");
		}
		else if(numPE < 0) {
			throw new IllegalArgumentException("Number of PEs should be > 0");
    	}
    	else if(predicate == null) {
    		throw new IllegalArgumentException("Invalid predicate");
    	}
    	
    	EasyBackFillingPartition partition = 
    		new EasyBackFillingPartition(partId, numPE, predicate);
    	
    	partitions[partId] = partition;
    	return true;
    }