diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 6869f2186c80cc88a4c161b45fcf63d386fc091a..3c796977333c8a1c7c907f059e4e0161c3f6901e 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -20,6 +20,7 @@ public class SimulatorApplication extends javafx.application.Application {
   public static final int INITIAL_FIRE_COUNT = 3;
   public static final int INITIAL_FIREFIGHTER_COUNT = 6;
   public static final int INITIAL_CLOUD_COUNT = 6;
+  public static final int INITIAL_MONTAIN_COUNT = 4;
 
   private Stage primaryStage;
   private Parent view;
@@ -45,7 +46,7 @@ public class SimulatorApplication extends javafx.application.Application {
     view = loader.load();
     Controller controller = loader.getController();
     controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
-            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT);
+            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_MONTAIN_COUNT);
   }
 
   private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index 7d23201b5b07f2ccfcf89b16b2be3eff85f259d0..4d0ca769ec200c76646912b22028fc4bca05bf60 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -91,6 +91,9 @@ public class Controller {
       if (model instanceof Cloud){
         return new CLOUD();
       }
+      if(model instanceof Montains){
+        return new MONTAINS();
+      }
 
     }
 
@@ -130,9 +133,9 @@ public class Controller {
   }
 
   public void initialize(int squareWidth, int squareHeight, int columnCount,
-                                int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudsCount) {
+                                int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudsCount, int initialMontainsCount) {
     grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
-    this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudsCount));
+    this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudsCount, initialMontainsCount));
     repaintGrid();
   }
 
diff --git a/src/main/java/model/BoardMethods.java b/src/main/java/model/BoardMethods.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ddf81196593f40de66fbb5b22336aff40e70962
--- /dev/null
+++ b/src/main/java/model/BoardMethods.java
@@ -0,0 +1,37 @@
+package model;
+
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+
+public class BoardMethods {
+    int columnCount;
+    int rowCount;
+
+    private final Random randomGenerator = new Random();
+
+     public void extinguish(Position position, Set<Position> firPositions) {
+         firPositions.remove(position);
+    }
+
+     public  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()));
+        if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1));
+        if (position.row() < rowCount - 1) list.add(new Position(position.row() + 1, position.column()));
+        if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1));
+        return list;
+    }
+
+    public Position randomPosition() {
+        if (rowCount <= 0 || columnCount <= 0) {
+            throw new IllegalArgumentException("Les limites doivent être positives");
+        }
+
+        return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
+
+    }
+}
diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java
index cfcc6f65c9d5fb8009f5b8084b83949b7abd3dd5..a18597cf7101a4589426a7f479fc06224ba1deed 100644
--- a/src/main/java/model/Cloud.java
+++ b/src/main/java/model/Cloud.java
@@ -4,12 +4,11 @@ import util.Position;
 
 import java.util.*;
 
-public class Cloud implements ModelElement{
+public class Cloud extends BoardMethods implements ModelElement{
     private List<Position> cloudsPositions;
-    private int rowCount;
-    private int columnCount;
 
-    private final Random randomGenerator = new Random();
+
+
 
     public Cloud() {
     }
@@ -35,13 +34,6 @@ public class Cloud implements ModelElement{
     }
 
 
-    public Position randomPosition() {
-        if (rowCount <= 0 || columnCount <= 0) {
-            throw new IllegalArgumentException("Les limites doivent être positives");
-        }
-        return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
-
-    }
 
     private Position randomMoveToNeighbor(Position position){
         List<Position> list = new ArrayList<>();
@@ -52,14 +44,7 @@ public class Cloud implements ModelElement{
 
         return list.get((int) (Math.random() * list.size()));
     }
-    private List<Position> neighbors(Position position) {
-        List<Position> list = new ArrayList<>();
-        if (position.row() > 0) list.add(new Position(position.row() - 1, position.column()));
-        if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1));
-        if (position.row() < rowCount - 1) list.add(new Position(position.row() + 1, position.column()));
-        if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1));
-        return list;
-    }
+
     public List<Position> updateCouds(Set<Position> firePositions) {
         List<Position> result = new ArrayList<>();
         List<Position> cloudsNewPositions = new ArrayList<>();
@@ -79,9 +64,6 @@ public class Cloud implements ModelElement{
         return result;
     }
 
-    private void extinguish(Position position,Set<Position> firePositions ) {
-        firePositions.remove(position);
-    }
 
 
 
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 44a839f13fc84f09eabaeefc02a8a35920d94b0e..7022bd7f68b1570ced0f3fbe5e9a8cf67f50edca 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -12,18 +12,21 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   private final int initialFirefighterCount;
   private final int initialCloudsCount;
 
+  private final int initialMontainCount;
   private Fires fires;
   private FireFighters fireFighters;
   private Cloud clouds;
+  private Montains Montains;
 
   private int step = 0;
 
-  public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudsCount) {
+  public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudsCount, int initialMontainCount) {
     this.columnCount = columnCount;
     this.rowCount = rowCount;
     this.initialFireCount = initialFireCount;
     this.initialFirefighterCount = initialFirefighterCount;
     this.initialCloudsCount = initialCloudsCount;
+    this.initialMontainCount = initialMontainCount;
     initializeElements();
   }
 
@@ -31,9 +34,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     this.fires = new Fires();
     this.fireFighters = new FireFighters();
     this.clouds = new Cloud();
+    this.Montains = new Montains();
     fires.initializeElements(initialFireCount,rowCount,columnCount);
     fireFighters.initializeElements(initialFirefighterCount,rowCount,columnCount);
     clouds.initializeElements(initialCloudsCount,rowCount, columnCount);
+    Montains.initializeElements(initialMontainCount, rowCount,columnCount);
   }
 
   @Override
@@ -43,6 +48,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
       if (firefighterPosition.equals(position))
         result.add(new FireFighters());
 
+    for(Position MaintainPosition : Montains.getMontainsPositions())
+      if (MaintainPosition.equals(position))
+        result.add(new Montains());
+
     for(Position cloudsPositions : clouds.getCloudsPositions())
       if (cloudsPositions.equals(position))
         result.add(new Cloud());
@@ -91,7 +100,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
   @Override
   public void setState(List<ModelElement> state, Position position) {
-    fires.extinguish(position);
+    //fires.extinguish(position);
     for (;;) {
       if (!fireFighters.getFireFightersPositions().remove(position)) break;
     }
@@ -107,6 +116,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
       if (element instanceof Cloud){
         clouds.add(position);
       }
+      if(element instanceof Montains){
+        Montains.add(position);
+      }
     }
 
   }
diff --git a/src/main/java/model/Fires.java b/src/main/java/model/Fires.java
index c7cee370dd7a5f3785ae5584fa86811ce6e855a2..5ee1f2286b619f66debce4b4ee772183ae6c59ed 100644
--- a/src/main/java/model/Fires.java
+++ b/src/main/java/model/Fires.java
@@ -4,15 +4,12 @@ import util.Position;
 
 import java.util.*;
 
-public class Fires implements ModelElement {
+public class Fires extends BoardMethods implements ModelElement {
 
     private Set<Position> firePositions;
 
     private int step;
-    private int rowCount;
-    private int columnCount;
 
-    private final Random randomGenerator = new Random();
 
     public Fires() {
     }
@@ -52,27 +49,8 @@ public class Fires implements ModelElement {
             firePositions.add(randomPosition());
     }
 
-    @Override
-    public Position randomPosition() {
-        if (rowCount <= 0 || columnCount <= 0) {
-            throw new IllegalArgumentException("Les limites doivent être positives");
-        }
 
-        return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
 
-    }
 
-    public void extinguish(Position position) {
-        firePositions.remove(position);
-    }
-
-    private 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()));
-        if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1));
-        if (position.row() < rowCount - 1) list.add(new Position(position.row() + 1, position.column()));
-        if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1));
-        return list;
-    }
 }
 
diff --git a/src/main/java/model/Montains.java b/src/main/java/model/Montains.java
index 963969c8e900d48a80f1a90aaac35eb97737db55..46b10c13df1b87677385460cbb207b455385efec 100644
--- a/src/main/java/model/Montains.java
+++ b/src/main/java/model/Montains.java
@@ -1,6 +1,49 @@
 package model;
 
-public class Montains {
+import util.Position;
+
+import java.util.*;
+
+public class Montains extends BoardMethods implements ModelElement {
+
+    private Set<Position> MontainsPositions;
+
+
+    public Montains() {
+    }
+
+    public void add(Position newPositions){
+        MontainsPositions.add(newPositions);
+    }
+
+    public Set<Position> getMontainsPositions() {
+        return MontainsPositions;
+    }
+
+
+
+
+
+    public void initializeElements(int initialFireCount, int rowCount, int columnCount) {
+        this.columnCount = columnCount;
+        this.rowCount = rowCount;
+        MontainsPositions = new HashSet<>();
+        for (int index = 0; index < initialFireCount; index++)
+            MontainsPositions.add(randomPosition());
+    }
+
+
+
+
 
 
 }
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/view/MONTAINS.java b/src/main/java/view/MONTAINS.java
index 8dbec84128ec51c6cfc707d87e4d3f8a28394f04..b2f55e41a633b41236a1b9cbfdeacc444ecf5020 100644
--- a/src/main/java/view/MONTAINS.java
+++ b/src/main/java/view/MONTAINS.java
@@ -5,6 +5,6 @@ import javafx.scene.paint.Color;
 public class MONTAINS implements ViewElement {
     @Override
     public Color getColor() {
-        return Color.BROWN;
+        return Color.BLACK;
     }
 }