diff --git a/src/main/java/species/ReproduceAndSurviveAfterReproduction.java b/src/main/java/species/ReproduceAndSurviveAfterReproduction.java
index 2bd1e21fba73c99cba21726270cb1253771884e0..8e8f773cbb3aa64198476c7b0995999594a281c2 100644
--- a/src/main/java/species/ReproduceAndSurviveAfterReproduction.java
+++ b/src/main/java/species/ReproduceAndSurviveAfterReproduction.java
@@ -27,8 +27,8 @@ import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
 import fr.cemagref.simaqualife.kernel.util.TransientParameters.InitTransientParameters;
 import fr.cemagref.simaqualife.pilot.Pilot;
 
+@Deprecated
 @ServiceProvider(service = AquaNismsGroupProcess.class)
-
 public class ReproduceAndSurviveAfterReproduction extends AquaNismsGroupProcess<DiadromousFish, DiadromousFishGroup>{
 
 	// for the calibration of the model we use S_etoileGir = 190000; surfGir = 80351;
@@ -49,10 +49,8 @@ public class ReproduceAndSurviveAfterReproduction extends AquaNismsGroupProcess<
 	private double survivalRateAfterReproduction = 0.1;
 	private double maxNumberOfSuperIndividualPerReproduction = 50.;
 
-
 	private transient NormalGen genNormal;
 
-	// private transient UniformGen genUniform;
 
 	public static void main(String[] args) { System.out.println((new
 			XStream(new DomDriver())) .toXML(new ReproduceAndSurviveAfterReproduction())); }
@@ -93,14 +91,15 @@ public class ReproduceAndSurviveAfterReproduction extends AquaNismsGroupProcess<
 				// origins of spawner during this reproduction			
 				Map<String, Long> spawnerOriginsDuringReproduction = new HashMap<String, Long>(group.getEnvironment().getRiverBasinNames().length); 
 				for (String basinName : group.getEnvironment().getRiverBasinNames()){
-					spawnerOriginsDuringReproduction.put(basinName,  (long) 0);
+					spawnerOriginsDuringReproduction.put(basinName,  0L);
 				}
 
 				// System.out.println("REPRODUCTION  in "+riverBasin.getName()+" : FISH FROM ");
 
 				List<DiadromousFish> fishInBasin =  riverBasin.getFishs(group);
 				if (fishInBasin != null){
-					//Calcul of b and c in stock-recruitment relationships 
+					
+					// effective temperature for reproduction (priority to the ANG value) 
 					double tempEffectRep;
 					if (group.getTempMinRep() == Double.NaN){
 						tempEffectRep = Miscellaneous.temperatureEffect(riverBasin.getCurrentTemperature(group.getPilot()), tempMinRep, tempOptRep, tempMaxRep);
@@ -109,36 +108,36 @@ public class ReproduceAndSurviveAfterReproduction extends AquaNismsGroupProcess<
 						tempEffectRep = Miscellaneous.temperatureEffect(riverBasin.getCurrentTemperature(group.getPilot()), group.getTempMinRep(), tempOptRep, tempMaxRep);
 					}
 
-					if (tempEffectRep == 0.)
-						b=0;
-					else
-						b = - Math.log(survOptRep * tempEffectRep) / delta_t;
-
+					// Compute  the prelimenary parameters b and c for the stock-recruitment relationship 
+					b = (tempEffectRep == 0.) ? 0. : - Math.log(survOptRep * tempEffectRep) / delta_t;
 					c = lambda/riverBasin.getAccessibleSurface();
 
-					// Calcul of alpha and beta of the basin
+					// Compute  alpha and beta parameters of the  the stock-recruitment relationship 
 					alpha = (b * Math.exp(- b * delta_t))/(c * (1 - Math.exp(- b * delta_t)));
 					beta = b / (a * c * (1 - Math.exp(- b * delta_t)));
-
 					//System.out.println(a+ ", " +b + ", " + c + ", " + delta_t + "= "+ alpha);
+
+					// keep the last value of alpha (productive capacities)
 					riverBasin.getLastProdCapacities().push(alpha);
 
-					// Calcul of the amount per superIndividual
+					// Compute the amount per superIndividual
 					amountPerSuperIndividual = alpha / maxNumberOfSuperIndividualPerReproduction;
 
-					// Calcul of Setoile, S95 and S50
-					Setoile = eta * riverBasin.getAccessibleSurface();
-					S95 = Setoile;
+					// Compute the Allee effect parameters  S95 and S50
+					S95 = eta * riverBasin.getAccessibleSurface(); // corresponds to S* in the rougier publication
 					S50 = S95 / ratioS95_S50;
 
-					// compute the number of spawners and keep the origines of the spawners
+					// initilisation of the stock recruitment relationship
+					//stockRecruitmentRelationship.init(alpha, beta, S50, S95);
+
 					// age of autochnonous spawnser
 					//Map<Integer, Long> ageOfNativeSpawners = new TreeMap<Integer, Long>(); 
 					
+					// compute the number of spawners and keep the origine of the spawners
 					for( DiadromousFish fish : fishInBasin){
 						if( fish.isMature()){
 							if (fish.getNumberOfReproduction() < 1) {
-								numberOfSpawnerForFirstTime++;
+								numberOfSpawnerForFirstTime++; //ASK individual or super-individual ?
 								spawnersForFirstTimeAgesSum += fish.getAge();
 							}
 							numberOfGenitors += fish.getAmount() ;
@@ -147,18 +146,17 @@ public class ReproduceAndSurviveAfterReproduction extends AquaNismsGroupProcess<
 							String basinName = fish.getBirthBasin().getName();
 							spawnerOriginsDuringReproduction.put(basinName, spawnerOriginsDuringReproduction.get(basinName) + fish.getAmount() );
 
-							// number of autochtone and age of autochnone
-							if (riverBasin == fish.getBirthBasin()){ 
+							// number of autochtonous fish per age
+							/*if (riverBasin == fish.getBirthBasin()){ 
 								numberOfAutochtones += fish.getAmount();
-								/*Integer age = (int) Math.floor(fish.getAge());
+								Integer age = (int) Math.floor(fish.getAge());
 								if (ageOfNativeSpawners.containsKey(age))
 									ageOfNativeSpawners.put(age, ageOfNativeSpawners.get(age)+fish.getAmount());
 								else
-									ageOfNativeSpawners.put(age, fish.getAmount());*/
-							}
+									ageOfNativeSpawners.put(age, fish.getAmount());
+							} */
 
-							//System.out.println("l'�ge du poisson est :" + fish.getAge() + " et la saison est :" + Time.getSeason());
-							// Survive After Reproduction
+							// increment number of reproduction (for possible iteroparty)
 							fish.incNumberOfReproduction();	
 
 							// survival after reproduction (semelparity or iteroparity) of SI (change the amount of the SI)
@@ -170,6 +168,7 @@ public class ReproduceAndSurviveAfterReproduction extends AquaNismsGroupProcess<
 						}
 					}
 
+					System.out.println("  numberOfGenitors: "+  numberOfGenitors);
 					/*
 					// calcul de la mortalit� associ�e aux g�niteurs autochtones
 					if (numberOfGenitors > 0.) {
@@ -210,12 +209,15 @@ public class ReproduceAndSurviveAfterReproduction extends AquaNismsGroupProcess<
 						double meanNumberOfRecruit = 
 								Math.round((alpha * numberOfGenitors * (1 / (1 + Math.exp(- Math.log(19)*((numberOfGenitors - S50) / (S95 - S50)))))) /
 										(beta + numberOfGenitors * (1 / (1 + Math.exp(- Math.log(19)*((numberOfGenitors - S50) / (S95 - S50)))))));
-						muRecruitment = Math.log(meanNumberOfRecruit) - (Math.pow(sigmaRecruitment,2))/2;
 
+						//  lognormal random draw
+						muRecruitment = Math.log(meanNumberOfRecruit) - (Math.pow(sigmaRecruitment,2))/2;
 						long numberOfRecruit = Math.round(Math.exp(genNormal.nextDouble()*sigmaRecruitment + muRecruitment));
 
+						// keep last % of  autochtone
 						riverBasin.getLastPercentagesOfAutochtones().push(numberOfAutochtones * 100 / numberOfGenitors);
 
+						// keep the number of spawners for the firt time in the basin
 						if (numberOfSpawnerForFirstTime>0){
 							riverBasin.getSpawnersForFirstTimeMeanAges().push(spawnersForFirstTimeAgesSum/numberOfSpawnerForFirstTime);
 						}else{
@@ -226,25 +228,26 @@ public class ReproduceAndSurviveAfterReproduction extends AquaNismsGroupProcess<
 						//System.out.println("nb recruit in basin " + riverBasin.getName() + " : " + numberOfRecruit);
 
 						// Creation of new superFish
-						if(numberOfRecruit > 0){
-							// stock the first year when recruitment is non nul
-							if(riverBasin.getYearOfFirstNonNulRep() == 0){
-								riverBasin.setYearOfFirstNonNulRep(Time.getYear(group.getPilot()));
-							}
-
+						if (numberOfRecruit > 0){
+							
+							// features of the super individuals
 							int numberOfsuperIndividual = Math.max(1, 
 									(int) Math.round(numberOfRecruit / amountPerSuperIndividual));
 							long effectiveAmount =  numberOfRecruit / numberOfsuperIndividual;
-
-							// System.out.println(numberOfRecruit + " / " + amountPerSuperIndividual +" = " +numberOfsuperIndividual);
-							//System.out.println(numberOfRecruit + " / " + numberOfsuperIndividual +" = " +effectiveAmount);
+						
 							for (int i=0; i<numberOfsuperIndividual; i++){
 								group.addAquaNism(new DiadromousFish(group.getPilot(), riverBasin, initialLength, effectiveAmount, Gender.UNDIFFERENCIED));
 							}
+							
+							// stock the first year when recruitment is non nul
+							if (riverBasin.getYearOfFirstNonNulRep() == 0){
+								riverBasin.setYearOfFirstNonNulRep(Time.getYear(group.getPilot()));
+							}	
 							riverBasin.getLastRecruitmentExpectations().push(Math.round(meanNumberOfRecruit));
 							riverBasin.getLastRecruitments().push(numberOfsuperIndividual * effectiveAmount); // on remplit la pile qui permet de stocker un nombre fix� de derniers recrutement
 							riverBasin.getLastRecsOverProdCaps().push(((double) riverBasin.getLastRecruitments().getLastItem())/riverBasin.getLastProdCapacities().getLastItem());
 
+							
 							if (numberOfAutochtones > 0){
 								riverBasin.getNumberOfNonNulRecruitmentForFinalProbOfPres().push(1.0);
 								riverBasin.getNumberOfNonNulRecruitmentDuringLastYears().push(1.0);