diff --git a/data/input/northeastamerica/RIO_obs_NEA.xml b/data/input/northeastamerica/RIO_obs_NEA.xml
index edb3efbbc333bd2a3eb6422c460511d4fdfc2be2..8e241cba58bc342a3735662fc9edc2cfc573b412 100644
--- a/data/input/northeastamerica/RIO_obs_NEA.xml
+++ b/data/input/northeastamerica/RIO_obs_NEA.xml
@@ -1,11 +1,16 @@
 <hashtable>
 	<entry>
-		<java-class>fr.cemagref.simaqualife.kernel.AquaticWorld</java-class>
+		<!--
+		
+		<java-class>fr.cemagref.simaqualife.kernel.AquaticWorld</java-class>-->
+		<java-class>environment.RIOBasinNetworkWithContinent</java-class>
+	
 		<fr.cemagref.observation.kernel.ObservablesHandler>
 			<observers>
 				<environment.RIOBasinNetworkObserverWithContinent>
 					<title>North East America</title>
 					<threshold>1000000</threshold>
+					<colorScaleEnum>RedsScale</colorScaleEnum>
 				</environment.RIOBasinNetworkObserverWithContinent>
 
 				<environment.RIOBasinNetworkObserverPresence>
diff --git a/src/main/java/environment/RIOBasinNetwork.java b/src/main/java/environment/RIOBasinNetwork.java
index 9a7d5981011f84dcbb0fabd115262f3a4d212712..382149f89d152c08835748388410de6a89654c9f 100644
--- a/src/main/java/environment/RIOBasinNetwork.java
+++ b/src/main/java/environment/RIOBasinNetwork.java
@@ -36,6 +36,7 @@ public abstract class RIOBasinNetwork extends BasinNetwork {
 	@InitTransientParameters
 	public void initTransientParameters(Pilot pilot) {
 		time = new Time();
+
 	}
 
 
diff --git a/src/main/java/environment/RIOBasinNetworkObserverWithContinent.java b/src/main/java/environment/RIOBasinNetworkObserverWithContinent.java
index 26bcb8c9b528375ca162fc2c6be453123daa66db..75bed1b8d06b1faa2e9f455143b3ba8121a30f7c 100644
--- a/src/main/java/environment/RIOBasinNetworkObserverWithContinent.java
+++ b/src/main/java/environment/RIOBasinNetworkObserverWithContinent.java
@@ -41,7 +41,7 @@ public class RIOBasinNetworkObserverWithContinent extends ObserverListener
 	private double threshold = 13000000.;
 
 	@Description(name = "Color scale", tooltip = "")
-	public ColorScaleEnum colorScaleEnum = ColorScaleEnum.RedsScale;
+	private ColorScaleEnum colorScaleEnum = ColorScaleEnum.RedsScale;
 
 	// a basin network
 	private transient RIOBasinNetworkWithContinent bn;
@@ -299,7 +299,9 @@ public class RIOBasinNetworkObserverWithContinent extends ObserverListener
 				for (DiadromousFishGroup group : basin.getGroups()) {
 					abundance += basin.getEffective(group);
 				}
-				// System.out.println(basin.getName()+ "-->"+abundance);
+				if (basin instanceof RiverBasin & abundance > 0)
+					System.out.println("  " + basin.getName() + " (" + basin.getClass().getSimpleName() + ") -->" + abundance);
+
 				if (abundance == 0.) {
 					g.setColor(Color.WHITE);
 				} else {
diff --git a/src/main/java/environment/RIOBasinNetworkWithContinent.java b/src/main/java/environment/RIOBasinNetworkWithContinent.java
index c8fa15064c85db77c7977f94053c93d7088fd145..990a67f83422532404809eb7a73fec1d7805a58e 100644
--- a/src/main/java/environment/RIOBasinNetworkWithContinent.java
+++ b/src/main/java/environment/RIOBasinNetworkWithContinent.java
@@ -24,6 +24,7 @@ import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
 
 import environment.OffshoreBasin.OffshoreBasinFunction;
+import fr.cemagref.observation.kernel.ObservablesHandler;
 import fr.cemagref.simaqualife.kernel.util.TransientParameters.InitTransientParameters;
 import fr.cemagref.simaqualife.pilot.Pilot;
 import miscellaneous.QueueMemoryMap;
@@ -55,6 +56,13 @@ public class RIOBasinNetworkWithContinent extends RIOBasinNetwork {
 
 	private transient Map<String, Path2D.Double> mapContinent;
 
+	protected transient ObservablesHandler cobservable;
+
+
+	public ObservablesHandler getCobservable() {
+		return cobservable;
+	}
+
 	class Record implements Comparable<Record> {
 
 		private int order;
@@ -215,6 +223,10 @@ public class RIOBasinNetworkWithContinent extends RIOBasinNetwork {
 
 		super.initTransientParameters(pilot);
 
+		if (cobservable == null) {
+			cobservable = pilot.addObservable(this.getClass());
+		}
+
 		FileReader reader;
 		Scanner scanner;
 
@@ -382,13 +394,13 @@ public class RIOBasinNetworkWithContinent extends RIOBasinNetwork {
 				System.out.println("  " + fields[i] + " \t<-> " + headers[i]);
 
 			while (scanner.hasNextLine()) {
-				 fields = scanner.nextLine().split(",");
-			
+				fields = scanner.nextLine().split(",");
+
 				basin_id = Integer.valueOf(fields[0]); // gid
 				name = fields[1];
 				function = fields[2];
-				//System.out.println(basin_id + " " + name);
-				
+				// System.out.println(basin_id + " " + name);
+
 				OffshoreBasin offshorebasin = new OffshoreBasin(basin_id, name, OffshoreBasinFunction.valueOf(function));
 
 				if (mapOffshoreBasin != null) {
diff --git a/src/main/java/species/DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin.java b/src/main/java/species/DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin.java
index b3d01bd71ba5a71af719753fcc2f0aa0a5268149..f231f1ababdec40a0a87c3a96396c6ba25148cab 100644
--- a/src/main/java/species/DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin.java
+++ b/src/main/java/species/DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin.java
@@ -11,10 +11,10 @@ import org.openide.util.lookup.ServiceProvider;
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
 
-import environment.RIOBasinNetwork;
-import environment.RiverBasin;
 import environment.InshoreBasin;
 import environment.RIOBasinNetwork;
+import environment.RIOBasinNetworkWithContinent;
+import environment.RiverBasin;
 import environment.Time;
 import environment.Time.Season;
 import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
@@ -142,7 +142,7 @@ public class DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin extends Di
 
 			for (InshoreBasin departure : group.getEnvironment().getSeaBasins()) {
 
-				RiverBasin homingDestination = (RiverBasin) bn.getAssociatedRiverBasin(departure);
+				RiverBasin homingDestination = bn.getAssociatedRiverBasin(departure);
 
 				List<DiadromousFish> fishes = departure.getFishs(group);
 				if (fishes != null) {
@@ -248,10 +248,16 @@ public class DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin extends Di
 					}
 				}
 			}
+			System.out.println(this.getClass().getSimpleName());
 			System.out.println(" total abundance in river basins: " + group.getFishEffective());
-			System.out.println(
-					"female spawners: " + group.getFemaleSpawnerEffective() + " \tmale spawners: " + group.getMaleSpawnerEffective());
+			System.out.println("  female spawners: " + group.getFemaleSpawnerEffective() + " \tmale spawners: "
+					+ group.getMaleSpawnerEffective());
+
+			// --------------------------------------------------------------------------------------------------
+			// update the observers
+			// ------------------------------------------------------------------------------------------------------
+			((RIOBasinNetworkWithContinent) group.getEnvironment()).getCobservable().fireChanges((group.getEnvironment()),
+					pilot.getCurrentTime());
 		}
 	}
 }
-
diff --git a/src/main/java/species/MigrateBetweenOffshores.java b/src/main/java/species/MigrateBetweenOffshores.java
index d804ad0ed5b296282b05f598874d85ee88d232a9..b2425034c638162172211fff1bc9ad607991cfbc 100644
--- a/src/main/java/species/MigrateBetweenOffshores.java
+++ b/src/main/java/species/MigrateBetweenOffshores.java
@@ -1,51 +1,46 @@
 package species;
 
+import java.util.List;
+import java.util.ListIterator;
+
+import org.openide.util.lookup.ServiceProvider;
+
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
 
 import environment.Basin;
 import environment.OffshoreBasin;
+import environment.RIOBasinNetworkWithContinent;
 import environment.RiverBasin;
-import environment.Time;
-import environment.OffshoreBasin.OffshoreBasinFunction;
 import environment.Time.Season;
 import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
-import species.DiadromousFish.Stage;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.geotools.data.FeatureEvent.Type;
-import org.openide.util.lookup.ServiceProvider;
 
 @ServiceProvider(service = AquaNismsGroupProcess.class)
 public class MigrateBetweenOffshores extends AquaNismsGroupProcess<DiadromousFish, DiadromousFishGroup> {
 
-
 	/**
 	 * Season to migrate from summering to winteringOffshoreBasin
 	 */
-	private Season migrationSeasonToReachWinteringOffshore = Season.AUTOMN; 
+	private Season migrationSeasonToReachWinteringOffshore = Season.AUTOMN;
 
 	/**
-	 * Season to migrate from wintering to summeringOffshoreBasin 
+	 * Season to migrate from wintering to summeringOffshoreBasin
 	 */
-	private Season migrationSeasonToReachSummeringOffshore = Season.SPRING; 
+	private Season migrationSeasonToReachSummeringOffshore = Season.SPRING;
 
 
 	public static void main(String[] args) {
-		System.out.println((new XStream(new DomDriver()))
-				.toXML(new MigrateBetweenOffshores()));
+		System.out.println((new XStream(new DomDriver())).toXML(new MigrateBetweenOffshores()));
 	}
 
+
 	@Override
 	public void doProcess(DiadromousFishGroup group) {
 
-		Basin destination =  null;
+		Basin destination = null;
 
 		if (group.getEnvironment().getTime().getSeason(group.getPilot()) == migrationSeasonToReachWinteringOffshore) {
 
-
 			for (OffshoreBasin summeringOffshoreBasin : group.getEnvironment().getSummeringOffshoreBasins()) {
 
 				List<DiadromousFish> fishInSummeringOffshoreBasin = summeringOffshoreBasin.getFishs(group);
@@ -56,7 +51,8 @@ public class MigrateBetweenOffshores extends AquaNismsGroupProcess<DiadromousFis
 
 						DiadromousFish fish = fishIterator.next();
 
-						//TODO find a more generic way to memorized a basin which differs from riverBasin (i.e. catadromous fish)
+						// TODO find a more generic way to memorized a basin which differs from riverBasin (i.e.
+						// catadromous fish)
 						destination = ((RiverBasin) fish.getMemorisedBasin()).getConnectedWinteringOffshoreBasin();
 
 						fish.setPosition(destination);
@@ -66,8 +62,14 @@ public class MigrateBetweenOffshores extends AquaNismsGroupProcess<DiadromousFis
 					}
 				}
 			}
-		} 
-		else if (group.getEnvironment().getTime().getSeason(group.getPilot()) == migrationSeasonToReachSummeringOffshore) {
+
+			// --------------------------------------------------------------------------------------------------
+			// update the observers
+			// ------------------------------------------------------------------------------------------------------
+			((RIOBasinNetworkWithContinent) group.getEnvironment()).getCobservable().fireChanges((group.getEnvironment()),
+					pilot.getCurrentTime());
+
+		} else if (group.getEnvironment().getTime().getSeason(group.getPilot()) == migrationSeasonToReachSummeringOffshore) {
 
 			for (OffshoreBasin winteringOffshoreBasin : group.getEnvironment().getWinteringOffshoreBasins()) {
 
@@ -79,7 +81,8 @@ public class MigrateBetweenOffshores extends AquaNismsGroupProcess<DiadromousFis
 
 						DiadromousFish fish = fishIterator.next();
 
-						//TODO find a more generic way to memorized a basin which differs from riverBasin (i.e. catadromous fish)
+						// TODO find a more generic way to memorized a basin which differs from riverBasin (i.e.
+						// catadromous fish)
 						destination = ((RiverBasin) fish.getMemorisedBasin()).getConnectedSummeringOffshoreBasin();
 
 						// add fish with its new position to destination basin
@@ -90,6 +93,11 @@ public class MigrateBetweenOffshores extends AquaNismsGroupProcess<DiadromousFis
 					}
 				}
 			}
+			// --------------------------------------------------------------------------------------------------
+			// update the observers
+			// ------------------------------------------------------------------------------------------------------
+			((RIOBasinNetworkWithContinent) group.getEnvironment()).getCobservable().fireChanges((group.getEnvironment()),
+					pilot.getCurrentTime());
 		}
 	}
 }
\ No newline at end of file