diff --git a/res/stages/main-stage.fxml b/res/stages/main-stage.fxml
index b7282d0774a121df384a9a84aa448d821c4c33a5..89ef33782292135bf05d3465c298c5a4b7d52903 100644
--- a/res/stages/main-stage.fxml
+++ b/res/stages/main-stage.fxml
@@ -16,9 +16,9 @@
                      <HBox prefHeight="356.0" prefWidth="691.0">
                         <children>
                            <Region prefHeight="338.0" prefWidth="65.0" />
-                           <ScatterChart prefHeight="342.0" prefWidth="609.0">
+                           <ScatterChart fx:id="scatterChart" prefHeight="342.0" prefWidth="609.0">
                              <xAxis>
-                               <CategoryAxis fx:id="absAxe" prefHeight="21.0" prefWidth="498.0" side="BOTTOM" />
+                               <NumberAxis fx:id="absAxe" prefHeight="21.0" prefWidth="498.0" side="BOTTOM" />
                              </xAxis>
                              <yAxis>
                                <NumberAxis fx:id="ordAxe" side="LEFT" />
diff --git a/src/main/java/fr/univlille/sae/classification/Main.java b/src/main/java/fr/univlille/sae/classification/Main.java
index e3ee04134e704ffe875e30c540c285cc17821777..b6aaee11d0fa8f5860267a74ca592a570c9144b1 100644
--- a/src/main/java/fr/univlille/sae/classification/Main.java
+++ b/src/main/java/fr/univlille/sae/classification/Main.java
@@ -11,7 +11,7 @@ public class Main extends Application {
 
 
     public void start(Stage stage) throws IOException {
-            ClassificationModel model = new ClassificationModel();
+            ClassificationModel model = ClassificationModel.getClassificationModel();
             MainStageView view = new MainStageView(model);
 
             view.show();
diff --git a/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java b/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
index 5615e33f207fbc08b654aa578d4e2197ab272a17..965120d3f60d7961f4d6bd46cb23c3940e8d3915 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
@@ -1,5 +1,6 @@
 package fr.univlille.sae.classification.controller;
 
+import fr.univlille.sae.classification.model.ClassificationModel;
 import javafx.fxml.FXML;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
@@ -8,6 +9,7 @@ import javafx.stage.FileChooser;
 import javafx.stage.Stage;
 
 import java.io.File;
+import java.io.IOException;
 
 public class LoadDataController {
 
@@ -42,19 +44,21 @@ public class LoadDataController {
          this.file = fileChooser.showOpenDialog(stage);
 
         if(file != null) {
-            filePath.setText(file.getName());
+            filePath.setText(file.getPath());
         }
 
+
+
     }
 
-    public void validate() {
+    public void validate() throws IOException {
 
         if (file == null) {
             stage.close();
             //throw exception
         }
-
-        loadData();
+        ClassificationModel.getClassificationModel().loadData(file);
+        stage.close();
     }
 
 
diff --git a/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java b/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java
index 9639175dbb43eb21c4768a7628148aa26a2f5aed..1088c4e59fb1f0e005cc636bcff1cf5e0509e738 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java
@@ -1,5 +1,7 @@
 package fr.univlille.sae.classification.controller;
 
+import fr.univlille.sae.classification.model.ClassificationModel;
+import fr.univlille.sae.classification.view.LoadDataView;
 import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.chart.*;
@@ -17,7 +19,7 @@ public class MainStageController {
     Stage stage;
 
     @FXML
-    CategoryAxis absAxe;
+    NumberAxis absAxe;
 
     @FXML
     NumberAxis ordAxe;
@@ -34,6 +36,8 @@ public class MainStageController {
     @FXML
     Button classifyData;
 
+    @FXML
+    ScatterChart scatterChart;
 
 
     Stage loadStage;
@@ -43,24 +47,15 @@ public class MainStageController {
      * @throws IOException
      */
     public void openLoadData() throws IOException {
-        FXMLLoader loader = new FXMLLoader();
-        URL fxmlFileUrl = new File(System.getProperty("user.dir") + File.separator + "res" + File.separator + "stages" + File.separator + "load-data-stage.fxml").toURI().toURL();
 
-        if (fxmlFileUrl == null) {
-            System.out.println("Impossible de charger le fichier fxml");
-            System.exit(-1);
-        }
-        loader.setLocation(fxmlFileUrl);
-        loadStage = loader.load();
+        LoadDataView loadDataView = new LoadDataView(ClassificationModel.getClassificationModel(), stage);
+        loadDataView.show();
 
-        loadStage.setResizable(false);
-        loadStage.initOwner(stage);
-        loadStage.initModality(Modality.APPLICATION_MODAL);
-        loadStage.setTitle("Chargement des donées");
 
-        loadStage.showAndWait();
+    }
 
 
+    public ScatterChart getScatterChart() {
+        return this.scatterChart;
     }
-
 }
diff --git a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
index b01a2d255a675196b3d68015c6b7b2ee807891ff..b878ee7cd2d8b6b442f05744f5f5c20e33618953 100644
--- a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
+++ b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
@@ -10,6 +10,7 @@ import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.*;
 
+
 public class ClassificationModel extends Observable {
 
 
@@ -18,11 +19,25 @@ public class ClassificationModel extends Observable {
 
     private DataType type;
 
-    public ClassificationModel() {
+
+    private static ClassificationModel model;
+
+    /**
+     * Renvoie une instance unique du model. Par default le type de ce modele est Iris.
+     * Modifier en .setType(DataType).
+     * @return l'instance du model
+     */
+    public static ClassificationModel getClassificationModel() {
+        if(model == null) model = new ClassificationModel();
+        return model;
+    }
+
+
+    private ClassificationModel() {
         this(DataType.IRIS);
     }
 
-    public ClassificationModel(DataType type) {
+    private ClassificationModel(DataType type) {
         this.datas = new ArrayList<>();
         this.dataToClass = new ArrayList<>();
         this.type = type;
@@ -34,7 +49,7 @@ public class ClassificationModel extends Observable {
      * @param coords toutes les données du points
      * @throws IllegalArgumentException Exception levée si le nombre de parametres est insuffisant pour creer un point du type du model
      */
-    private void ajouterDonnee(double... coords) {
+    public void ajouterDonnee(double... coords) {
         LoadableData newData = PointFactory.createPoint(type, coords);
         this.dataToClass.add(newData);
         notifyObservers(newData);
@@ -45,11 +60,12 @@ public class ClassificationModel extends Observable {
      * TODO
      * @param file
      */
-    private void loadData(File file) throws IOException {
+    public void loadData(File file) throws IOException {
         this.datas = new CsvToBeanBuilder<LoadableData>(Files.newBufferedReader(file.toPath()))
                 .withSeparator(',')
                 .withType(Iris.class)
                 .build().parse();
+
         Set<String> types = new HashSet<>();
         for (LoadableData d : datas) {
             types.add(d.getClassification());
@@ -63,7 +79,7 @@ public class ClassificationModel extends Observable {
      * TODO
      * @param data
      */
-    private void classifierDonnee(LoadableData data) {
+    public void classifierDonnee(LoadableData data) {
 
         List<String> classes = new ArrayList<>(data.getClassificationTypes());
         Random rdm = new Random();
@@ -71,4 +87,23 @@ public class ClassificationModel extends Observable {
         notifyObservers(data);
 
     }
+
+
+    public void setType(DataType type) {
+        this.type = type;
+    }
+
+
+    public List<LoadableData> getDatas() {
+        return datas;
+    }
+
+    public List<LoadableData> getDataToClass() {
+        return dataToClass;
+    }
+
+
+    public DataType getType() {
+        return type;
+    }
 }
diff --git a/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java b/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java
index 226180703f21200d9c94673ba00bfc56e4184bb5..156ab380cbae143783efecbfa18969dc384dccd6 100644
--- a/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java
@@ -1,6 +1,45 @@
 package fr.univlille.sae.classification.view;
 
+import fr.univlille.sae.classification.model.ClassificationModel;
+import javafx.fxml.FXMLLoader;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
 public class LoadDataView {
 
+    private ClassificationModel model;
+    private Stage owner;
+
+    public LoadDataView(ClassificationModel model, Stage owner) {
+        this.model = model;
+        this.owner = owner;
+    }
+
+
+
+    public void show() throws IOException {
+
+        FXMLLoader loader = new FXMLLoader();
+        URL fxmlFileUrl = new File(System.getProperty("user.dir") + File.separator + "res" + File.separator + "stages" + File.separator + "load-data-stage.fxml").toURI().toURL();
+
+        if (fxmlFileUrl == null) {
+            System.out.println("Impossible de charger le fichier fxml");
+            System.exit(-1);
+        }
+        loader.setLocation(fxmlFileUrl);
+        Stage root = loader.load();
+
+        root.setResizable(false);
+        root.initOwner(owner);
+        root.initModality(Modality.APPLICATION_MODAL);
+        root.setTitle("Chargement des donées");
+
+        root.showAndWait();
+
+    }
 
 }
diff --git a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
index 159c4639e73dff13d5a2db8af434c181697a836b..7d3163b7987b6c46bee2ace35d683b6d1de5bbd6 100644
--- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
@@ -1,10 +1,18 @@
 package fr.univlille.sae.classification.view;
 
+import fr.univlille.sae.classification.controller.LoadDataController;
+import fr.univlille.sae.classification.controller.MainStageController;
 import fr.univlille.sae.classification.model.ClassificationModel;
+import fr.univlille.sae.classification.model.DataType;
+import fr.univlille.sae.classification.model.Iris;
+import fr.univlille.sae.classification.model.LoadableData;
 import fr.univlille.sae.classification.utils.Observable;
 import fr.univlille.sae.classification.utils.Observer;
 import javafx.application.Application;
+import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
+import javafx.scene.chart.ScatterChart;
+import javafx.scene.chart.XYChart;
 import javafx.stage.Stage;
 
 import java.io.File;
@@ -14,8 +22,12 @@ import java.net.URL;
 public class MainStageView implements Observer {
 
 
+
+
     private ClassificationModel model;
 
+    private ScatterChart scatterChart;
+
     public MainStageView(ClassificationModel model) {
         this.model = model;
         model.attach(this);
@@ -36,11 +48,28 @@ public class MainStageView implements Observer {
         root.setResizable(false);
         root.setTitle("SAE3.3 - Logiciel de classification");
         root.show();
+        loader.getController();
+        MainStageController controller = loader.getController();
+        scatterChart = controller.getScatterChart();
+
     }
 
 
     @Override
     public void update(Observable observable) {
+        if(scatterChart == null) throw new IllegalStateException();
+        if(!(observable instanceof ClassificationModel)) throw new IllegalStateException();
+        XYChart.Series series1 = new XYChart.Series();
+        series1.setName("Dice Launch");
+        scatterChart.getData().add(series1);
+        for(LoadableData i : model.getDatas()) {
+            if(model.getType() == DataType.IRIS) {
+                series1.getData().add(new XYChart.Data<>(((Iris)i).getPetalLength(),
+                        ((Iris)i).getPetalWidth()));
+
+            }
+        }
+
 
     }