diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index d300017db9d3689bf20d9b7e8e88687e2330937a..356014674fb63d4fdcabb77d2a8a71be252803d0 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.bin and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock
index c7d4c6e18cf7dca7bf62b6f679d816a43df9a1b9..364735a916720d347b85ceef00df9a9a2254aa90 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.lock and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin
index 98488ecb977608b232ad6304aca455824b3d58d9..c66a162ad97620144152aa3cbeb67b4087a68adb 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.bin and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock
index 50800a82221e8663b00c731901bb525155446144..fd6eb11de62d8a1380c454eda64c76dbbd9426dd 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.lock and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin
index 169a69f92254ccb8dcafdda9e3fb0ab138b4a1d6..bc8e5d2dfc298a80508290e67d34e5f0a7146d78 100644
Binary files a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index f3c70417fb48092deb323db99be6b2f95b79f083..bdb8cb7aea7f8ef6495de3bf0c9c77121eb66ae2 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/Project Repports/Diagram b/Project Repports/Diagram
new file mode 100644
index 0000000000000000000000000000000000000000..6f0ca776096d54b1b3ea78c84f4e0a13d2b73430
--- /dev/null
+++ b/Project Repports/Diagram	
@@ -0,0 +1,191 @@
+@startuml
+
+' Enum: ModelElement
+enum ModelElement {
+    FIREFIGHTER
+    FIRE
+    CLOUD
+    ROAD
+    EMPTY
+    MOUNTAIN
+    FIRETRUCK
+    ROCKS
+}
+
+' Class: Position
+class Position {
+    - row: int
+    - column: int
+    + Position(row: int, column: int)
+    + getRow(): int
+    + getColumn(): int
+}
+
+' Interface: Strategy
+interface Strategy {
+    + update(): List<Position>
+    + getModelPositions(): List<Position>
+    + getFirePositions(): Set<Position>
+}
+
+' Class: FireTruckMovementStrategy
+class FireTruckMovementStrategy {
+    - targetStrategy: TargetStrategy
+    - fireTruckPositions: List<Position>
+    - firePositions: Set<Position>
+    - neighbors: Map<Position, List<Position>>
+    + FireTruckMovementStrategy(firefighterPositions: List<Position>, firePositions: Set<Position>, neighbors: Map<Position, List<Position>>)
+    + update(): List<Position>
+    + nextValidPosition(currentPosition: Position): Position
+    + extinguishNearbyFires(position: Position, modifiedPositions: List<Position>)
+    + extinguishAll(positions: List<Position>)
+}
+
+' Class: SimpleFireSpreadStrategy
+class SimpleFireSpreadStrategy {
+    - firePositions: Set<Position>
+    - neighbors: Map<Position, List<Position>>
+    - mountainPositions: Set<Position>
+    - roadPositions: Set<Position>
+    - rocksPositions: Set<Position>
+    - step: int
+    + SimpleFireSpreadStrategy(firePositions: Set<Position>, neighbors: Map<Position, List<Position>>, mountainPositions: Set<Position>, roadPositions: Set<Position>, rocksPositions: Set<Position>, step: int)
+    + update(): List<Position>
+    + spreadFire(firePosition: Position, newFirePositions: Set<Position>)
+    + canPropagateTo(newPosition: Position): boolean
+}
+
+' Class: Initializer
+class Initializer {
+    - columnCount: int
+    - rowCount: int
+    - initialFireCount: int
+    - initialFirefighterCount: int
+    - initialRoadCount: int
+    - initialCloudCount: int
+    - initialMountainCount: int
+    - initialFireTruckCount: int
+    - initialRocksCount: int
+    - positions: Position[][]
+    - neighbors: Map<Position, List<Position>>
+    - firePositions: Set<Position>
+    - firefighterPositions: List<Position>
+    - RoadPositions: List<Position>
+    - cloudPositions: List<Position>
+    - mountainsPositions: Set<Position>
+    - FireTruckPositions: List<Position>
+    - rocksPositions: Set<Position>
+    - randomGenerator: Random
+    + Initializer(columnCount: int, rowCount: int, initialFireCount: int, initialFirefighterCount: int, initialRoadCount: int, initialCloudCount: int, initialMountainCount: int, initialRocksCount: int, initialFireTruckCount: int)
+    + initializePositions(): void
+    + initializeNeighbors(): void
+    + initializeElements(): void
+    + addRandomPositions(targetCollection: Collection<Position>, count: int)
+}
+
+' Class: NeighborManager
+class NeighborManager {
+    - neighbors: Map<Position, List<Position>>
+    + NeighborManager(rowCount: int, columnCount: int)
+    + getNeighbors(): Map<Position, List<Position>>
+    + getAdjacentPositions(position: Position): List<Position>
+}
+
+' Class: TargetStrategy
+class TargetStrategy {
+    + calculateTarget(fireTruckPosition: Position, firePositions: Set<Position>): Position
+}
+
+' Class: Board
+class Board {
+    - positions: Position[][]
+    - modelElements: Map<Position, ModelElement>
+    + Board(rowCount: int, columnCount: int)
+    + setModelElement(position: Position, element: ModelElement): void
+    + getModelElement(position: Position): ModelElement
+}
+
+' Class: BoardManager
+class BoardManager {
+    - board: Board
+    - initializer: Initializer
+    + BoardManager(board: Board, initializer: Initializer)
+    + initializeBoard(): void
+    + updateBoard(): void
+}
+
+' Class: CloudStrategy
+class CloudStrategy {
+    - cloudPositions: Set<Position>
+    + CloudStrategy(cloudPositions: Set<Position>)
+    + updateCloud(): Set<Position>
+    + addCloudPosition(position: Position): void
+}
+
+' Class: FirefighterBoard
+class FirefighterBoard {
+    - firefighterPositions: List<Position>
+    + FirefighterBoard(firefighterPositions: List<Position>)
+    + updateFirefighterPositions(): void
+    + addFirefighter(position: Position): void
+}
+
+' Class: FirefighterMovementStrategy
+class FirefighterMovementStrategy {
+    - firefighterPositions: List<Position>
+    - neighbors: Map<Position, List<Position>>
+    + FirefighterMovementStrategy(firefighterPositions: List<Position>, neighbors: Map<Position, List<Position>>)
+    + update(): List<Position>
+    + nextValidPosition(currentPosition: Position): Position
+    + moveToNextPosition(): Position
+}
+
+' Relationship: FireTruckMovementStrategy implements Strategy
+FireTruckMovementStrategy -|> Strategy : implements
+
+' Relationship: SimpleFireSpreadStrategy implements Strategy
+SimpleFireSpreadStrategy -|> Strategy : implements
+
+' Relationship: Initializer uses NeighborManager
+Initializer --> NeighborManager : uses
+
+' Relationship: FireTruckMovementStrategy and SimpleFireSpreadStrategy depend on Position
+FireTruckMovementStrategy --> Position : depends on
+SimpleFireSpreadStrategy --> Position : depends on
+
+' Relationship: FireTruckMovementStrategy and SimpleFireSpreadStrategy depend on neighbors
+FireTruckMovementStrategy --> Map : depends on
+SimpleFireSpreadStrategy --> Map : depends on
+
+' Relationship: FireTruckMovementStrategy uses TargetStrategy
+FireTruckMovementStrategy --> TargetStrategy : uses
+
+' Relationship: ModelElement is an enum
+ModelElement ..> FireTruckMovementStrategy : used by
+ModelElement ..> SimpleFireSpreadStrategy : used by
+
+' Relationship: Position used by Initializer for grid setup
+Position --> Initializer : used by
+
+' Relationship: Position used by FireTruckMovementStrategy and SimpleFireSpreadStrategy
+Position --> FireTruckMovementStrategy : used by
+Position --> SimpleFireSpreadStrategy : used by
+
+' Relationship: Board is used by BoardManager
+Board --> BoardManager : used by
+
+' Relationship: CloudStrategy uses Position
+CloudStrategy --> Position : uses
+
+' Relationship: BoardManager uses Board and Initializer
+BoardManager --> Board : uses
+BoardManager --> Initializer : uses
+
+' Relationship: FirefighterMovementStrategy uses Position
+FirefighterMovementStrategy --> Position : uses
+
+' Relationship: FirefighterMovementStrategy and FirefighterBoard use Board
+FirefighterBoard --> Board : uses
+FirefighterMovementStrategy --> Board : uses
+
+@enduml
diff --git a/Project Repports/Diagram Projet Programation.pdf b/Project Repports/Diagram Projet Programation.pdf
deleted file mode 100644
index 1b75234c19257ca2faa1c442f1bfae06db4a02cc..0000000000000000000000000000000000000000
Binary files a/Project Repports/Diagram Projet Programation.pdf and /dev/null differ
diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class
index dca601056c92248e6d1d362ac5a32c00ccbdf758..64108db13ab8040948211250032367c6392ccdcb 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/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class
index 208834a7ab675a90bb96e24c4f98f0fa85bec350..f61f42ca6ccdd9a05f2f36b96e3ac19a79295c29 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/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class
index 64f0b49ed5863b2a25cce8a921606eef79bfabdb..621f52487062cf2afe1a5bf3435cf8b098e69dcc 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/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index cf8f879d86f1c8997a5f49fa9f7ba5d4a2a605d3..a076ff2fe10d371efcb37f1bf51bb59b15becc60 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 18534c73fd9becd05871a9c40031c1d2d333f044..8900e4bd34e6c066eeb8bce3f24a9e03c274bf0e 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -20,10 +20,10 @@ public class SimulatorApplication extends javafx.application.Application {
     public static final int INITIAL_FIRE_COUNT = 5;
     public static final int INITIAL_FIREFIGHTER_COUNT = 4;
     public static final int  INITIAL_ROAD_COUNT = 10;
-    public static final int  INITIAL_CLOUD_COUNT = 5;
+    public static final int  INITIAL_CLOUD_COUNT = 3;
     public static final int  INITIAL_MOUTAIN_COUNT = 5;
-    public static final int  INITIAL_FIRE_TRUCK_COUNT = 3;
-    public static final int  INITIAL_ROCKS_COUNT = 5;
+    public static final int  INITIAL_FIRE_TRUCK_COUNT = 2;
+    public static final int  INITIAL_ROCKS_COUNT = 3;
 
     private Stage primaryStage;
     private Parent view;
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 74eb05a8d545f3fb8d28376a6290fb996ac7a293..6ab8b8facd4c41c768ae89cc7a7a3e408653d272 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -4,7 +4,7 @@ import util.Position;
 import javafx.util.Pair;
 import java.util.*;
 
-import static model.ModelElement.CLOUD;
+
 
 public class FirefighterBoard implements Board<List<ModelElement>> {
     private final int columnCount;
@@ -19,12 +19,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
     private List<Position> firefighterPositions;
     private Set<Position> firePositions;
-    private Set<Position> roadPositions;
+    private final Set<Position> roadPositions;
     private final Map<Position, List<Position>> neighbors;
     private final Position[][] positions;
     private List<Position> cloudPositions;
-    private Set<Position> moutainsPositions;
-    private Set<Position> rocksPositions;
+    private  Set<Position> moutainsPositions;
+    private  Set<Position> rocksPositions;
     private  List<Position> fireTruckPositions;
 
     private int step = 0;
@@ -242,7 +242,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
     public List<Pair<Position, ModelElement>> getUpdatedElements() {
         List<Pair<Position, ModelElement>> updatedElements = new ArrayList<>();
-
+        System.out.println(initialFireCount);
         // Add fire positions
         for (Position firePosition : firePositions) {
             updatedElements.add(new Pair<>(firePosition, ModelElement.FIRE));
@@ -280,149 +280,3 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
 
 
-/*
-import util.*;
-
-import java.util.*;
-
-
-public class FirefighterBoard implements Board<List<ModelElement>> {
-  private final int columnCount;
-  private final int rowCount;
-  private final int initialFireCount;
-  private final int initialFirefighterCount;
-  private final TargetStrategy targetStrategy = new TargetStrategy();
-  private List<Position> firefighterPositions;
-  private Set<Position> firePositions;
-  private Map<Position, List<Position>> neighbors = new HashMap();
-  private final Position[][] positions;
-  private int step = 0;
-  private final Random randomGenerator = new Random();
-
-  public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) {
-    this.columnCount = columnCount;
-    this.rowCount = rowCount;
-    this.positions = new Position[rowCount][columnCount];
-    for (int column = 0; column < columnCount; column++)
-      for (int row = 0; row < rowCount; row++)
-        positions[row][column] = new Position(row, column);
-    for (int column = 0; column < columnCount; column++)
-      for (int row = 0; row < rowCount; row++) {
-        List<Position> list = new ArrayList<>();
-        if (row > 0) list.add(positions[row - 1][column]);
-        if (column > 0) list.add(positions[row][column - 1]);
-        if (row < rowCount - 1) list.add(positions[row + 1][column]);
-        if (column < columnCount - 1) list.add(positions[row][column + 1]);
-        neighbors.put(positions[row][column], list);
-      }
-    this.initialFireCount = initialFireCount;
-    this.initialFirefighterCount = initialFirefighterCount;
-    initializeElements();
-  }
-
-  public void initializeElements() {
-    firefighterPositions = new ArrayList<>();
-    firePositions = new HashSet<>();
-    for (int index = 0; index < initialFireCount; index++)
-      firePositions.add(randomPosition());
-    for (int index = 0; index < initialFirefighterCount; index++)
-      firefighterPositions.add(randomPosition());
-  }
-
-  private Position randomPosition() {
-    return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
-  }
-
-  @Override
-  public List<ModelElement> getState(Position position) {
-    List<ModelElement> result = new ArrayList<>();
-    for (Position firefighterPosition : firefighterPositions)
-      if (firefighterPosition.equals(position))
-        result.add(ModelElement.FIREFIGHTER);
-    if (firePositions.contains(position))
-      result.add(ModelElement.FIRE);
-    return result;
-  }
-
-  @Override
-  public int rowCount() {
-    return rowCount;
-  }
-
-  @Override
-  public int columnCount() {
-    return columnCount;
-  }
-
-  public List<Position> updateToNextGeneration() {
-    List<Position> modifiedPositions = updateFirefighters();
-    modifiedPositions.addAll(updateFires());
-    step++;
-    return modifiedPositions;
-  }
-
-  private List<Position> updateFires() {
-    List<Position> modifiedPositions = new ArrayList<>();
-    if (step % 2 == 0) {
-      List<Position> newFirePositions = new ArrayList<>();
-      for (Position fire : firePositions) {
-        newFirePositions.addAll(neighbors.get(fire));
-      }
-      firePositions.addAll(newFirePositions);
-      modifiedPositions.addAll(newFirePositions);
-    }
-    return modifiedPositions;
-
-  }
-
-  @Override
-  public int stepNumber() {
-    return step;
-  }
-
-  private List<Position> updateFirefighters() {
-    List<Position> modifiedPosition = new ArrayList<>();
-    List<Position> firefighterNewPositions = new ArrayList<>();
-    for (Position firefighterPosition : firefighterPositions) {
-      Position newFirefighterPosition =
-              targetStrategy.neighborClosestToFire(firefighterPosition,
-                      firePositions, neighbors);
-      firefighterNewPositions.add(newFirefighterPosition);
-      extinguish(newFirefighterPosition);
-      modifiedPosition.add(firefighterPosition);
-      modifiedPosition.add(newFirefighterPosition);
-      List<Position> neighborFirePositions = neighbors.get(newFirefighterPosition).stream()
-              .filter(firePositions::contains).toList();
-      for (Position firePosition : neighborFirePositions)
-        extinguish(firePosition);
-      modifiedPosition.addAll(neighborFirePositions);
-    }
-    firefighterPositions = firefighterNewPositions;
-    return modifiedPosition;
-  }
-
-  @Override
-  public void reset() {
-    step = 0;
-    initializeElements();
-  }
-
-  private void extinguish(Position position) {
-    firePositions.remove(position);
-  }
-
-
-  @Override
-  public void setState(List<ModelElement> state, Position position) {
-    firePositions.remove(position);
-    for (; ; ) {
-      if (!firefighterPositions.remove(position)) break;
-    }
-    for (ModelElement element : state) {
-      switch (element) {
-        case FIRE -> firePositions.add(position);
-        case FIREFIGHTER -> firefighterPositions.add(position);
-      }
-    }
-  }
-}*/
\ No newline at end of file
diff --git a/src/main/java/model/Initializer.java b/src/main/java/model/Initializer.java
index cdf9a61349cd9e97b28023ab8cdd72311c517122..38d44f464a6be37e5a98670c3e3565ce3429e601 100644
--- a/src/main/java/model/Initializer.java
+++ b/src/main/java/model/Initializer.java
@@ -32,7 +32,8 @@ public class Initializer {
     private final Random randomGenerator = new Random();
 
 
-    public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount, int initialMoutainCount, int initialRocksCount,int initialFireTruckCount) {
+    public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,
+                       int initialcloudCount, int initialMoutainCount, int initialRocksCount,int initialFireTruckCount) {
         this.columnCount = columnCount;
         this.rowCount = rowCount;
         this.initialFireCount = initialFireCount;
@@ -52,9 +53,7 @@ public class Initializer {
         this.mountainsPositions = new HashSet<>();
         this.FireTruckPositions = new ArrayList<>();
         this.rocksPositions = new HashSet<>();
-        initializePositions();
-        initializeNeighbors();
-        initializeElements();
+
 
     }
     private void initializePositions() {