diff --git a/tp2/README.md b/tp2/README.md
index c619af9b4d9082aeb702600b4483655650e8db91..509c7286ad2954562871691ecc8595062b10af8a 100644
--- a/tp2/README.md
+++ b/tp2/README.md
@@ -36,7 +36,7 @@ fn main() {
 
 ## 1.2. Problem 2
 
-On end la variable mutable et on utilise une référence comme pour le problem 1
+On rend la variable mutable et on utilise une référence comme pour le problem 1 :
 
 ```rs
 struct Foo {
@@ -112,9 +112,9 @@ fn main() {
 
 Problèmes réglés :
 - rendre les variables mutable pour les modifier
-- donner la valuer `None` de base à `best` pour être sûr qu'elle soit initialisée
+- donner la valeur `None` au départ à la variable `best` pour être sûr qu'elle soit initialisée
 - utiliser le type `u64` pour socker les résultats des additions avec des `u32` car le résultat peut être plus grand que le maximum de `u32`
-- utiliser des références pour éviter de donner le ownership
+- utiliser des références pour éviter de transférer le ownership
 
 ```rs
 /// Returns a Vec of random values
@@ -153,6 +153,8 @@ fn main() {
 ## 2.1. Elided lifetimes
 ### 2.1.1. Elided 1
 
+On met deux lifetiemes différentes car le résultat ne dépend pas des lifetimes des entrées :
+
 ```rs
 fn total_len<'a, 'b>(a: &'a str, b: &'b str) -> usize {
     a.len() + b.len()
@@ -165,6 +167,8 @@ fn main() {
 
 ### 2.1.2. Elided 2
 
+On utilise la lifetime de l'argument pour la valeur retournée car dans les deux cas on retourne quelque chose qui n'a de sens que si `input` est encore valide car ce sont des références :
+
 ```rs
 fn half_end<'l>(input: &'l str) -> &'l str {
     if input.len() < 2 {
@@ -181,7 +185,7 @@ fn main() {
 
 ### 2.1.3. Elided 3
 
-On utilise `'a` car la valeur de retour dépend toujours de `self` :
+On utilise `'a` pour le retour car la valeur de retour dépend toujours de `self` :
 
 ```rs
 struct Foo {
@@ -237,7 +241,7 @@ fn main() {
 
 ### 2.2.2. Explicit 2
 
-On utilise une lifetime commun aux deux arguments car le résultat peut dépendre des deux :
+On utilise une lifetime commune aux deux arguments car le résultat peut dépendre de l'un ou de l'autre argument :
 
 ```rs
 fn longuest<'l>(a: &'l str, b: &'l str) -> &'l str {
@@ -280,7 +284,7 @@ fn main() {
 ## 2.3. Lifetimes on types
 ### 2.3.1. Types 1
 
-On ajoute une lifetime au type `Message` pour son attribut `content` qui est une référence car le type `Message` a besoin que la référence de `content` soit valide encore valide pour être utilisé :
+On ajoute une lifetime au type `Message` pour son attribut `content` qui est une référence, car le type `Message` a besoin que la référence de `content` soit encore valide pour être utilisée :
 
 ```rs
 struct Message<'a> {
@@ -335,7 +339,6 @@ fn main() {
     node1.push(&node2);
     node1.print();
 }
-
 ```
 
 # 3. Long exercise : a mini web server