public void run() {

		if (First) {

                    InitParamsExtended();
			GetParameters();
			Restart(false);
			randemize(); // ajd test
			First = false;
                        
		}
	

		while (true) {

			// if (First) Restart(false);
			// First = false;

			CurrentStep++;
			CurrentTotalStep++;
		 	// if (Math.random()< (double) KICK) randemize();
			if (((InEvolution) && (NewGeneration)) || ((InEvolution) && (CurrentStep > 200000))) {
				StartDate = new Date();
				deb.showMsg("New Generation #"+(CurrentGeneration+1)+" started at "+StartDate.toLocaleString());
				CreateNewGeneration();
                                 
			}
		 	canvas.repaint();
		 	try { Thread.sleep(SLEEP);}
		 	catch (InterruptedException e) {
				showStatus("Thread.sleep InterruptedException "+e.toString());
			}
		}
		


	}