diff --git a/data/input/observersCharts.xml b/data/input/observersCharts.xml
index 0147edc8e26db4c43b3e220912d79e5697aa93ef..eed0fea7d0d899477ebd9b256b66af2622fc3cc9 100644
--- a/data/input/observersCharts.xml
+++ b/data/input/observersCharts.xml
@@ -3,29 +3,30 @@
 <hashtable>
 
 	<entry>
-		<java-class>pikelake.GridObserver</java-class>
+		<java-class>pikelake.pikes.PikesGroup</java-class>
 		<fr.cemagref.observation.kernel.ObservablesHandler>
 			<observers>
 				<pikelake.environment.Movement2DWithinShapeObserver>
 					<title>Bariousses</title>
 					<bgColor>
-						<red>168</red>
-						<green>0</green>
-						<blue>0</blue>
+						<red>230</red>
+						<green>230</green>
+						<blue>230</blue>
 						<alpha>255</alpha>
 					</bgColor>
 					<pikeColor>
-						<red>0</red>
+						<red>255</red>
 						<green>0</green>
-						<blue>255</blue>
+						<blue>0</blue>
 						<alpha>255</alpha>
 					</pikeColor>
 					<shapeColor>
-						<red>0</red>
-						<green>0</green>
+						<red>51</red>
+						<green>102</green>
 						<blue>255</blue>
 						<alpha>255</alpha>
 					</shapeColor>
+                                        <margin>0</margin>
 					<!--shape>//data//input//shape//hsi_BROAUTOMNE507.shp</shape-->
                                 </pikelake.environment.Movement2DWithinShapeObserver>
 			</observers>
diff --git a/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java b/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java
index e6acc06a564b58e3165e86e2c25fcbf0d3f63e42..d219ce6c6a96c6e5d80cf60fed58e744d65efc92 100644
--- a/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java
+++ b/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java
@@ -1,25 +1,34 @@
 package pikelake.environment;
 
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.MultiPolygon;
+import fr.cemagref.observation.gui.Configurable;
+import fr.cemagref.observation.gui.Drawable;
+import fr.cemagref.observation.kernel.ObservablesHandler;
+import fr.cemagref.observation.kernel.ObserverListener;
+import fr.cemagref.ohoui.annotations.Description;
+import fr.cemagref.ohoui.annotations.NoRecursive;
+import fr.cemagref.ohoui.filters.NoTransientField;
+import fr.cemagref.ohoui.swing.OhOUI;
+import fr.cemagref.ohoui.swing.OhOUIDialog;
+import fr.cemagref.simaqualife.pilot.Pilot;
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
-import java.awt.Rectangle;
 import java.awt.Shape;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.GeneralPath;
-import java.awt.geom.Point2D;
+import java.awt.geom.Path2D;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-
 import javax.swing.JComponent;
-
 import org.geotools.data.FileDataStore;
 import org.geotools.data.FileDataStoreFinder;
+import org.geotools.data.simple.SimpleFeatureIterator;
 import org.geotools.data.simple.SimpleFeatureSource;
 import org.geotools.map.FeatureLayer;
 import org.geotools.map.Layer;
@@ -27,35 +36,23 @@ import org.geotools.map.MapContent;
 import org.geotools.styling.SLD;
 import org.geotools.swing.JMapFrame;
 import org.opengis.style.Style;
+import pikelake.pikes.Pike;
+import pikelake.pikes.PikesGroup;
 
-import fr.cemagref.observation.gui.Configurable;
-import fr.cemagref.observation.gui.Drawable;
-import fr.cemagref.observation.kernel.ObservablesHandler;
-import fr.cemagref.observation.kernel.ObserverListener;
-import fr.cemagref.ohoui.annotations.Description;
-import fr.cemagref.ohoui.annotations.NoRecursive;
-import fr.cemagref.ohoui.filters.NoTransientField;
-import fr.cemagref.ohoui.swing.OhOUI;
-import fr.cemagref.ohoui.swing.OhOUIDialog;
-import fr.cemagref.simaqualife.kernel.AquaNism;
-import fr.cemagref.simaqualife.kernel.AquaNismsGroup;
-import fr.cemagref.simaqualife.pilot.Pilot;
-
-
-
-@SuppressWarnings({ "serial" })
+@SuppressWarnings({"serial"})
 @NoRecursive
 public class Movement2DWithinShapeObserver extends ObserverListener implements Configurable, Drawable {
 
+    private Pilot pilot;
 //    private transient FileChooserField modulesChooser;
     private transient JComponent display;
-    
-   // private String generalPathS;
+
+    // private String generalPathS;
     private transient GeneralPath generalPath;
-    private transient List<AquaNismsGroup<? extends AquaNism<? extends Point2D,?>,?>> groups;
-    
+    private transient List<PikesGroup> groups;
+
     private String title;
-    
+
     // TODO supress transient when list will be supported by AutOUI
     @Description (name="Groups colors",tooltip="Colors af aquanisms groups")
     private transient List<Color> groupsColors;
@@ -65,7 +62,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
     private Color pikeColor;
     @Description (name="River color",tooltip="River color")
     private Color shapeColor;
-    
+
     private int margin;
     private int sizeOfDisplayedIndividuals;
     // use for determine if generalPath must be rescaled
@@ -74,26 +71,26 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
     private transient double repositioningTranslateX,repositioningTranslateY;
     private transient double shapeOriginalWidth, shapeOriginalHeight;
     private transient double shapeAspectRatio;
-    private transient double rescaleFactorWithOriginal; 
-   
+    private transient double rescaleFactorWithOriginal;
+
     public Movement2DWithinShapeObserver(int margin) {
         this(margin,Color.BLACK,Color.BLUE);
     }
-    
+
     public Movement2DWithinShapeObserver() {
         this(Color.BLACK,Color.BLUE);
     }
-    
+
     public Movement2DWithinShapeObserver(Color bgColor,Color shapeColor) {
         this(0,bgColor,shapeColor);
     }
-    
+
     public Movement2DWithinShapeObserver(int margin,Color bgColor,Color shapeColor) {
         this.margin = margin;
         this.bgColor = bgColor;
         this.shapeColor = shapeColor;
     }
-        
+
     public String getTitle() {
         return title;
     }
@@ -101,50 +98,53 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
     public JComponent getDisplay() {
         return display;
     }
-    
+
     public void valueChanged(ObserverListener clObservable, Object instance, int t) {
         display.repaint();
     }
-    
-    @SuppressWarnings({ "unchecked" })
-	public void init() {
-        Pilot pilot = new Pilot();
-    	
-    	display = new DisplayComponent();
+
+    @SuppressWarnings({"unchecked"})
+    public void init() {
+        display = new DisplayComponent();
         display.setVisible(false);
         display.setDoubleBuffered(true);
 
         displayWidthBak = 0;
         displayHeightBak = 0;
-        
+
         
         /////////////////////////// init shape ////////////////////////////////////////////////////////////
-        File file = new File("/Users/guillaume.garbay/workspace/PikeLake/data/input/shape/hsi_BROPRINTEMPS513_5.shp");
+        File file = new File("data/input/shape/hsi_BROAUTOMNE507_hull.shp");
 
         FileDataStore store;
-		try {
-			store = FileDataStoreFinder.getDataStore(file);
-			SimpleFeatureSource featureSource = store.getFeatureSource();
-      
-        MapContent map = new MapContent();
-        map.setTitle("Bariousses");
+        try {
+            store = FileDataStoreFinder.getDataStore(file);
+            SimpleFeatureSource featureSource = store.getFeatureSource();
 
-        Style style = SLD.createSimpleStyle(featureSource.getSchema());
-        Layer layer = new FeatureLayer(featureSource, (org.geotools.styling.Style) style);
-        map.addLayer(layer);
+            /*MapContent map = new MapContent();
+            map.setTitle("Bariousses");
 
-        JMapFrame.showMap(map);
+            Style style = SLD.createSimpleStyle(featureSource.getSchema());
+            Layer layer = new FeatureLayer(featureSource, (org.geotools.styling.Style) style);
+            map.addLayer(layer);
 
+            JMapFrame.showMap(map);*/
 
-        this.generalPath = new GeneralPath((Shape) map);
-        //this.generalPath = new GeneralPath(((AsShapeConvertible) pilot.getAquaticWorld().getEnvironment()).getShape());
-        
+            SimpleFeatureIterator iterator = featureSource.getFeatures().features();
+            MultiPolygon p = (MultiPolygon) iterator.next().getDefaultGeometry();
+            iterator.close();
+            Path2D.Double shape = new Path2D.Double();
+            shape.moveTo(p.getCoordinates()[0].x, p.getCoordinates()[0].y);
+            for (int i = 1; i < p.getCoordinates().length; i++) {
+                Coordinate coord = p.getCoordinates()[i];
+                shape.lineTo(coord.x, coord.y);
+            }
+            this.generalPath = new GeneralPath(shape);
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
 
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-                  
         // original dimension storage 
         this.shapeOriginalWidth = this.generalPath.getBounds().getWidth();
         this.shapeOriginalHeight = this.generalPath.getBounds().getHeight();
@@ -156,11 +156,8 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
         // vertical flip
         this.generalPath.transform(AffineTransform.getScaleInstance(1,-1)); 
         this.generalPath.transform(AffineTransform.getTranslateInstance(0,shapeOriginalHeight));
-        
-        groups = new ArrayList<AquaNismsGroup<? extends AquaNism<? extends Point2D,?>,?>>((Collection<? extends AquaNismsGroup<? extends AquaNism<? extends Point2D, ?>, ?>>)pilot.getAquaticWorld().getAquaNismsGroupsList());
-        if (groups!=null) {
-            display.setVisible(true);
-        }
+
+        this.groups = new ArrayList<PikesGroup>();
         groupsColors = new ArrayList<Color>();
         groupsColors.add(Color.RED);
         groupsColors.add(Color.GREEN);
@@ -168,8 +165,9 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
         groupsColors.add(Color.CYAN);
         groupsColors.add(Color.GRAY);
         display.repaint();
+        display.setVisible(true);
     }
-    
+
     public void disable() {
         display.setVisible(false);
     }
@@ -181,9 +179,12 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
 
     @Override
     public void valueChanged(ObservablesHandler clObservable, Object instance, long t) {
+        if (groups == null && instance != null) {
+            groups.add((PikesGroup) instance);
+        }
         display.repaint();
     }
-    
+
     public static interface AsShapeConvertible {
         public Shape getShape();
     }
@@ -228,7 +229,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
                 generalPath.transform(
                         AffineTransform.getScaleInstance(rescaleFactor,rescaleFactor)
                 );
-               
+
             }
             // Draw Background
             g.setColor(bgColor);
@@ -239,14 +240,17 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
             //g.setColor(aquanismsColor);
             Iterator<Color> colorsIterator = groupsColors.iterator();
             // Draw aquanisms
-            for (AquaNismsGroup<? extends AquaNism<? extends Point2D,?>,?> group : groups) {
-                if (colorsIterator.hasNext()) g.setColor(colorsIterator.next());
-                for (AquaNism<? extends Point2D,?> aquanism : group.getAquaNismsList()) {
-                    Rectangle rect=new Rectangle((int)((aquanism.getPosition().getX()+repositioningTranslateX) * rescaleFactorWithOriginal),
-                            (int)(generalPath.getBounds().getHeight()  /*flip vertically*/ - (aquanism.getPosition().getY()+repositioningTranslateY) * rescaleFactorWithOriginal),
-                            sizeOfDisplayedIndividuals,sizeOfDisplayedIndividuals);
+            for (PikesGroup group : groups) {
+                if (colorsIterator.hasNext()) {
+                    g.setColor(colorsIterator.next());
+                }
+                for (Pike aquanism : group.getAquaNismsList()) {
+                    // TODO get the cell position
+                    //Rectangle rect = new Rectangle((int) ((aquanism.getPosition().getX() + repositioningTranslateX) * rescaleFactorWithOriginal),
+                    //        (int) (generalPath.getBounds().getHeight() /*flip vertically*/ - (aquanism.getPosition().getY() + repositioningTranslateY) * rescaleFactorWithOriginal),
+                    //        sizeOfDisplayedIndividuals, sizeOfDisplayedIndividuals);
                     // draw the individuals after repositioning and rescaling the position
-                    g2d.fill(rect);
+                    //g2d.fill(rect);
                 }
             }
         }