public void applyFilters(Class [] filters) throws InstantiationException, IllegalAccessException {
		
		HashSet<Resident> newPopulation = new HashSet<Resident>();
		
		for (int i=0; i < filters.length ; i++){
			Filter filter = (Filter) filters[i].newInstance();
			
			filter.init(bestScore, population);
			
			newPopulation.addAll(filter.applyFilter());
		}
		
		population.clear();
		population.addAll(newPopulation);
		
		recalculateScores();
		
	}