diff --git a/pom.xml b/pom.xml
index 73ba586b72e5ccd72df7c7b069c45ee4e590bfe4..fcff1e2da45ce1213d95d7b937472878250c88bb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
                 <artifactId>javafx-maven-plugin</artifactId>
                 <version>0.0.4</version>
                 <configuration>
-                    <mainClass>fr.univlille.sae.classification.view.MainStage</mainClass>
+                    <mainClass>fr.univlille.sae.classification.Main</mainClass>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/src/main/java/fr/univlille/sae/classification/Main.java b/src/main/java/fr/univlille/sae/classification/Main.java
index 77fa80b1a00b346d7ece5f116224b02c1127dd38..e3ee04134e704ffe875e30c540c285cc17821777 100644
--- a/src/main/java/fr/univlille/sae/classification/Main.java
+++ b/src/main/java/fr/univlille/sae/classification/Main.java
@@ -3,12 +3,9 @@ package fr.univlille.sae.classification;
 import fr.univlille.sae.classification.model.ClassificationModel;
 import fr.univlille.sae.classification.view.MainStageView;
 import javafx.application.Application;
-import javafx.fxml.FXMLLoader;
 import javafx.stage.Stage;
 
-import java.io.File;
 import java.io.IOException;
-import java.net.URL;
 
 public class Main extends Application {
 
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 2cdac800ab947cc7b8c3cc23840c06cdad3173f3..b01a2d255a675196b3d68015c6b7b2ee807891ff 100644
--- a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
+++ b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
@@ -3,14 +3,12 @@ package fr.univlille.sae.classification.model;
 import com.opencsv.bean.CsvToBeanBuilder;
 import fr.univlille.sae.classification.utils.Observable;
 
+import javax.xml.crypto.Data;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
+import java.util.*;
 
 public class ClassificationModel extends Observable {
 
@@ -18,18 +16,28 @@ public class ClassificationModel extends Observable {
     private List<LoadableData> datas;
     private List<LoadableData> dataToClass;
 
+    private DataType type;
+
     public ClassificationModel() {
-        this.datas = new ArrayList<>();
+        this(DataType.IRIS);
+    }
 
+    public ClassificationModel(DataType type) {
+        this.datas = new ArrayList<>();
+        this.dataToClass = new ArrayList<>();
+        this.type = type;
     }
 
+
     /**
-     * TODO
-     * @param x
-     * @param y
+     * Ajoute un point au nuage de points avec toutes les données de ce point
+     * @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 x, double y) {
-
+    private void ajouterDonnee(double... coords) {
+        LoadableData newData = PointFactory.createPoint(type, coords);
+        this.dataToClass.add(newData);
+        notifyObservers(newData);
     }
 
 
@@ -42,6 +50,13 @@ public class ClassificationModel extends Observable {
                 .withSeparator(',')
                 .withType(Iris.class)
                 .build().parse();
+        Set<String> types = new HashSet<>();
+        for (LoadableData d : datas) {
+            types.add(d.getClassification());
+        }
+
+        LoadableData.setClassificationTypes(types);
+        notifyObservers();
     }
 
     /**
@@ -53,6 +68,7 @@ public class ClassificationModel extends Observable {
         List<String> classes = new ArrayList<>(data.getClassificationTypes());
         Random rdm = new Random();
         data.setClassification(classes.get(rdm.nextInt(classes.size())));
+        notifyObservers(data);
 
     }
 }
diff --git a/src/main/java/fr/univlille/sae/classification/model/DataType.java b/src/main/java/fr/univlille/sae/classification/model/DataType.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f775b4376c7d7cb985b3c721ca3cde17483c55a
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/model/DataType.java
@@ -0,0 +1,7 @@
+package fr.univlille.sae.classification.model;
+
+public enum DataType {
+
+    IRIS;
+
+}
diff --git a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
index 4de0abe4a687b74074761c54657795809bda17bb..27678aa908bde366122bbce5e0f6351eb4e2a5f5 100644
--- a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
+++ b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
@@ -2,23 +2,28 @@ package fr.univlille.sae.classification.model;
 
 import java.util.Set;
 
-public class LoadableData {
+public abstract class LoadableData {
 
     private static Set<String> classificationTypes;
 
     private String classification;
 
 
-    public LoadableData() {
+    protected LoadableData() {
 
     }
     public String getClassification() {
         return this.classification;
     }
-    Set<String> getClassificationTypes() {
+    public static Set<String> getClassificationTypes() {
         return classificationTypes;
     }
-    void setClassification(String classification) {
+
+    public static void setClassificationTypes(Set<String> classificationTypes) {
+        LoadableData.classificationTypes = classificationTypes;
+    }
+
+    public void setClassification(String classification) {
         this.classification = classification;
     }
 
diff --git a/src/main/java/fr/univlille/sae/classification/model/PointFactory.java b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ee05ec8bb8c6581e49a7b615910af5bb2aa01e1
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java
@@ -0,0 +1,21 @@
+package fr.univlille.sae.classification.model;
+
+public class PointFactory {
+
+
+    public static LoadableData createPoint(DataType type, double[] coords)  {
+
+        int size = coords.length;
+        LoadableData data;
+        switch (type) {
+            case IRIS:
+                if(size != 4) throw new IllegalArgumentException();
+                data = new Iris(coords[0],coords[1],coords[2],coords[3]);
+                break;
+            default:
+                throw new IllegalArgumentException();
+        }
+
+        return data;
+    }
+}