diff --git a/src/main/java/fr/univlille/sae/classification/ClassificationApp.java b/src/main/java/fr/univlille/sae/classification/ClassificationApp.java
deleted file mode 100644
index 629539234881dc47173492b0ab04392868b2c3c3..0000000000000000000000000000000000000000
--- a/src/main/java/fr/univlille/sae/classification/ClassificationApp.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package fr.univlille.sae.classification;
-
-public class ClassificationApp {
-
-    public static void main(String[] args) {
-
-    }
-
-
-}
diff --git a/src/main/java/fr/univlille/sae/classification/ClassificationModel.java b/src/main/java/fr/univlille/sae/classification/ClassificationModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..486fe8ec212add72fc22bfa29508d09d54238e6d
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/ClassificationModel.java
@@ -0,0 +1,44 @@
+package fr.univlille.sae.classification;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ClassificationModel {
+
+
+    private List<LoadableData> datas;
+
+    public ClassificationModel() {
+        this.datas = new ArrayList<>();
+
+    }
+
+    /**
+     * TODO
+     * @param x
+     * @param y
+     */
+    private void ajouterDonnee(double x, double y) {
+
+    }
+
+
+    /**
+     * TODO
+     * @param file
+     */
+    private void loadData(File file) {
+
+    }
+
+    /**
+     * TODO
+     * @param data
+     */
+    private void classifierDonnee(LoadableData data) {
+
+    }
+
+
+}
diff --git a/src/main/java/fr/univlille/sae/classification/Iris.java b/src/main/java/fr/univlille/sae/classification/Iris.java
new file mode 100644
index 0000000000000000000000000000000000000000..00687563ccfa71fbfd57491fc685b22a3d8ff05f
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/Iris.java
@@ -0,0 +1,56 @@
+package fr.univlille.sae.classification;
+
+import java.util.Set;
+
+public class Iris extends LoadableData{
+
+
+    private double sepalWidth;
+    private double sepalLength;
+    private double petalWidth;
+    private double petalLength;
+
+    private static Set<String> classificationTypes;
+
+    private String classification;
+
+
+    public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength) {
+        this(sepalWidth, sepalLength, petalWidth, petalLength, "undefined");
+    }
+
+    public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength, String classification) {
+        this.sepalWidth = sepalWidth;
+        this.sepalLength = sepalLength;
+        this.petalWidth = petalWidth;
+        this.petalLength = petalLength;
+        this.classification = classification;
+    }
+
+    @Override
+    public String getClassification() {
+        return this.classification;
+    }
+
+    @Override
+    public Set<String> getClassificationTypes() {
+       return classificationTypes;
+    }
+
+
+    public double getSepalWidth() {
+        return sepalWidth;
+    }
+
+    public double getSepalLength() {
+        return sepalLength;
+    }
+
+    public double getPetalWidth() {
+        return petalWidth;
+    }
+
+    public double getPetalLength() {
+        return petalLength;
+    }
+}
diff --git a/src/main/java/fr/univlille/sae/classification/LoadableData.java b/src/main/java/fr/univlille/sae/classification/LoadableData.java
new file mode 100644
index 0000000000000000000000000000000000000000..3513577cc1c9a25ba3422e4372f01bd18e660985
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/LoadableData.java
@@ -0,0 +1,13 @@
+package fr.univlille.sae.classification;
+
+import java.util.List;
+import java.util.Set;
+
+public abstract class LoadableData {
+
+    public abstract String getClassification();
+
+    public abstract Set<String> getClassificationTypes();
+
+
+}
diff --git a/src/main/java/fr/univlille/sae/classification/utils/Observable.java b/src/main/java/fr/univlille/sae/classification/utils/Observable.java
new file mode 100644
index 0000000000000000000000000000000000000000..78a076d96c9ba7fc6afd725bad3ad2e9e8a0d86c
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/utils/Observable.java
@@ -0,0 +1,39 @@
+package fr.univlille.sae.classification.utils;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+public abstract class Observable {
+
+
+    protected Collection<Observer> attached = new HashSet<>();
+    protected Collection<Observer> toDetach = new HashSet<>();
+
+    public void attach(Observer obs) {
+        attached.add(obs);
+    }
+
+    public void detach(Observer obs) {
+        this.toDetach.add(obs);
+    }
+
+    protected void notifyObservers() {
+        this.updateList();
+        for (Observer o : attached) {
+            o.update(this);
+        }
+    }
+
+    protected void notifyObservers(Object data) {
+        this.updateList();
+        for (Observer o : attached) {
+            o.update(this, data);
+        }
+    }
+
+    private void updateList() {
+        this.attached.removeAll(toDetach);
+        this.toDetach.clear();
+    }
+
+}
diff --git a/src/main/java/fr/univlille/sae/classification/utils/Observer.java b/src/main/java/fr/univlille/sae/classification/utils/Observer.java
new file mode 100644
index 0000000000000000000000000000000000000000..e17a1a34c046e7a215b5afb60b6e712240813021
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/utils/Observer.java
@@ -0,0 +1,10 @@
+package fr.univlille.sae.classification.utils;
+
+public interface Observer {
+
+
+    void update(Observable observable);
+    void update(Observable observable, Object data);
+
+
+}