diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin
index 14de053e2be6fbb2ca7891822fcb1d5eb3ead8d2..d9a265d716e9f4309d7c4835cee4acfe1c269eff 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 c87fcc9349a2ef81dfe68895e7011b540ebe0730..6cb3367eb4c3d56d4fffd97fc1ec060b4e89b8c5 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 ee1911fe5301189769c38cd829c3ffe30c08f0a9..8da2ea643297ea24ebe448d0705eed4fb283bf80 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 a6b915a90cb046cfc12791a367d93eeb30bd8cf0..7fac77118eba4edc0e99d909d5e8cd8dcea24a08 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 6cd79388e76bb5f34544f1b41604251d8437dcb1..ab3e0a4676e0148a19681f3824f31fdc9e02de08 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 7903126a0dcdbfde39041e8a6de5812e36679bf7..9c9ba6e9ea216ef5653e61d1501e8703235f0cef 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 9950dc5e73e58206fe7f141e701e984fedcc0ab0..88df6d9bca121586e9b1df41d8989494bb6915f7 100644
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class
index 2792d63b92517bb76234c95f54d1ac8669770999..1003f5961c795950b88df71148fdc944e51f63e9 100644
Binary files a/build/classes/java/main/app/SimulatorApplication.class and b/build/classes/java/main/app/SimulatorApplication.class differ
diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
index 74013efab5e05f9243deca053906751ea238f241..23933b95f3862a8016fa14fae947490553944e61 100644
Binary files a/build/classes/java/main/controller/Controller.class and b/build/classes/java/main/controller/Controller.class differ
diff --git a/build/classes/java/main/model/Builder/GameManage.class b/build/classes/java/main/model/Builder/GameManage.class
index af3536b151a408b96923e5356e098c9e646509d4..6d31614caa77c363eb0fe85b398c1f6367eabe9c 100644
Binary files a/build/classes/java/main/model/Builder/GameManage.class and b/build/classes/java/main/model/Builder/GameManage.class differ
diff --git a/build/classes/java/main/model/ExtinguishFire/Cloud.class b/build/classes/java/main/model/ExtinguishFire/Cloud.class
index dd940b0174a4a149abcf9599d409366672fda4e4..61044ec9271ec1cec418aa6f50ce31b14ed7bf66 100644
Binary files a/build/classes/java/main/model/ExtinguishFire/Cloud.class and b/build/classes/java/main/model/ExtinguishFire/Cloud.class differ
diff --git a/build/classes/java/main/model/ExtinguishFire/FireFighter.class b/build/classes/java/main/model/ExtinguishFire/FireFighter.class
index 02776eb6f209146e6f2de1891a6ecafbc4aa688a..8b3434fcf26e4a650c3fe23173ef74be5ad47abd 100644
Binary files a/build/classes/java/main/model/ExtinguishFire/FireFighter.class and b/build/classes/java/main/model/ExtinguishFire/FireFighter.class differ
diff --git a/build/classes/java/main/model/ExtinguishFire/MotorizedFireFighter.class b/build/classes/java/main/model/ExtinguishFire/MotorizedFireFighter.class
index 436df44dd36db05fd1c87bf02bf61944fcae213b..2584644314d21ef8df7dc763702d6084d8844c81 100644
Binary files a/build/classes/java/main/model/ExtinguishFire/MotorizedFireFighter.class and b/build/classes/java/main/model/ExtinguishFire/MotorizedFireFighter.class differ
diff --git a/build/classes/java/main/model/Flammable/Fire.class b/build/classes/java/main/model/Flammable/Fire.class
index c26b25067e3470b44d70d004d5f4c57388352c7a..84d78d98efd0addb56edbf98e7743f38a0792525 100644
Binary files a/build/classes/java/main/model/Flammable/Fire.class and b/build/classes/java/main/model/Flammable/Fire.class differ
diff --git a/build/classes/java/main/model/GameBoard.class b/build/classes/java/main/model/GameBoard.class
index 9a2ab100b7a3ff1b6282d6ac48938001da2a7bdb..8942affab3e8e68908afa81fa9853f48e4eb1d1f 100644
Binary files a/build/classes/java/main/model/GameBoard.class and b/build/classes/java/main/model/GameBoard.class differ
diff --git a/build/classes/java/main/model/Obstacle/Mountain.class b/build/classes/java/main/model/Obstacle/Mountain.class
index ab116eed640ff92a1960d9c887bc5a35d19df9b1..187c3cf23bc43eab3f4542f932b95e1291f70154 100644
Binary files a/build/classes/java/main/model/Obstacle/Mountain.class and b/build/classes/java/main/model/Obstacle/Mountain.class differ
diff --git a/build/classes/java/main/model/Visitor/FireFighterFinder.class b/build/classes/java/main/model/Visitor/FireFighterFinder.class
deleted file mode 100644
index 2a068ef24f0caadfc66eaeb040828cb122de1998..0000000000000000000000000000000000000000
Binary files a/build/classes/java/main/model/Visitor/FireFighterFinder.class and /dev/null differ
diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class
index 228b8be064ecf35c69bb788937ce7ff8ab50174e..7a769b70875d147512dd0dc3f725d1c113981548 100644
Binary files a/build/classes/java/main/module-info.class and b/build/classes/java/main/module-info.class differ
diff --git a/build/classes/java/main/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class
index d2bbe7e11dd4d28c3fba73284af14ce15b59f73f..22fe36e949c5405790d75ce97f546e9616678c9a 100644
Binary files a/build/classes/java/main/view/FirefighterGrid.class and b/build/classes/java/main/view/FirefighterGrid.class differ
diff --git a/build/classes/java/main/view/Grid.class b/build/classes/java/main/view/Grid.class
index cedfc6abc7646d2aeb91d7df5227cbdb1cae0317..5833cd8dcc1d6a5c1f61236997409c2751485e0d 100644
Binary files a/build/classes/java/main/view/Grid.class and b/build/classes/java/main/view/Grid.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BoardElement.class.uniqueId13 b/build/tmp/compileJava/compileTransaction/stash-dir/BoardElement.class.uniqueId13
deleted file mode 100644
index b7da37d481527392ebf91688895cc27b0ede2413..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/BoardElement.class.uniqueId13 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BoardElement.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/BoardElement.class.uniqueId2
deleted file mode 100644
index e6407e3436efd6f66cef461a3057ddad781ec1ef..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/BoardElement.class.uniqueId2 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6
deleted file mode 100644
index 74013efab5e05f9243deca053906751ea238f241..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId8 b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId8
deleted file mode 100644
index 408d092cf56a29ba8a5a3b62eaff45c69e64478e..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId8 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId5
deleted file mode 100644
index ddbfddb8f7cee6c257ddbd45252852a741b3db40..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId5 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9
deleted file mode 100644
index 69f63f7cd3d38ef2cee410a9416eee60dd7cfd4f..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId1
deleted file mode 100644
index ee0df02352663a36d691bb3081a31d94c5028c0d..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId1 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2
deleted file mode 100644
index 6846553e8ac3d3e4fee6d99e85266f45c4b7a798..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/EmptyElement.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/EmptyElement.class.uniqueId3
deleted file mode 100644
index 1b4302dfb07e50dd922bb3bfc0397dd9181191c2..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/EmptyElement.class.uniqueId3 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/EmptyElement.class.uniqueId8 b/build/tmp/compileJava/compileTransaction/stash-dir/EmptyElement.class.uniqueId8
deleted file mode 100644
index 5069ea14ef0a85701717a0b7537a043f6dcdd4af..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/EmptyElement.class.uniqueId8 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0
deleted file mode 100644
index a4d622e74ad0dac8a1e1ee24f055fadd19df68df..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId6
deleted file mode 100644
index 54c22d9aa466d3b1562090fce45b0f280f3518b3..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId6 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7
deleted file mode 100644
index c26b25067e3470b44d70d004d5f4c57388352c7a..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12
deleted file mode 100644
index 02776eb6f209146e6f2de1891a6ecafbc4aa688a..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId15 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId15
deleted file mode 100644
index ef5f30ff2197eb4fae3cd0571d46d41d2ace1ba5..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId15 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterFinder.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterFinder.class.uniqueId4
deleted file mode 100644
index 2a068ef24f0caadfc66eaeb040828cb122de1998..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterFinder.class.uniqueId4 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10
deleted file mode 100644
index 3eee0b6a9e0b6ef841b3a41e019f5871a34211a8..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId16 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId16
deleted file mode 100644
index 05ddcb141f461b8f1e4f42cb7b2c32083b234b7f..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId16 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3
deleted file mode 100644
index d2bbe7e11dd4d28c3fba73284af14ce15b59f73f..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId9 b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId9
deleted file mode 100644
index d2bbe7e11dd4d28c3fba73284af14ce15b59f73f..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId9 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1
deleted file mode 100644
index bf120cd5de3e083cfef4bb7079bfbbbd2f05fb97..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId12 b/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId12
deleted file mode 100644
index fe96542831296a4c3aaf59973ade237c17d4a0a6..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId12 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId11 b/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId11
deleted file mode 100644
index 0c04059815ab8a9ea3f38fb9b1752e87dac6fb40..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId11 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4
deleted file mode 100644
index af3536b151a408b96923e5356e098c9e646509d4..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Grid.class.uniqueId13 b/build/tmp/compileJava/compileTransaction/stash-dir/Grid.class.uniqueId13
deleted file mode 100644
index cedfc6abc7646d2aeb91d7df5227cbdb1cae0317..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Grid.class.uniqueId13 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Grid.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/Grid.class.uniqueId5
deleted file mode 100644
index cedfc6abc7646d2aeb91d7df5227cbdb1cae0317..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Grid.class.uniqueId5 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId7
deleted file mode 100644
index fff48ef4e9967a51eeca54cadce22b98a897ae4c..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId7 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 b/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11
deleted file mode 100644
index 6bda2c96ed0d078985d77b993144828ec7de1b9c..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId14 b/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId14
deleted file mode 100644
index d9ae8e3a8a6375c074840b3b24e35ce02a6d6b1e..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId14 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId10 b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId10
deleted file mode 100644
index 7a769b70875d147512dd0dc3f725d1c113981548..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId10 and /dev/null differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 4bd233e0eadb98e8fa5873e7b16630662e933ad2..b581eed029bcd9d3ac0e02103362957d29c9dab3 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 351abfe45780ac3aa3dab486bd37909748981d6f..241535ad21caa88d9dc9f06805b63b0593d3a18b 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -19,8 +19,10 @@ public class SimulatorApplication extends javafx.application.Application {
   private static final int SQUARE_HEIGHT = 30;
   public static final int INITIAL_FIRE_COUNT = 5;
   public static final int INITIAL_FIREFIGHTER_COUNT = 3;
-  public static final int INITIAL_CLOUD_COUNT = 2;
+  public static final int INITIAL_CLOUD_COUNT = 15;
   public static final int INITIAL_MOTORIZEDFIREFIGHTER_COUNT = 2;
+  public static final int INITIAL_MOUNTAIN_COUNT = 15;
+
   private Stage primaryStage;
   private Parent view;
   private void initializePrimaryStage(Stage primaryStage) {
@@ -45,7 +47,7 @@ public class SimulatorApplication extends javafx.application.Application {
     view = loader.load();
     Controller controller = loader.getController();
     controller.initialize(SQUARE_WIDTH, SQUARE_HEIGHT, COLUMN_COUNT, ROW_COUNT,
-            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_MOTORIZEDFIREFIGHTER_COUNT);
+            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_MOTORIZEDFIREFIGHTER_COUNT,INITIAL_MOUNTAIN_COUNT);
   }
 
   private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 8719a0a6feb61e6e9acae11ce37ac5310eddc159..b5f3cde65a57cbee5305ac5b521a9d103828d9a3 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -17,6 +17,7 @@ import util.Position;
 import view.Grid;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 import static java.util.Objects.requireNonNull;
@@ -63,16 +64,18 @@ public class Controller {
   private void repaintGrid(){
     int columnCount = board.columnCount();
     int rowCount = board.rowCount();
-    model.BoardElement[][] boardElements = new model.BoardElement[rowCount][columnCount];
+    HashMap<Position, ArrayList<BoardElement>> elementPositionGrid = new HashMap<>();
     for(int column = 0; column < columnCount; column++)
       for(int row = 0; row < rowCount; row++){
         if(board.getElementPosition().containsKey(new Position(row,column)) && board.getElementPosition().get(new Position(row,column)).size()!=0){
-          boardElements[row][column] = board.getElementPosition().get(new Position(row,column)).get(0);
+          elementPositionGrid.put(new Position(row,column),board.getElementPosition().get(new Position(row,column)));
         }else{
-          boardElements[row][column]=new EmptyElement();
+          ArrayList<BoardElement> x=new ArrayList<>();
+          x.add(new EmptyElement());
+          elementPositionGrid.put(new Position(row,column),x);
         }
       }
-    grid.repaint(boardElements);
+    grid.repaint(elementPositionGrid);
     updateGenerationLabel(board.stepNumber());
   }
 
@@ -109,9 +112,9 @@ public class Controller {
   }
 
   public void initialize(int squareWidth, int squareHeight, int columnCount,
-                         int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount) {
+                         int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount,int initialMountainCount) {
     grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
-    board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount);
+    board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount,initialMountainCount);
     board.initializeElements();
     repaintGrid();
   }
diff --git a/src/main/java/model/BoardElement.java b/src/main/java/model/BoardElement.java
index 4100f828a2f9ee1ee61bcfa5ac84e75df95168a9..7f50f975a82d7fc38520adf8ebbc8df67f8d495b 100644
--- a/src/main/java/model/BoardElement.java
+++ b/src/main/java/model/BoardElement.java
@@ -14,4 +14,6 @@ public interface BoardElement {
     Color getColor();
     Boolean accept(Visitor visitor);
     void initialize();
+    void update(GameBoard gameBoard , Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition);
+
 }
diff --git a/src/main/java/model/Builder/FireFirefightersBuilder.java b/src/main/java/model/Builder/FireFirefightersBuilder.java
index 81761717ce8a6893a77b43fe360a863d6aa6b095..53d18f891302d3885f5d5f803128802596cc1d87 100644
--- a/src/main/java/model/Builder/FireFirefightersBuilder.java
+++ b/src/main/java/model/Builder/FireFirefightersBuilder.java
@@ -1,13 +1,14 @@
 package model.Builder;
 
 public class FireFirefightersBuilder {
-    public void Build(int fires, int firefighters , int clouds , int motorizedFireFighter) {
+    public void Build(int fires, int firefighters , int clouds , int motorizedFireFighters ,int mountains) {
         ConcreteGameBuilder concreteGameBuilder;
         concreteGameBuilder =new ConcreteGameBuilder();
         concreteGameBuilder.setFire(fires)
                 .setFireFighter(firefighters)
                 .setCloud(clouds)
-                .setMotorizedFireFighter(motorizedFireFighter)
+                .setMotorizedFireFighter(motorizedFireFighters)
+                .setMountain(mountains)
                 .build();
     }
 }
diff --git a/src/main/java/model/Builder/GameManage.java b/src/main/java/model/Builder/GameManage.java
index 151135d213a60453e8c15cf0bbe1503da179fe65..c75cc378b936c389d960fbaf89759abc0eab0acd 100644
--- a/src/main/java/model/Builder/GameManage.java
+++ b/src/main/java/model/Builder/GameManage.java
@@ -5,6 +5,7 @@ import model.ExtinguishFire.Cloud;
 import model.ExtinguishFire.FireFighter;
 import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
+import model.Obstacle.Mountain;
 
 public class GameManage {
     private final int fires;
@@ -34,11 +35,14 @@ public class GameManage {
             new FireFighter(Color.BLUE);
         }
         for(int i=0;i<clouds;i++) {
-            new Cloud(Color.DARKBLUE);
+            new Cloud(Color.GRAY);
         }
         for(int i=0;i<motorizedFireFighters;i++) {
             new MotorizedFireFighter(Color.ORANGE);
         }
+        for(int i=0;i<mountains;i++) {
+            new Mountain(Color.BROWN);
+        }
         // TODO: 15/11/2023  la suite .... aussi l'initialisation va changer dans fire et firefighter
     }
 
diff --git a/src/main/java/model/EmptyElement.java b/src/main/java/model/EmptyElement.java
index 0834ed20164d8952c31219db4eef249683d40d72..ca676943d2f996ca331ecf9166c6175b03e03486 100644
--- a/src/main/java/model/EmptyElement.java
+++ b/src/main/java/model/EmptyElement.java
@@ -22,4 +22,9 @@ public class EmptyElement implements BoardElement{
     public void initialize() {
 
     }
+
+    @Override
+    public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) {
+
+    }
 }
diff --git a/src/main/java/model/ExtinguishFire/Cloud.java b/src/main/java/model/ExtinguishFire/Cloud.java
index f4db6c7e384e6567f90372334b415a010b09988e..e8b51c01e50407431af7fb04fca81ad882587370 100644
--- a/src/main/java/model/ExtinguishFire/Cloud.java
+++ b/src/main/java/model/ExtinguishFire/Cloud.java
@@ -14,7 +14,7 @@ import static model.GameBoard.randomPosition;
 
 public class Cloud implements ExtinguishFire{
 
-    Color color;
+    private final Color color;
 
     public Cloud(Color color){
         this.color=color;
diff --git a/src/main/java/model/ExtinguishFire/ExtinguishFire.java b/src/main/java/model/ExtinguishFire/ExtinguishFire.java
index 006a184b8dafa69d1dd97417c753609aa993d12c..c65c649b5c27c7a080feb45d9ea25e7f98962907 100644
--- a/src/main/java/model/ExtinguishFire/ExtinguishFire.java
+++ b/src/main/java/model/ExtinguishFire/ExtinguishFire.java
@@ -9,6 +9,6 @@ import java.util.HashMap;
 
 public interface ExtinguishFire extends BoardElement {
 
-    void update(GameBoard gameBoard , Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition);
+    //void update(GameBoard gameBoard , Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition);
 
 }
diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java
index 73e882fcd02475c97582e1ae6cffa1d7e8098679..4dd87bd179b5581f20a4c5f37f83aec4dfd8b30b 100644
--- a/src/main/java/model/ExtinguishFire/FireFighter.java
+++ b/src/main/java/model/ExtinguishFire/FireFighter.java
@@ -8,19 +8,18 @@ import model.Visitor.FireFinder;
 import model.Visitor.Visitor;
 import util.Position;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static model.GameBoard.elementPosition;
 
 public class FireFighter implements ExtinguishFire {
-    Color color;
-    public FireFighter(Color color){
-        this.color=color;
+    private final Color color;
+
+    public FireFighter(Color color) {
+        this.color = color;
         initialize();
     }
+
     @Override
     public Color getColor() {
         return color;
@@ -32,12 +31,12 @@ public class FireFighter implements ExtinguishFire {
     }
 
     @Override
-    public void initialize( ) {
-        CrossMountain crossMountain=new CrossMountain();
+    public void initialize() {
+        CrossMountain crossMountain = new CrossMountain();
         boolean canInitialise;
         Position position = GameBoard.randomPosition();
-        if(elementPosition.containsKey(position)) {
-            for (;;) {
+        if (elementPosition.containsKey(position)) {
+            for (; ; ) {
                 canInitialise = true;
                 for (BoardElement element : elementPosition.get(position)) {
                     if (element.accept(crossMountain)) {
@@ -62,37 +61,102 @@ public class FireFighter implements ExtinguishFire {
         }
         ArrayList<BoardElement> boardElements = new ArrayList<>();
         boardElements.add(this);
-        elementPosition.put(position,boardElements);
+        elementPosition.put(position, boardElements);
     }
 
     @Override
     public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) {
 
-            List<Position> firePositions = new ArrayList<>();
-            for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) {
-                for (BoardElement element : entry.getValue()) {
-                    if (element.accept(new FireFinder())) {
-                     firePositions.add(entry.getKey());
-                    }
+        List<Position> firePositions = new ArrayList<>();
+        for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) {
+            for (BoardElement element : entry.getValue()) {
+                if (element.accept(new FireFinder())) {
+                    firePositions.add(entry.getKey());
                 }
             }
-            Position newFirefighterPosition = gameBoard.neighborClosestToFire(position);
-            if(newElementPosition.containsKey(newFirefighterPosition)){
-                newElementPosition.get(newFirefighterPosition).add(this);
-            }
-            else{
-                ArrayList<BoardElement> boardElements = new ArrayList<>();
-                boardElements.add(this);
-                newElementPosition.put(newFirefighterPosition,boardElements);
+        }
+        Position newFirefighterPosition = gameBoard.neighborClosestToFire(position);
+        if (elementPosition.containsKey(newFirefighterPosition)) {
+            boolean canMove = true;
+            for (BoardElement boardElement : elementPosition.get(newFirefighterPosition)) {
+                if (boardElement.accept(new CrossMountain())) {
+                    canMove = false;
+                    break;
+                }
             }
-            extinguishPosition.add(newFirefighterPosition);
-            List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream()
-                    .filter(firePositions::contains).toList();
-            for(Position firePosition : neighborFirePositions) {
-                extinguishPosition.add(firePosition);
+            if (canMove) {
+                if (newElementPosition.containsKey(newFirefighterPosition)) {
+                    newElementPosition.get(newFirefighterPosition).add(this);
+                } else {
+                    ArrayList<BoardElement> boardElements = new ArrayList<>();
+                    boardElements.add(this);
+                    newElementPosition.put(newFirefighterPosition, boardElements);
+                }
+                extinguishPosition.add(newFirefighterPosition);
+                List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream()
+                        .filter(firePositions::contains).toList();
+                for (Position firePosition : neighborFirePositions) {
+                    extinguishPosition.add(firePosition);
+                }
+
+            } else {
+                List<Position> neighbors = gameBoard.neighbors(position);
+                for (Position position1 : neighbors) {
+                    canMove = true;
+                    if (!elementPosition.containsKey(position1)){
+                        ArrayList<BoardElement> boardElements = new ArrayList<>();
+                        boardElements.add(this);
+                        newElementPosition.put(position, boardElements);
+                        extinguishPosition.add(position1);
+                        List<Position> neighborFirePositions = gameBoard.neighbors(position1).stream()
+                                .filter(firePositions::contains).toList();
+                        for (Position firePosition : neighborFirePositions) {
+                            extinguishPosition.add(firePosition);
+                        }
+                        break;
+                    }
+                    for (BoardElement boardElement : elementPosition.get(position1)) {
+                        if (boardElement.accept(new CrossMountain())) {
+                            canMove = false;
+                            break;
+                        }
+                    }
+                    if (canMove) {
+                        newFirefighterPosition = position1;
+                        if (newElementPosition.containsKey(newFirefighterPosition)) {
+                            newElementPosition.get(newFirefighterPosition).add(this);
+                        } else {
+                            ArrayList<BoardElement> boardElements = new ArrayList<>();
+                            boardElements.add(this);
+                            newElementPosition.put(newFirefighterPosition, boardElements);
+                        }
+                        extinguishPosition.add(newFirefighterPosition);
+                        List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream()
+                                .filter(firePositions::contains).toList();
+                        for (Position firePosition : neighborFirePositions) {
+                            extinguishPosition.add(firePosition);
+                        }
+                        break;
+                    }
+                }
+                if (!canMove) {
+                    if (newElementPosition.containsKey(position)) {
+                        newElementPosition.get(position).add(this);
+                    } else {
+                        ArrayList<BoardElement> boardElements = new ArrayList<>();
+                        boardElements.add(this);
+                        newElementPosition.put(position, boardElements);
+                    }
+                }
+
             }
 
         }
-
+        else{
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(this);
+            newElementPosition.put(position, boardElements);
+        }
+    }
 }
 
diff --git a/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
index 5d04606784c5f64e617b39e350fe85e3019c47ee..60b855dcfc447652a1083cf3156be0f3dc489017 100644
--- a/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
+++ b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
@@ -17,7 +17,7 @@ import static model.GameBoard.elementPosition;
 
 public class MotorizedFireFighter implements ExtinguishFire {
 
-    Color color;
+    private final Color color;
 
     public MotorizedFireFighter(Color color){
         this.color=color;
diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java
index 1d156d3ea1f521735df67fdaa6e27dd653205060..f294189b06c67ba2141102b19776ff236ef02ea7 100644
--- a/src/main/java/model/Flammable/Fire.java
+++ b/src/main/java/model/Flammable/Fire.java
@@ -33,13 +33,14 @@ public class Fire implements Flammable{
     @Override
     public void initialize() {
         FireFinder fireFinder=new FireFinder();
+        CrossMountain crossMountain = new CrossMountain();
         Position position = GameBoard.randomPosition();
         boolean canInitialise;
         if(GameBoard.elementPosition.containsKey(position)) {
             for (;;) {
                 canInitialise=true;
                 for (BoardElement element : GameBoard.elementPosition.get(position)) {
-                    if (element.accept(fireFinder)) {
+                    if (element.accept(fireFinder) || element.accept(crossMountain)) {
                         canInitialise=false;
                         break;
                     }
@@ -63,7 +64,7 @@ public class Fire implements Flammable{
         GameBoard.elementPosition.put(position,boardElements);
     }
 
-    @Override   // TODO: 15/11/2023
+    @Override
     public void update(GameBoard gameBoard , Position position,HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) {
         if(extinguishPosition.contains(position)){
             return ;
@@ -82,7 +83,7 @@ public class Fire implements Flammable{
                     continue;
                 if(GameBoard.elementPosition.containsKey(newPosition)) {
                     for(BoardElement boardElement : GameBoard.elementPosition.get(newPosition)){
-                        if(boardElement.accept(new FireFinder()) && boardElement.accept(new CrossRoad()) && boardElement.accept(new CrossMountain())){
+                        if(boardElement.accept(new FireFinder()) || boardElement.accept(new CrossRoad()) || boardElement.accept(new CrossMountain())){
                             break;
                         }
                         else if(!boardElement.accept( new FireFinder())&& !boardElement.accept(new CrossRoad()) && !boardElement.accept(new CrossMountain())){
@@ -95,7 +96,6 @@ public class Fire implements Flammable{
                     ArrayList<BoardElement> boardElements = new ArrayList<>();
                     boardElements.add(this);
                     newElementPosition.put(newPosition,boardElements);
-                    //System.out.println(GameBoard.elementPosition.get(position).get(0).getColor());
                 }
 
             }
diff --git a/src/main/java/model/Flammable/Flammable.java b/src/main/java/model/Flammable/Flammable.java
index 325c6d3012ce69d730224122c935bfd377258c7a..72fb4d693d7e7d1467e839ace1227d2418f67662 100644
--- a/src/main/java/model/Flammable/Flammable.java
+++ b/src/main/java/model/Flammable/Flammable.java
@@ -10,5 +10,5 @@ import java.util.List;
 
 public interface Flammable extends BoardElement{
 
-    void update(GameBoard gameBoard, Position position,HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition);
+    //void update(GameBoard gameBoard, Position position,HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition);
 }
diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java
index 1cb840f0c4a2bb1e938be7fda3b87821d4d1b5b6..9a4d9e145edfb5ec6e29e9e946ad5844df11fca2 100644
--- a/src/main/java/model/GameBoard.java
+++ b/src/main/java/model/GameBoard.java
@@ -16,6 +16,8 @@ public class GameBoard implements Board{
     private int initialFirefighterCount;
     private int initialCloudCount;
     private int initialMotorizedFireFighterCount;
+    private int initialMountainCount;
+
     private int step = 0;
     static Random randomGenerator = new Random();
 
@@ -25,18 +27,19 @@ public class GameBoard implements Board{
 
     public static HashMap<Position, ArrayList<BoardElement>> elementPosition=new HashMap<>();
 
-    public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount) {
+    public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount,int initialMountainCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
         this.initialFirefighterCount = initialFirefighterCount;
         this.initialCloudCount = initialCloudCount;
         this.initialMotorizedFireFighterCount=initialMotorizedFireFighterCount;
+        this.initialMountainCount = initialMountainCount;
     }
 
     public void initializeElements(){
         FireFirefightersBuilder fireFirefighterBuilder=new FireFirefightersBuilder();
-        fireFirefighterBuilder.Build(this.initialFireCount,this.initialFirefighterCount,this.initialCloudCount,this.initialMotorizedFireFighterCount);
+        fireFirefighterBuilder.Build(this.initialFireCount,this.initialFirefighterCount,this.initialCloudCount,this.initialMotorizedFireFighterCount,this.initialMountainCount);
     }
 
     public static Position randomPosition() {
@@ -50,8 +53,8 @@ public class GameBoard implements Board{
             for(BoardElement element : entry.getValue()){
 
                 if (!element.accept(new FireFinder())){
-                    ExtinguishFire element1 = (ExtinguishFire) element;
-                    element1.update(this,entry.getKey(),newElementPosition,extinguishPosition);
+
+                    element.update(this,entry.getKey(),newElementPosition,extinguishPosition);
                 }
             }
         }
diff --git a/src/main/java/model/Obstacle/Mountain.java b/src/main/java/model/Obstacle/Mountain.java
index 36642561fef73104618563ff81e54732a4ef2f6a..d53d4cef0837361c4797699622fdbe9ab5fe1fbc 100644
--- a/src/main/java/model/Obstacle/Mountain.java
+++ b/src/main/java/model/Obstacle/Mountain.java
@@ -1,4 +1,56 @@
 package model.Obstacle;
 
-public class Mountain {
+import javafx.scene.paint.Color;
+import model.BoardElement;
+import model.GameBoard;
+import model.Visitor.FireFinder;
+import model.Visitor.Visitor;
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import static model.GameBoard.elementPosition;
+
+public class Mountain implements Obstacles{
+
+    private final Color color;
+
+    public Mountain(Color color){
+        this.color=color;
+        initialize();
+    }
+    @Override
+    public Color getColor() {
+        return color;
+    }
+
+    @Override
+    public Boolean accept(Visitor visitor) {
+        return visitor.visit(this);
+    }
+
+    @Override
+    public void initialize() {
+        Position position = GameBoard.randomPosition();
+        if (elementPosition.containsKey(position))
+            elementPosition.get(position).add(this);
+        else {
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(this);
+            elementPosition.put(position, boardElements);
+        }
+    }
+
+    @Override
+    public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) {
+        if(newElementPosition.containsKey(position))
+            newElementPosition.get(position).add(this);
+        else{
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(this);
+            newElementPosition.put(position,boardElements);
+        }
+    }
 }
diff --git a/src/main/java/model/Obstacle/Obstacles.java b/src/main/java/model/Obstacle/Obstacles.java
index c1cc3cd94179786e60ab4183e34b820fd37bc23c..c913b4a72f4c407f06db71a4f1c70f5b9aa0bdf9 100644
--- a/src/main/java/model/Obstacle/Obstacles.java
+++ b/src/main/java/model/Obstacle/Obstacles.java
@@ -1,11 +1,15 @@
 package model.Obstacle;
 
 import model.BoardElement;
+import model.GameBoard;
 import util.Position;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 public interface Obstacles extends BoardElement {
 
+    //void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition);
 
 }
diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java
index 042dc7b54ac7b2d11202a6d3b53727bf1c450baf..1091bebfb81bf8990409ab5439f96d844af7440d 100644
--- a/src/main/java/view/FirefighterGrid.java
+++ b/src/main/java/view/FirefighterGrid.java
@@ -6,42 +6,52 @@ import javafx.util.Pair;
 import model.BoardElement;
 import util.Position;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 public class FirefighterGrid extends Canvas implements Grid<model.BoardElement>{
 
-    private void paintElementAtPosition(model.BoardElement element, Position position) {
-        paintSquare(position.row(), position.column(), element.getColor());
+
+    private void paintElementAtPosition(ArrayList<BoardElement> elementsAtPosition, Position position) {
+        paintSquare(position.row(), position.column(), elementsAtPosition);
     }
+
+    private void paintSquare(int row, int column, ArrayList<BoardElement> elementsAtPosition) {
+        double squareWidthDivide = squareWidth / elementsAtPosition.size();
+        double lineWidth = 2;
+
+        for (int i = 0; i < elementsAtPosition.size(); i++) {
+            BoardElement element = elementsAtPosition.get(i);
+
+
+            getGraphicsContext2D().setFill(element.getColor());
+            getGraphicsContext2D().fillRect(row * squareHeight, (column * squareWidth) + (i * squareWidthDivide), squareHeight, squareWidthDivide);
+            if(i!=0) {
+                getGraphicsContext2D().setFill(Color.WHITE);
+                getGraphicsContext2D().fillRect(row * squareHeight, (column * squareWidth) + ((i) * squareWidthDivide) - lineWidth / 2, squareHeight, lineWidth);
+            }
+        }
+    }
+
     private int squareWidth;
     private int squareHeight;
     private int columnCount;
     private int rowCount;
 
-    @Override
+    /*@Override
     public void repaint(List<Pair<Position, model.BoardElement>> positionedElements) {
-        clear(positionedElements);
-        paint(positionedElements);
-        paintLines();
-    }
+    }*/
 
     private void clear(List<Pair<Position, BoardElement>> positionedElements) {
-        for (Pair<Position, BoardElement> positionElement : positionedElements) {
-            Position position = positionElement.getKey();
-            clearSquare(position.row(), position.column());
-        }
-    }
 
-    private void paint(List<Pair<Position, BoardElement>> positionedElements) {
-        for(Pair<Position, BoardElement> pair : positionedElements){
-            paintElementAtPosition(pair.getValue(), pair.getKey());
-        }
     }
 
+
     @Override
-    public void repaint(model.BoardElement[][] elements) {
+    public void repaint(HashMap<Position, ArrayList<BoardElement>> elementPositionGrid) {
         clear();
-        paint(elements);
+        paint(elementPositionGrid);
         paintLines();
     }
 
@@ -49,10 +59,10 @@ public class FirefighterGrid extends Canvas implements Grid<model.BoardElement>{
         getGraphicsContext2D().clearRect(0,0,getWidth(), getHeight());
     }
 
-    private void paint(model.BoardElement[][] elements) {
+    private void paint(HashMap<Position, ArrayList<BoardElement>> elementPositionGrid) {
         for(int column = 0; column < columnCount; column++)
             for(int row = 0; row < rowCount; row++){
-                paintElementAtPosition(elements[row][column], new Position(row, column));
+                paintElementAtPosition(elementPositionGrid.get(new Position(row, column)),new Position(row,column));
             }
     }
 
@@ -87,10 +97,7 @@ public class FirefighterGrid extends Canvas implements Grid<model.BoardElement>{
             getGraphicsContext2D().strokeLine(0, row*squareHeight, getWidth(), row*squareHeight);
     }
 
-    private void paintSquare(int row, int column, Color color){
-        getGraphicsContext2D().setFill(color);
-        getGraphicsContext2D().fillRect(row*squareHeight,column*squareWidth,squareHeight,squareWidth);
-    }
+
 
     private void clearSquare(int row, int column){
         getGraphicsContext2D().clearRect(row*squareHeight,column*squareWidth,squareHeight,squareWidth);
diff --git a/src/main/java/view/Grid.java b/src/main/java/view/Grid.java
index 411850b3c029b1162b85eaae3cf521c474b50a6e..dc5d424a6c42b791ec28ad1bd83fe42b26e7727e 100644
--- a/src/main/java/view/Grid.java
+++ b/src/main/java/view/Grid.java
@@ -4,6 +4,8 @@ import javafx.util.Pair;
 import model.BoardElement;
 import util.Position;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -18,7 +20,7 @@ public interface Grid<E> {
    *
    * @param elements A list of pairs, each containing a position and the element to be displayed at that position.
    */
-  void repaint(List<Pair<Position, E>> elements);
+ // void repaint(List<Pair<Position, E>> elements);
 
   /**
    * Repaint the grid with a two-dimensional array of elements. The array's dimensions should match
@@ -53,6 +55,6 @@ public interface Grid<E> {
    */
   int rowCount();
 
-  void repaint(BoardElement[][] boardElements);
+  void repaint(HashMap<Position, ArrayList<BoardElement>> elementPositionGrid);
 }