@Override
	public FitnessFunction deteriorateFitness(FitnessFunction currentFitness,
			Collection<Cluster<? extends PointWithFitness>> clusters) {

		logger.info("Performing fitness deterioration for " + clusters.size()
				+ " clusters");

		if (clusters == null || clusters.size() == 0) {
			return currentFitness;
		}

		Collection<Functor> crunchingFunctions = new ArrayList<Functor>(
				clusters.size());

		for (Cluster<? extends PointWithFitness> cluster : clusters) {
			Functor crunchingFunctor = createCrunchingFunctorForCluster(cluster);
			// printCrunchingFunctor(now, i, crunchingFunctor);
			crunchingFunctions.add(crunchingFunctor);
		}

		return createDeterioratedFitness(currentFitness, crunchingFunctions);
	}