diff --git a/README.md b/README.md
index e4da3cfb3230008f9f3d095caf0825bc49b46ea8..908fa1c468510a1912dbb0278ccd15932e997b5d 100644
--- a/README.md
+++ b/README.md
@@ -84,6 +84,7 @@ classDiagram
     Objectif : +isDone() boolean
 ```
 
+Implémentez ces classes dans un sous-paquetage *q2*.
 
 On devra par exemple pouvoir dérouler le scénario suivant (pour y parvenir quelques questions ci-dessous pour vous guider) :
 <pre>
@@ -156,33 +157,38 @@ La monodirectionnelle propage les changement d’une propriété (« source »
 Ce sont des mécanismes pratiques mais qui obligent à importer JavaFX ce qui n’est pas toujours souhaitable dans un projet.
 Vous devez réimplémenter ces mécanismes des propriétés.
 
-**Q2.1** Rendez la classe ObservableProperty observable.
+Rendez la classe ObservableProperty observable.
 Outre le fait qu'elle soit observable (attach, detach), cette classe doit avoir une propriété à laquelle on peut accéder :
 
 ```java
 package fr.univlille.iut.r304.tp3.q3;
 
-public class ObservableProperty
+public class ObservableProperty {
 
-public Object getValue()
+    public Object getValue() {
+        
+    }
 
-public void setValue(Object val)
+    public void setValue(Object val) {
+        
+    }
   ...
+}
 ```
 
 Bien sûr, le fait de changer la valeur de la propriété doit être notifié aux observateurs de celle-ci.
 
 Notez que par simplicité, on utilisera une propriété de type `Object` (donc n'importe quel type).
-Vous pouvez aussi définir une classe générique avec un type paramétrique pour typer cette propriété.
+On aurait aussi pu définir une classe générique avec un type paramétrique pour typer cette propriété.
 
 Vérifier la validité de votre implémentation en exécutant les tests associés à cette question.
 
-**Q2.2** Créez la classe ConnectableProperty qui puisse se connecter de façon  mono ou bi-directionnelle :
+Implémentez la classe ConnectableProperty qui puisse se connecter de façon mono ou bi-directionnelle :
 
 ```java
 package fr.univlille.iut.r304.tp3.q3;
 
-public class ConnectableProperty extends ObservableProperty
+public class ConnectableProperty extends ObservableProperty {
 
 public void connectTo(ConnectableProperty other) {
 }
@@ -194,3 +200,24 @@ public void unconnectFrom(ConnectableProperty other) {
 }
   ...
 ```
+## Partie 4 : Application avec la conversion de devises
+
+On souhaite réaliser une application de portefeuille gérant la conversion dans différentes monnaies.
+Dans un premier temps, on va disposer d'un montant en euros et souhaiter l'afficher aussi en dollars.
+
+Dans un sous-paquetage *q4*, implémentez une classe **Devise** héritant de *ConnectableProperty* de manière à pouvoir instancier deux devises différentes, l'une correspondant aux euros, l'autre aux dollars.
+Les valeurs n'étant pas les mêmes dans les deux monnaies, la méthode *void update(Subject other, Object data)* va être à redéfinir de manière à opérer la conversion.
+
+Une fois la classe implémentée, réalisez un *Main* avec 2 devises synchronisées, l'ajoutant ou le retrait d'un montant dans l'une se répercutant automatiquement sur l'autre.
+
+Voici un exemple de scénario :
+```
+Ajout 20$
+18,00 €
+20,00 $
+Retrait 11€
+7,00 €
+7,78 $
+```
+
+Ajoutez une troisième devise et démontrez la validité de votre solution à l'aide de tests.
\ No newline at end of file
diff --git a/out/production/main/fr/univlille/iut/r304/tp4/q1/Observable.class b/out/production/main/fr/univlille/iut/r304/tp3/q1/Observable.class
similarity index 67%
rename from out/production/main/fr/univlille/iut/r304/tp4/q1/Observable.class
rename to out/production/main/fr/univlille/iut/r304/tp3/q1/Observable.class
index 1c4244fded8eba21f7ee2333939fad0bcc10e3d7..f6dccbb84f864223cb8c3aba82ecc451cf307d20 100644
Binary files a/out/production/main/fr/univlille/iut/r304/tp4/q1/Observable.class and b/out/production/main/fr/univlille/iut/r304/tp3/q1/Observable.class differ
diff --git a/out/production/main/fr/univlille/iut/r304/tp3/q1/Observer.class b/out/production/main/fr/univlille/iut/r304/tp3/q1/Observer.class
new file mode 100644
index 0000000000000000000000000000000000000000..05a6e1fb90fd9e915e353d4b3a92d1575634a876
Binary files /dev/null and b/out/production/main/fr/univlille/iut/r304/tp3/q1/Observer.class differ
diff --git a/out/production/main/fr/univlille/iut/r304/tp4/q2/ConnectableProperty.class b/out/production/main/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.class
similarity index 62%
rename from out/production/main/fr/univlille/iut/r304/tp4/q2/ConnectableProperty.class
rename to out/production/main/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.class
index ad0999eea2d7db11370cd2eb338c9eea4e64370b..395e282acbcd42d513c8f89c7771314ed4b20d29 100644
Binary files a/out/production/main/fr/univlille/iut/r304/tp4/q2/ConnectableProperty.class and b/out/production/main/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.class differ
diff --git a/out/production/main/fr/univlille/iut/r304/tp4/q2/ObservableProperty.class b/out/production/main/fr/univlille/iut/r304/tp3/q3/ObservableProperty.class
similarity index 72%
rename from out/production/main/fr/univlille/iut/r304/tp4/q2/ObservableProperty.class
rename to out/production/main/fr/univlille/iut/r304/tp3/q3/ObservableProperty.class
index 5033e4acddb0b10a48822592ed62737f2b8e5f20..56d4ad73cdc0228b9b1816323930bbaca3c70368 100644
Binary files a/out/production/main/fr/univlille/iut/r304/tp4/q2/ObservableProperty.class and b/out/production/main/fr/univlille/iut/r304/tp3/q3/ObservableProperty.class differ
diff --git a/out/production/main/fr/univlille/iut/r304/tp4/q1/Observer.class b/out/production/main/fr/univlille/iut/r304/tp4/q1/Observer.class
deleted file mode 100644
index bdbc554d07a2311a0819cfaf6d9318e35efccdad..0000000000000000000000000000000000000000
Binary files a/out/production/main/fr/univlille/iut/r304/tp4/q1/Observer.class and /dev/null differ
diff --git a/out/test/test/fr/univlille/iut/r304/tp3/q1/ObserverTestStub.class b/out/test/test/fr/univlille/iut/r304/tp3/q1/ObserverTestStub.class
new file mode 100644
index 0000000000000000000000000000000000000000..a28ffc964afc6d0a6bb8067f988a0753bc43e95b
Binary files /dev/null and b/out/test/test/fr/univlille/iut/r304/tp3/q1/ObserverTestStub.class differ
diff --git a/out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1$MockSubject.class b/out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1$MockSubject.class
new file mode 100644
index 0000000000000000000000000000000000000000..d726b5639e54ddb41d3775227b34ce62123cd72e
Binary files /dev/null and b/out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1$MockSubject.class differ
diff --git a/out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1.class b/out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1.class
similarity index 60%
rename from out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1.class
rename to out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1.class
index 96d285541ac9cef5378ac6ed300657cc69a0b0a1..9b70a29b761849982c49f89ee428dadff6fdfaaa 100644
Binary files a/out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1.class and b/out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1.class differ
diff --git a/out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ1.class b/out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ1.class
similarity index 76%
rename from out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ1.class
rename to out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ1.class
index 123ebbd8be8230d9ba41d93946ca80ff8c6900c7..c63f32dbf2b562b679837e08411e925fe9c99fb9 100644
Binary files a/out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ1.class and b/out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ1.class differ
diff --git a/out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ2.class b/out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ2.class
similarity index 88%
rename from out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ2.class
rename to out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ2.class
index 642e02ee83b5ad7150ba4a96340abf9643665c30..0751e0e46e122f98b0ae37b8c7b6968a9e944091 100644
Binary files a/out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ2.class and b/out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ2.class differ
diff --git a/out/test/test/fr/univlille/iut/r304/tp4/ObserverTestStub.class b/out/test/test/fr/univlille/iut/r304/tp4/ObserverTestStub.class
deleted file mode 100644
index 98f425f29666fde6fccc351ecb81bb2bb7eb8dbd..0000000000000000000000000000000000000000
Binary files a/out/test/test/fr/univlille/iut/r304/tp4/ObserverTestStub.class and /dev/null differ
diff --git a/out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1$MockSubject.class b/out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1$MockSubject.class
deleted file mode 100644
index b2b5928bb29ab21ccd330a1a89368f542a08cd23..0000000000000000000000000000000000000000
Binary files a/out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1$MockSubject.class and /dev/null differ