@Override
	public void update() 
	{
		super.update();

		boolean finished = false;

		if(generationNum==numGenerations && !flag)
		{
			flag = true;
			OrganismRepository.getInstance().printResults();
			System.out.println("=================================!");
			System.out.println("FINISHED!");
			System.out.println("FINISHED!");
			System.out.println("FINISHED!");
			System.out.println("=================================!");
		}
			
		if(testsStarted)
		{
			for(Future<Float> f: resultsFuturesList)
			{
				finished = f.isDone();
			}

			if(finished)
			{
				for(Organism o: organismList)
				{
					o.getOrganismJme().getOrganismTimer().setFinished(true);
				}
				
				if(generationNum<=numGenerations)
				{					
					testsStarted=false;
					List<OrganismTree> newGen = null;
					cleanUpPhysics();
					
					try
					{
						newGen = gaManager.step(generationNum);
						System.out.println("GENERATION "+generationNum);
					} 
					catch (DeepCopyException e) 
					{
						e.printStackTrace();
					}
					
					rootNode.detachAllChildren();
					organismList.clear();
					makePopulation(newGen);
				}
			}
		}	
		
	};