diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..8a15fbc788c2c9381e8d57ba138dfa737a0b2ef0
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="test/java/" kind="src" path="src"/>
+	<classpathentry kind="src" path="tests"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/.project b/.project
new file mode 100644
index 0000000000000000000000000000000000000000..7246f1f87de2af30e4dee6e4680478827b019abc
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>observateur-observe</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/main/java/fr/univlille/iutinfo/m3105/MainExemple.java b/src/fr/univlille/iut/r3_04/tp3/MainExemple.java
similarity index 95%
rename from src/main/java/fr/univlille/iutinfo/m3105/MainExemple.java
rename to src/fr/univlille/iut/r3_04/tp3/MainExemple.java
index 5af584d3345b1b0cd0a43b2ba45d9b89c0dce281..01b3e141d44a8ec88a84db4fdcbedb6f8f07ee9b 100644
--- a/src/main/java/fr/univlille/iutinfo/m3105/MainExemple.java
+++ b/src/fr/univlille/iut/r3_04/tp3/MainExemple.java
@@ -1,4 +1,4 @@
-package fr.univlille.iutinfo.m3105;
+package fr.univlille.iut.r3_04.tp3;
 
 import javafx.application.Application;
 import javafx.scene.Scene;
diff --git a/src/fr/univlille/iut/r3_04/tp3/q1/Observer.java b/src/fr/univlille/iut/r3_04/tp3/q1/Observer.java
new file mode 100644
index 0000000000000000000000000000000000000000..19d74508c68118ba9158f9ef38e622fa7864acb7
--- /dev/null
+++ b/src/fr/univlille/iut/r3_04/tp3/q1/Observer.java
@@ -0,0 +1,5 @@
+package fr.univlille.iut.r3_04.tp3.q1;
+
+public interface Observer {
+
+}
diff --git a/src/main/java/fr/univlille/iutinfo/m3105/q1/Subject.java b/src/fr/univlille/iut/r3_04/tp3/q1/Subject.java
similarity index 66%
rename from src/main/java/fr/univlille/iutinfo/m3105/q1/Subject.java
rename to src/fr/univlille/iut/r3_04/tp3/q1/Subject.java
index a82399c45fc76aa692a588b9a7b96b43141854ef..f98f0367a2c85a0b97eae18382b638d6d2831763 100644
--- a/src/main/java/fr/univlille/iutinfo/m3105/q1/Subject.java
+++ b/src/fr/univlille/iut/r3_04/tp3/q1/Subject.java
@@ -1,4 +1,4 @@
-package fr.univlille.iutinfo.m3105.q1;
+package fr.univlille.iut.r3_04.tp3.q1;
 
 
 public abstract class Subject {
@@ -6,7 +6,7 @@ public abstract class Subject {
 	protected void notifyObervers() {
 	}
 
-	protected void notifyObervers(Object data) {
+	protected void notifyObservers(Object data) {
 	}
 
 	public void attach(Observer observer) {
diff --git a/src/main/java/fr/univlille/iutinfo/m3105/q1/Timer.java b/src/fr/univlille/iut/r3_04/tp3/q1/Timer.java
similarity index 88%
rename from src/main/java/fr/univlille/iutinfo/m3105/q1/Timer.java
rename to src/fr/univlille/iut/r3_04/tp3/q1/Timer.java
index ec263a1e709a058671651785097577b401c67817..6a9c4ce937c10693a07c84d9e68611ce7d286cc4 100644
--- a/src/main/java/fr/univlille/iutinfo/m3105/q1/Timer.java
+++ b/src/fr/univlille/iut/r3_04/tp3/q1/Timer.java
@@ -1,4 +1,4 @@
-package fr.univlille.iutinfo.m3105.q1;
+package fr.univlille.iut.r3_04.tp3.q1;
 
 
 public class Timer {
diff --git a/src/main/java/fr/univlille/iutinfo/m3105/q2/ConnectableProperty.java b/src/fr/univlille/iut/r3_04/tp3/q2/ConnectableProperty.java
similarity index 85%
rename from src/main/java/fr/univlille/iutinfo/m3105/q2/ConnectableProperty.java
rename to src/fr/univlille/iut/r3_04/tp3/q2/ConnectableProperty.java
index 31af3d6d907d4a341cde7004b81e1dda209e9605..4ae368ef99e267ad705c1387b2658ae35561b558 100644
--- a/src/main/java/fr/univlille/iutinfo/m3105/q2/ConnectableProperty.java
+++ b/src/fr/univlille/iut/r3_04/tp3/q2/ConnectableProperty.java
@@ -1,4 +1,4 @@
-package fr.univlille.iutinfo.m3105.q2;
+package fr.univlille.iut.r3_04.tp3.q2;
 
 public class ConnectableProperty extends ObservableProperty {
 
diff --git a/src/main/java/fr/univlille/iutinfo/m3105/q2/ObservableProperty.java b/src/fr/univlille/iut/r3_04/tp3/q2/ObservableProperty.java
similarity index 79%
rename from src/main/java/fr/univlille/iutinfo/m3105/q2/ObservableProperty.java
rename to src/fr/univlille/iut/r3_04/tp3/q2/ObservableProperty.java
index 6d6e213c12a69c4b9635cd713379557eeb177b41..89b78d53fc278434d0f1102f0345be4ea163d612 100644
--- a/src/main/java/fr/univlille/iutinfo/m3105/q2/ObservableProperty.java
+++ b/src/fr/univlille/iut/r3_04/tp3/q2/ObservableProperty.java
@@ -1,6 +1,6 @@
-package fr.univlille.iutinfo.m3105.q2;
+package fr.univlille.iut.r3_04.tp3.q2;
 
-import fr.univlille.iutinfo.m3105.q1.Observer;
+import fr.univlille.iut.r3_04.tp3.q1.Observer;
 
 public class ObservableProperty {
 
diff --git a/src/main/java/fr/univlille/iutinfo/m3105/q1/Observer.java b/src/main/java/fr/univlille/iutinfo/m3105/q1/Observer.java
deleted file mode 100644
index 1985f1047dee1c5ae51870aa5667c61a8d28d412..0000000000000000000000000000000000000000
--- a/src/main/java/fr/univlille/iutinfo/m3105/q1/Observer.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package fr.univlille.iutinfo.m3105.q1;
-
-public interface Observer {
-
-}
diff --git a/src/test/java/fr/univlille/iutinfo/m3105/ObserverTestStub.java b/tests/fr/univlille/iut/r3_04/tp3/ObserverTestStub.java
similarity index 85%
rename from src/test/java/fr/univlille/iutinfo/m3105/ObserverTestStub.java
rename to tests/fr/univlille/iut/r3_04/tp3/ObserverTestStub.java
index e77056486b58daf07586a36cbe05163fe060c2c2..00f3e0be278cdbbe7e094f3d3e58716526b94dec 100644
--- a/src/test/java/fr/univlille/iutinfo/m3105/ObserverTestStub.java
+++ b/tests/fr/univlille/iut/r3_04/tp3/ObserverTestStub.java
@@ -1,7 +1,7 @@
-package fr.univlille.iutinfo.m3105;
+package fr.univlille.iut.r3_04.tp3;
 
-import fr.univlille.iutinfo.m3105.q1.Observer;
-import fr.univlille.iutinfo.m3105.q1.Subject;
+import fr.univlille.iut.r3_04.tp3.q1.Observer;
+import fr.univlille.iut.r3_04.tp3.q1.Subject;
 
 /** ObserverTestStub
  * Can tell whether it was notified or not
diff --git a/src/test/java/fr/univlille/iutinfo/m3105/q1/TestQ_1_1.java b/tests/fr/univlille/iut/r3_04/tp3/q1/TestQ_1_1.java
similarity index 94%
rename from src/test/java/fr/univlille/iutinfo/m3105/q1/TestQ_1_1.java
rename to tests/fr/univlille/iut/r3_04/tp3/q1/TestQ_1_1.java
index d0ae6971df94f72cb4dd7ac64382503eecd6eb90..85a2796958146b70db316dde3a9ed2e421d26ea2 100644
--- a/src/test/java/fr/univlille/iutinfo/m3105/q1/TestQ_1_1.java
+++ b/tests/fr/univlille/iut/r3_04/tp3/q1/TestQ_1_1.java
@@ -1,10 +1,10 @@
-package fr.univlille.iutinfo.m3105.q1;
-
-import fr.univlille.iutinfo.m3105.ObserverTestStub;
+package fr.univlille.iut.r3_04.tp3.q1;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import fr.univlille.iut.r3_04.tp3.ObserverTestStub;
+
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -17,7 +17,7 @@ public class TestQ_1_1 {
      */
     protected class MockSubject extends Subject {
         public void notifyValue(int i) {
-            this.notifyObervers(i);
+            this.notifyObservers(i);
         }
     }
 
diff --git a/src/test/java/fr/univlille/iutinfo/m3105/q1/TestQ_1_3.java b/tests/fr/univlille/iut/r3_04/tp3/q1/TestQ_1_3.java
similarity index 94%
rename from src/test/java/fr/univlille/iutinfo/m3105/q1/TestQ_1_3.java
rename to tests/fr/univlille/iut/r3_04/tp3/q1/TestQ_1_3.java
index bce265f652ca94db5777a98194902e1b4448f4c9..82faf8bf21db7140e9f469c83baf5ba625f2b811 100644
--- a/src/test/java/fr/univlille/iutinfo/m3105/q1/TestQ_1_3.java
+++ b/tests/fr/univlille/iut/r3_04/tp3/q1/TestQ_1_3.java
@@ -1,10 +1,10 @@
-package fr.univlille.iutinfo.m3105.q1;
+package fr.univlille.iut.r3_04.tp3.q1;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import fr.univlille.iutinfo.m3105.ObserverTestStub;
+import fr.univlille.iut.r3_04.tp3.ObserverTestStub;
 
 import static org.junit.jupiter.api.Assertions.*;
 
diff --git a/src/test/java/fr/univlille/iutinfo/m3105/q2/TestQ2_1.java b/tests/fr/univlille/iut/r3_04/tp3/q2/TestQ2_1.java
similarity index 92%
rename from src/test/java/fr/univlille/iutinfo/m3105/q2/TestQ2_1.java
rename to tests/fr/univlille/iut/r3_04/tp3/q2/TestQ2_1.java
index f6952947976bce893dcf406f3b0a8af4565ef287..1084d88c764c8c422dbe66df836f346540214f9c 100644
--- a/src/test/java/fr/univlille/iutinfo/m3105/q2/TestQ2_1.java
+++ b/tests/fr/univlille/iut/r3_04/tp3/q2/TestQ2_1.java
@@ -1,4 +1,4 @@
-package fr.univlille.iutinfo.m3105.q2;
+package fr.univlille.iut.r3_04.tp3.q2;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -7,7 +7,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import fr.univlille.iutinfo.m3105.ObserverTestStub;
+import fr.univlille.iut.r3_04.tp3.ObserverTestStub;
 
 
 public class TestQ2_1 {
diff --git a/src/test/java/fr/univlille/iutinfo/m3105/q2/TestQ2_2.java b/tests/fr/univlille/iut/r3_04/tp3/q2/TestQ2_2.java
similarity index 98%
rename from src/test/java/fr/univlille/iutinfo/m3105/q2/TestQ2_2.java
rename to tests/fr/univlille/iut/r3_04/tp3/q2/TestQ2_2.java
index 0cbda048878dc7fb6ee04f9c2353ee0d4e0c408e..d9457f5adbf94a80efdc27bc93cb60152ca9dfe9 100644
--- a/src/test/java/fr/univlille/iutinfo/m3105/q2/TestQ2_2.java
+++ b/tests/fr/univlille/iut/r3_04/tp3/q2/TestQ2_2.java
@@ -1,4 +1,4 @@
-package fr.univlille.iutinfo.m3105.q2;
+package fr.univlille.iut.r3_04.tp3.q2;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;