diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin
index 23b910c84593008cc664b21a2ec6261c0629fdcf..5eb4f675bf7ca3ca331b2ae2187ffa2524c84795 100644
Binary files a/.gradle/8.4/executionHistory/executionHistory.bin and b/.gradle/8.4/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.4/executionHistory/executionHistory.lock b/.gradle/8.4/executionHistory/executionHistory.lock
index b7c964893efa8831ad8806d4f1343a8bf6d5349c..ff8ef3d1b49198e32467621eef0dcaa8ee28a970 100644
Binary files a/.gradle/8.4/executionHistory/executionHistory.lock and b/.gradle/8.4/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.4/fileHashes/fileHashes.bin b/.gradle/8.4/fileHashes/fileHashes.bin
index 01d4ae1131c3e851320bb8b6e29f1d92cc6e2874..7ce511ef6e03a44b01690b486336c4cd64c16b90 100644
Binary files a/.gradle/8.4/fileHashes/fileHashes.bin and b/.gradle/8.4/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.4/fileHashes/fileHashes.lock b/.gradle/8.4/fileHashes/fileHashes.lock
index ee0b1b30e3c0629debb4a250dfa42950f0b96b4e..a3ef8ba94fb1c5fa03f359ed7a854fa05c0b4176 100644
Binary files a/.gradle/8.4/fileHashes/fileHashes.lock and b/.gradle/8.4/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.4/fileHashes/resourceHashesCache.bin b/.gradle/8.4/fileHashes/resourceHashesCache.bin
index 50a163583b8b043ef51c8ca6050419b3c8a72c7d..57064a4f1c4975a19f5c8d35e3156b80c6a05737 100644
Binary files a/.gradle/8.4/fileHashes/resourceHashesCache.bin and b/.gradle/8.4/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index b806b428a767754d77dffa311cbd75688d170cff..85650c1e71663e0e9ab1ad5fce91edd5e89d7891 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
index 501348736c0f0b2b8f1f95eb4bdcf9a9365b09d6..b40dcda137a4ffcb83fca64f10b259d3d5c29193 100644
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/build/classes/java/main/model/Element/FireFigther.class b/build/classes/java/main/model/Element/FireFigther.class
index e752d1c02a0e0ae6d18d0eed1ab81b5f46e5bde0..91897b041924b12c33ec8ea1e57d0214c7a83d80 100644
Binary files a/build/classes/java/main/model/Element/FireFigther.class and b/build/classes/java/main/model/Element/FireFigther.class differ
diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class
index d102989f64dd2b11f2f93aee28b47dc5d460ca4c..22c5e7237e4ea669a27d68a9ab99bb1dd1ffa5f4 100644
Binary files a/build/classes/java/main/model/FirefighterBoard.class and b/build/classes/java/main/model/FirefighterBoard.class differ
diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class
deleted file mode 100644
index 0e3710ab45ba151ddc0776ef50a1dd310d9846d7..0000000000000000000000000000000000000000
Binary files a/build/classes/java/main/module-info.class and /dev/null differ
diff --git a/build/classes/java/main/util/Tools.class b/build/classes/java/main/util/Tools.class
index 824ee22bf406b942acc14d94d8737fa0afd14d8a..1de0cd6f22cd53fd80cf5f92f4c297bbe182171f 100644
Binary files a/build/classes/java/main/util/Tools.class and b/build/classes/java/main/util/Tools.class differ
diff --git a/build/classes/java/test/model/FirefighterBoardTest.class b/build/classes/java/test/model/FirefighterBoardTest.class
deleted file mode 100644
index 2f78280a259abd0179915f2984b66b82f886e0df..0000000000000000000000000000000000000000
Binary files a/build/classes/java/test/model/FirefighterBoardTest.class and /dev/null differ
diff --git a/build/classes/java/test/view/FirefighterGridTest.class b/build/classes/java/test/view/FirefighterGridTest.class
deleted file mode 100644
index de04ddb3608a2a6e826f6764e68891eaa86f2722..0000000000000000000000000000000000000000
Binary files a/build/classes/java/test/view/FirefighterGridTest.class and /dev/null differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index e5a1d76288c668649bad8511abdb7e552df95c99..e94987322f238ea26ffd172b792eaef236f766ed 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin
deleted file mode 100644
index 13f25d29dcbe2bbc093d571e503f2d45b23515b2..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and /dev/null differ
diff --git a/src/main/java/model/Element/FireFigther.java b/src/main/java/model/Element/FireFigther.java
index afd16d2aaa65bf25577b8dc1347bfb2104d282ec..d18c808aed8bad79073dd6e350b54e280fa93afa 100644
--- a/src/main/java/model/Element/FireFigther.java
+++ b/src/main/java/model/Element/FireFigther.java
@@ -11,23 +11,18 @@ import static util.Tools.*;
 public class FireFigther implements ModelElement{
     @Override
     public void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount) {
-            for (Position position1 : neighbors(position, rowCount, columnCount)) {
-                if (board.containsKey(position1)) {
-                    if (board.get(position1).contains(new Fire())) {
-                        extinguish(position1,board);
 
-                    }
 
-                }
-
-            }
-            Position newPositionStep = neighborClosestTo(position,board,rowCount,columnCount);
-            extinguish(newPositionStep,board);
-            removeElement(position,board,new FireFigther());
-            addElement(newPositionStep,board,new FireFigther());
+        if(!extinguishneighbor(position,board,columnCount,rowCount)) {
+            Position newPositionStep = neighborClosestTo(position,board,rowCount,columnCount,new Fire(),List.of(new Mountain()));
+            removeElement(position, board, new FireFigther());
+            addElement(newPositionStep, board, new FireFigther());
+            extinguishneighbor(newPositionStep,board,columnCount,rowCount);
+        }
 
     }
 
+
     @Override
     public ViewElement getViewElement() {
         return ViewElement.FIREFIGHTER;
diff --git a/src/main/java/model/Element/ModelElement.java b/src/main/java/model/Element/ModelElement.java
index 9e88284ae9262c65f89740cf63d7f659b2efce6c..ece954a3a89629091de4483786f935cc4a7c486b 100644
--- a/src/main/java/model/Element/ModelElement.java
+++ b/src/main/java/model/Element/ModelElement.java
@@ -7,9 +7,9 @@ import java.util.List;
 import java.util.Map;
 
 public interface ModelElement {
-  void update (Position position,Map<Position,List<ModelElement>>board,int step,int columnCount, int rowCount);
 
 
+    void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount);
 
-  ViewElement getViewElement();
+    ViewElement getViewElement();
 }
diff --git a/src/main/java/model/Element/MotorisedFirefigther.java b/src/main/java/model/Element/MotorisedFirefigther.java
index 4d093a3a85f739cb5246cb84765ec9414cae8b5b..e4766b3a18bac1c618362b84fe2460fe35d41723 100644
--- a/src/main/java/model/Element/MotorisedFirefigther.java
+++ b/src/main/java/model/Element/MotorisedFirefigther.java
@@ -12,24 +12,16 @@ import static util.Tools.removeElement;
 public class MotorisedFirefigther implements ModelElement{
     @Override
     public void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount) {
-        for (Position position1 : neighbors(position, rowCount, columnCount)) {
-            if (board.containsKey(position1)) {
-                if (board.get(position1).contains(new Fire())) {
-                    extinguish(position,board);
-                    return;
-                }
-
-            }
 
+        if(!extinguishneighbor(position,board,columnCount,rowCount)) {
+            Fire fire = new Fire();
+            Position newPositionStep = neighborClosestTo(position,board,rowCount,columnCount,fire,List.of(new Mountain()));
+            Position newPositionTwoStep= neighborClosestTo(newPositionStep,board,rowCount,columnCount,fire,List.of(new Mountain()));
+            MotorisedFirefigther motorisedFirefigther=new MotorisedFirefigther();
+            removeElement(position,board,motorisedFirefigther);
+            addElement(newPositionTwoStep,board,motorisedFirefigther);
+            extinguishneighbor(newPositionTwoStep,board,columnCount,rowCount);
         }
-        MotorisedFirefigther motorisedFirefigther=new MotorisedFirefigther();
-        Position newPositionStep = neighborClosestTo(position,board,rowCount,columnCount);
-        Position newPositionTwoStep= neighborClosestTo(newPositionStep,board,rowCount,columnCount);
-        extinguish(newPositionTwoStep,board);
-        removeElement(position,board,motorisedFirefigther);
-        addElement(newPositionTwoStep,board,motorisedFirefigther);
-
-
 
     }
 
diff --git a/src/main/java/model/Element/Road.java b/src/main/java/model/Element/Road.java
index e455f73916f96d47d72ea7536178edfc38389da5..48f896a88de729611be5b2ec361841c7862a2f06 100644
--- a/src/main/java/model/Element/Road.java
+++ b/src/main/java/model/Element/Road.java
@@ -13,7 +13,6 @@ public class Road implements ModelElement{
     public void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount) {
 
     }
-
     @Override
     public ViewElement getViewElement() {
         return ViewElement.Road;
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index a4b6bda573f38982463e004fa17488123e151855..ec37d490dfe5299484cb5e47bbfe2e64c9ca22d3 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -61,6 +61,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   }
 
   public Map<Position, List<ModelElement>> updateToNextGeneration() {
+
     Map<Position, List<ModelElement>> copieBord=new HashMap<>();
     for (Position positionCopie:board.keySet()
     ) {
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
deleted file mode 100644
index d55a91e09820fe1bc057a9a9c27278d7f838b363..0000000000000000000000000000000000000000
--- a/src/main/java/module-info.java
+++ /dev/null
@@ -1,9 +0,0 @@
-module firefighter {
-  requires javafx.controls;
-  requires javafx.fxml;
-  requires javafx.graphics;
-  opens controller to javafx.fxml;
-  exports app;
-  opens app to javafx.fxml;
-    opens controller.fireFigther to javafx.fxml;
-}
diff --git a/src/main/java/util/Tools.java b/src/main/java/util/Tools.java
index c8e284935d33ba0e1859aa22b2f1d2867a38b15a..2c3cbe99d27c3c51e984fc237cec712387418a97 100644
--- a/src/main/java/util/Tools.java
+++ b/src/main/java/util/Tools.java
@@ -9,6 +9,8 @@ import java.util.*;
 
 
 public class Tools {
+
+
     public static List<Position> neighbors(Position position , int rowCount , int columnCount) {
         List<Position> list = new ArrayList<>();
         if (position.row() > 0) list.add(new Position(position.row() - 1, position.column()));
@@ -18,7 +20,7 @@ public class Tools {
         return list;
     }
 
-    public static Position neighborClosestTo(Position position, Map<Position, List<ModelElement>> board, int rowCount , int columnCount) {
+    public static Position neighborClosestTo(Position position, Map<Position, List<ModelElement>> board, int rowCount , int columnCount,ModelElement element,List<ModelElement>impassableElements) {
         Set<Position> seen = new HashSet<>();
         HashMap<Position, Position> firstMove = new HashMap<>();
         Queue<Position> toVisit = new LinkedList<>(neighbors(position,rowCount,columnCount));
@@ -28,18 +30,19 @@ public class Tools {
         while (!toVisit.isEmpty()) {
             Position current = toVisit.poll();
             if (board.containsKey(current)) {
-                if (board.get(current).contains(new Fire())){
+                if (board.get(current).contains(element)){
                     return firstMove.get(current);
                 }
             }
             for (Position adjacent : neighbors(current, rowCount, columnCount)) {
-                if (!(seen.contains(adjacent) )) {
 
+                    if (!(seen.contains(adjacent) && impassableElement(board.getOrDefault(adjacent,List.of()),impassableElements))) {
                         toVisit.add(adjacent);
                         seen.add(adjacent);
                         firstMove.put(adjacent, firstMove.get(current));
 
-                }
+                    }
+
             }
         }
         return position;
@@ -48,7 +51,7 @@ public class Tools {
 
 
     public static void extinguish(Position position,Map<Position, List<ModelElement>> board) {
-        board.remove(position);
+        removeElement(position,board,new Fire());
     }
 
     public static void addElement(Position position, Map<Position, List<ModelElement>> board, ModelElement element) {
@@ -67,8 +70,33 @@ public class Tools {
         elements.remove(element);
         board.put(position,elements);
     }
+    public static boolean extinguishneighbor(Position position ,  Map<Position, List<ModelElement>> board,int columnCount, int rowCount){
+        boolean bool=false;
+        for (Position position1 : neighbors(position, rowCount, columnCount)) {
+            if (board.containsKey(position1)) {
+                if (board.get(position1).contains(new Fire())) {
+                    extinguish(position1,board);
+                    bool=true;
 
+                }
+
+            }
 
+        }
+        return bool;
+    }
+    public static boolean impassableElement (List<ModelElement> list,List<ModelElement>impassableElements){
+
+        for (ModelElement impassableElement:impassableElements
+             ) {
+            if (list.contains(impassableElement)) {
+                return false;
+            }
+        }
+        return true;
+
+
+    }