private void plantHerbiStartSimulationButtonListener(){
		restart.removeActionListener(restartActionListener);
		restartActionListener = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (currentConstructor != null) {
					synchronized(simulator) {
						if (simulator.isRunning()) {
							simulator.stop();
						}
					}
					simulator.clearCreatures();	
					
					int minLifePlant = Integer.parseInt(gui.minLifePlant.getValue().toString());
					int maxLifePlant = Integer.parseInt(gui.maxLifePlant.getValue().toString());
					Plant.setMinSeed(minLifePlant);
					Plant.setMaxSeed(maxLifePlant);
					Plant.setLifeDegenSpeed(gui.damageOverTimeRate.getValue());
					
					int minLifeHerbi = Integer.parseInt(gui.minLifeHerbivore.getValue().toString());
					int maxLifeHerbi = Integer.parseInt(gui.maxLifeHerbivore.getValue().toString());
					Herbivore.setMinLife(minLifeHerbi);
					Herbivore.setMaxLife(maxLifeHerbi);
					
					Herbivore.setBirthRate(gui.herbivoreBirthRate.getValue());
					Herbivore.setEscapeRate(gui.herbivoreEscape.getValue());
					Herbivore.setLifeDegenSpeed(gui.herbivoreDamageOverTimeRate.getValue());
					Herbivore.setSeedGatheringRate(gui.seedGatheringRate.getValue());
					
					Constructor<? extends ICreature> plantConstructor = factory.getConstructorMap().get("creatures.Plant");
					Constructor<? extends ICreature> herbivoreConstructor = factory.getConstructorMap().get("creatures.Herbivore");
					String plantNumberStr = gui.plantNb.getText().toString();
					String herbivoreNumberStr = gui.herbivoreNb.getText().toString();
					int plantNumber;
					int herbivoreNumber;
					if(plantNumberStr.length() == 0){
						plantNumber = 0;
					} else {
						plantNumberStr = plantNumberStr.replaceAll("\\W", "");
						plantNumber = Integer.parseInt(plantNumberStr);
					}
					if(herbivoreNumberStr.length() == 0){
						herbivoreNumber = 0;
					} else {
						herbivoreNumberStr = herbivoreNumberStr.replaceAll("\\W", "");
						herbivoreNumber = Integer.parseInt(herbivoreNumberStr);
					}
					Collection<? extends ICreature> plants = factory.createCreatures(simulator, plantNumber, new ColorCube(50),plantConstructor);
					Collection<? extends ICreature> herbivores = factory.createCreatures(simulator, herbivoreNumber, new ColorCube(50), herbivoreConstructor);

					simulator.addAllCreatures(plants);
					simulator.addAllCreatures(herbivores);
					simulator.start();
				}
			}
		};
		restart.addActionListener(restartActionListener);
	}