diff --git a/src/main/java/model/BoardElement.java b/src/main/java/model/BoardElement.java
index 912a524ab8f5b87c0cd646e7ee97d02544e98e51..d81bfbd960bea825dada024453bb4f9e81f8a433 100644
--- a/src/main/java/model/BoardElement.java
+++ b/src/main/java/model/BoardElement.java
@@ -12,7 +12,6 @@ import java.util.Set;
 public interface BoardElement {
 
     Color getColor();
-    void setColor(Color color);
     Boolean accept(Visitor visitor);
     void initialize(int initialElementCount, HashMap<Position, ArrayList<BoardElement>> elementPosition);
 }
diff --git a/src/main/java/model/ExtenguishFire/Cloud.java b/src/main/java/model/ExtenguishFire/Cloud.java
deleted file mode 100644
index 8301d6e0305fc8d958bb64c04d138c0ad973ea78..0000000000000000000000000000000000000000
--- a/src/main/java/model/ExtenguishFire/Cloud.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package model.ExtenguishFire;
-
-public class Cloud {
-}
diff --git a/src/main/java/model/ExtenguishFire/FireFighter.java b/src/main/java/model/ExtenguishFire/FireFighter.java
deleted file mode 100644
index b9d56c631693b8d5383b23a8d278dcade6fbf929..0000000000000000000000000000000000000000
--- a/src/main/java/model/ExtenguishFire/FireFighter.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package model.ExtenguishFire;
-
-public class FireFighter {
-}
diff --git a/src/main/java/model/ExtenguishFire/FireFighters.java b/src/main/java/model/ExtenguishFire/FireFighters.java
deleted file mode 100644
index 91e7ccf29f20745e2601a919a6391f2158fb13d7..0000000000000000000000000000000000000000
--- a/src/main/java/model/ExtenguishFire/FireFighters.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package model.ExtenguishFire;
-
-import model.BoardElement;
-import util.Position;
-
-import java.util.List;
-
-public interface FireFighters extends BoardElement {
-    List<Position> updateFirefighters();
-    boolean accept();
-}
diff --git a/src/main/java/model/ExtinguishFire/Cloud.java b/src/main/java/model/ExtinguishFire/Cloud.java
new file mode 100644
index 0000000000000000000000000000000000000000..5fa1c31b671d246b8662185ede204bd7504d7407
--- /dev/null
+++ b/src/main/java/model/ExtinguishFire/Cloud.java
@@ -0,0 +1,4 @@
+package model.ExtinguishFire;
+
+public class Cloud {
+}
diff --git a/src/main/java/model/ExtinguishFire/ExtinguishFire.java b/src/main/java/model/ExtinguishFire/ExtinguishFire.java
new file mode 100644
index 0000000000000000000000000000000000000000..077f3cca3edfecb1491a8fb6d22ccf2d3ed50524
--- /dev/null
+++ b/src/main/java/model/ExtinguishFire/ExtinguishFire.java
@@ -0,0 +1,16 @@
+package model.ExtinguishFire;
+
+import model.BoardElement;
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public interface ExtinguishFire extends BoardElement {
+
+    void initialize(int initialFireFighterCount, HashMap<Position, ArrayList<BoardElement>> elementPosition);
+
+    List<Position> updateFirefighters();
+
+}
diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java
new file mode 100644
index 0000000000000000000000000000000000000000..1cbeb2662caae6cdf04d375b208006d8ee6f279f
--- /dev/null
+++ b/src/main/java/model/ExtinguishFire/FireFighter.java
@@ -0,0 +1,63 @@
+package model.ExtinguishFire;
+
+import javafx.scene.paint.Color;
+import model.BoardElement;
+import model.FirefighterBoard;
+import model.Flammable.Fire;
+import model.Visitor.FireFinder;
+import model.Visitor.Visitor;
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public class FireFighter implements ExtinguishFire{
+    Color color;
+    public FireFighter(Color color){
+        this.color=color;
+    }
+    @Override
+    public Color getColor() {
+        return color;
+    }
+
+    @Override
+    public Boolean accept(Visitor visitor) {
+        return visitor.visit(this);
+    }
+
+    @Override
+    public void initialize(int initialFireFighterCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) {
+        FireFinder fireFinder=new FireFinder();
+        Position position = FirefighterBoard.randomPosition();
+        boolean canInitialise;
+        for (int index = 0; index < initialFireFighterCount; index++) {
+            if(elementPosition.containsKey(position)) {
+                for (;;) {
+                    canInitialise = true;
+                    for (BoardElement element : elementPosition.get(position)) {
+                        if (element.accept(fireFinder)) {
+                            canInitialise=false;
+                            break;
+                        }
+                    }
+                    if(canInitialise){
+                        break;
+                    }
+                    position = FirefighterBoard.randomPosition();
+                }
+                elementPosition.get(position).add(new Fire(Color.BLUE));
+                continue;
+            }
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(new Fire(Color.BLUE));
+            elementPosition.put(position,boardElements);
+        }
+    }
+
+    @Override
+    public List<Position> updateFirefighters() {
+        return null;
+    }
+}
diff --git a/src/main/java/model/ExtenguishFire/MotorizedFireFighter.java b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
similarity index 56%
rename from src/main/java/model/ExtenguishFire/MotorizedFireFighter.java
rename to src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
index e202215711af31838c048b882230d900969a941a..ef4d68ee00907de06dd030dc354df6e6f4e154cc 100644
--- a/src/main/java/model/ExtenguishFire/MotorizedFireFighter.java
+++ b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java
@@ -1,4 +1,4 @@
-package model.ExtenguishFire;
+package model.ExtinguishFire;
 
 public class MotorizedFireFighter {
 }
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 2d0b03048f701e29ad8314836efb12fb6537d22e..7fa8e1d1e72a765eed8f98ea970b407d50e2137a 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -10,7 +10,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
    static  int rowCount;
   private final int initialFireCount;
   private final int initialFirefighterCount;
-  protected HashMap<Position,ArrayList<BoardElement>> elementPosition;
   private List<Position> firefighterPositions;
   private Set<Position> firePositions;
   private int step = 0;
diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java
index 621ab15ae60f0b6bb6efa4369536f263daeb5566..0d1f6ace5efb0438bff64eeb0a1eb6907b8439f3 100644
--- a/src/main/java/model/Flammable/Fire.java
+++ b/src/main/java/model/Flammable/Fire.java
@@ -9,12 +9,10 @@ import util.Position;
 
 import java.util.*;
 
-public class Fire implements Fires{
+public class Fire implements Flammable{
 
-    private Color color;
+    private final Color color;
 
-    public Fire(){
-    }
     public Fire(Color color){
         this.color = color;
     }
@@ -24,11 +22,6 @@ public class Fire implements Fires{
         return this.color;
     }
 
-    @Override
-    public void setColor(Color color) {
-        this.color = color;
-    }
-
     @Override
     public Boolean accept(Visitor visitor){
         return visitor.visit(this);
@@ -38,42 +31,34 @@ public class Fire implements Fires{
     public void initialize(int initialFireCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) {
         FireFinder fireFinder=new FireFinder();
         Position position = FirefighterBoard.randomPosition();
-        int index;
-        for ( index = 0; index < initialFireCount; index++) {
-            if(elementPosition.containsKey(position)  ) {
-                for (BoardElement element : elementPosition.get(position)) {
-                    if (!element.accept(fireFinder)) {
+        boolean canInitialise;
+        for (int index = 0; index < initialFireCount; index++) {
+            if(elementPosition.containsKey(position)) {
+                 for (;;) {
+                    canInitialise=true;
+                    for (BoardElement element : elementPosition.get(position)) {
+                        if (element.accept(fireFinder)) {
+                            canInitialise=false;
+                            break;
+                        }
+                    }
+                    if(canInitialise){
                         break;
                     }
-                }
-            if(index==-1){
-                elementPosition.get(position).add(new Fire());
+                 position = FirefighterBoard.randomPosition();
+                 }
+                 elementPosition.get(position).add(new Fire(Color.RED));
+                 continue;
             }
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(new Fire(Color.RED));
+            elementPosition.put(position,boardElements);
             }
-            else{
-                ArrayList<BoardElement> boardElements = new ArrayList<>();
-                boardElements.add(new Fire());
-                elementPosition.put(position,boardElements);
-            }
-        }
     }
 
-            /*if(elementPosition.containsKey(position) &&  ){
-                continue;
-            }
-            else if(elementPosition.containsKey(position)){
-                elementPosition.get(position).add(fire);
-            }
-            else{
-                ArrayList<BoardElement> boardElements = new ArrayList<>();
-                boardElements.add(fire);
-                elementPosition.put(position,boardElements);
-            }
-        }
-    }*/
-
     @Override
-    public List<Position> updateFires() {
+    public List<Position> updateFlammable() {
         return null;
     }
+
 }
diff --git a/src/main/java/model/Flammable/Fires.java b/src/main/java/model/Flammable/Flammable.java
similarity index 55%
rename from src/main/java/model/Flammable/Fires.java
rename to src/main/java/model/Flammable/Flammable.java
index b17a5509556b363b8ca7753e183b60df44469b2b..2040c734b627cb82034645d3deb4dd23ec2774cd 100644
--- a/src/main/java/model/Flammable/Fires.java
+++ b/src/main/java/model/Flammable/Flammable.java
@@ -1,20 +1,15 @@
 package model.Flammable;
 
-import javafx.scene.paint.Color;
 import model.BoardElement;
-import model.Visitor.Visitor;
 import util.Position;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-public interface Fires extends BoardElement{
-    void setColor(Color color);
-
-    Boolean accept(Visitor visitor);
+public interface Flammable extends BoardElement{
 
     void initialize(int initialFireCount, HashMap<Position, ArrayList<BoardElement>> elementPosition);
 
-    List<Position> updateFires();
+    List<Position> updateFlammable();
 }
diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java
new file mode 100644
index 0000000000000000000000000000000000000000..a5ace1e985091d08fc5c72f140ec013e25004578
--- /dev/null
+++ b/src/main/java/model/GameBoard.java
@@ -0,0 +1,57 @@
+package model;
+
+import util.Position;
+
+import java.util.*;
+
+public class GameBoard implements Board{
+    static  int columnCount;
+    static  int rowCount;
+    private final int initialFireCount;
+    private final int initialFirefighterCount;
+    private List<Position> firefighterPositions;
+    private Set<Position> firePositions;
+    private int step = 0;
+    static Random randomGenerator = new Random();
+    public HashMap<Position, ArrayList<BoardElement>> elementPosition;
+
+    public GameBoard(int initialFireCount, int initialFirefighterCount) {
+        this.initialFireCount = initialFireCount;
+        this.initialFirefighterCount = initialFirefighterCount;
+    }
+
+    @Override
+    public Object getState(Position position) {
+        return null;
+    }
+
+    @Override
+    public void setState(Object state, Position position) {
+
+    }
+
+    @Override
+    public int rowCount() {
+        return rowCount;
+    }
+
+    @Override
+    public int columnCount() {
+        return columnCount;
+    }
+
+    @Override
+    public List<Position> updateToNextGeneration() {
+        return null;
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public int stepNumber() {
+        return step;
+    }
+}
diff --git a/src/main/java/model/Obstacle/Obstacles.java b/src/main/java/model/Obstacle/Obstacles.java
index fc8290ad64a103e9ac78ed571720ac51e55defcb..c1cc3cd94179786e60ab4183e34b820fd37bc23c 100644
--- a/src/main/java/model/Obstacle/Obstacles.java
+++ b/src/main/java/model/Obstacle/Obstacles.java
@@ -6,5 +6,6 @@ import util.Position;
 import java.util.List;
 
 public interface Obstacles extends BoardElement {
-    boolean accept();
+
+
 }
diff --git a/src/main/java/model/Visitor/CrossMountain.java b/src/main/java/model/Visitor/CrossMountain.java
index 288af45085d83abed059642b9ddf34a4e2377198..bc8097d1d97cc51209fee1c1b7ed6ddf8c707e48 100644
--- a/src/main/java/model/Visitor/CrossMountain.java
+++ b/src/main/java/model/Visitor/CrossMountain.java
@@ -1,7 +1,7 @@
 package model.Visitor;
 
-import model.ExtenguishFire.FireFighter;
-import model.ExtenguishFire.MotorizedFireFighter;
+import model.ExtinguishFire.FireFighter;
+import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;
diff --git a/src/main/java/model/Visitor/CrossRoad.java b/src/main/java/model/Visitor/CrossRoad.java
index cf53acf322cc562e77338bc2ad48c491e2097d85..4a0f710dbaee13ab9a6da545501df32b23e895c1 100644
--- a/src/main/java/model/Visitor/CrossRoad.java
+++ b/src/main/java/model/Visitor/CrossRoad.java
@@ -1,7 +1,7 @@
 package model.Visitor;
 
-import model.ExtenguishFire.FireFighter;
-import model.ExtenguishFire.MotorizedFireFighter;
+import model.ExtinguishFire.FireFighter;
+import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;
diff --git a/src/main/java/model/Visitor/FireFinder.java b/src/main/java/model/Visitor/FireFinder.java
index 7e7ce43771fb2b4503e6c666c8ba49a16eada7f6..3718c615c60117d69188f90e6ebd628db2faefd8 100644
--- a/src/main/java/model/Visitor/FireFinder.java
+++ b/src/main/java/model/Visitor/FireFinder.java
@@ -1,7 +1,7 @@
 package model.Visitor;
 
-import model.ExtenguishFire.FireFighter;
-import model.ExtenguishFire.MotorizedFireFighter;
+import model.ExtinguishFire.FireFighter;
+import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;
diff --git a/src/main/java/model/Visitor/Visitor.java b/src/main/java/model/Visitor/Visitor.java
index da5b1a222d9c24946e95e7ade64a596f4a099f93..5a324d1942b57410f4d084e7d995efac6a300c95 100644
--- a/src/main/java/model/Visitor/Visitor.java
+++ b/src/main/java/model/Visitor/Visitor.java
@@ -1,9 +1,8 @@
 package model.Visitor;
 
-import model.ExtenguishFire.FireFighter;
-import model.ExtenguishFire.MotorizedFireFighter;
+import model.ExtinguishFire.FireFighter;
+import model.ExtinguishFire.MotorizedFireFighter;
 import model.Flammable.Fire;
-import model.Flammable.Fires;
 import model.Obstacle.Mountain;
 import model.Obstacle.Road;