diff --git a/.gradle/7.4/executionHistory/executionHistory.bin b/.gradle/7.4/executionHistory/executionHistory.bin
index 482e3bdabfbae03cd5487a119ad5f3965e386c49..8fe78ca1a5dd4e5f7bbf6c847e351629e7542837 100644
Binary files a/.gradle/7.4/executionHistory/executionHistory.bin and b/.gradle/7.4/executionHistory/executionHistory.bin differ
diff --git a/.gradle/7.4/executionHistory/executionHistory.lock b/.gradle/7.4/executionHistory/executionHistory.lock
index 9941b2c52553d73e13143e16fb70a977ea5e0ef9..1340577b55c3869daec00a9ac7b66ce4f3969529 100644
Binary files a/.gradle/7.4/executionHistory/executionHistory.lock and b/.gradle/7.4/executionHistory/executionHistory.lock differ
diff --git a/.gradle/7.4/fileHashes/fileHashes.bin b/.gradle/7.4/fileHashes/fileHashes.bin
index 4967a97b225f66ba74f8ce3a2c0c13d4676fff19..ef2c76f6244c8300dd39f9b78287fa119b4867a7 100644
Binary files a/.gradle/7.4/fileHashes/fileHashes.bin and b/.gradle/7.4/fileHashes/fileHashes.bin differ
diff --git a/.gradle/7.4/fileHashes/fileHashes.lock b/.gradle/7.4/fileHashes/fileHashes.lock
index 12eb8cbe55628dc15efc14f86e6ba1b86813d97b..9dde747e5ba0cbf26f13cc1d0db23f41d1abf531 100644
Binary files a/.gradle/7.4/fileHashes/fileHashes.lock and b/.gradle/7.4/fileHashes/fileHashes.lock differ
diff --git a/.gradle/7.4/fileHashes/resourceHashesCache.bin b/.gradle/7.4/fileHashes/resourceHashesCache.bin
index ab592c7a31bfa7d10f331af39895804b94763548..6b50c75922b9ada313fad6a4db8b4c636c3e5373 100644
Binary files a/.gradle/7.4/fileHashes/resourceHashesCache.bin and b/.gradle/7.4/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index f9bfce77ea4384b451ec4b6f1a5479072d930f33..b207f9406dc55a038e753c0ea3e3c8365eff33af 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index d94dcb441eb81719468d22e20d87091ecbebd734..a85e42110354fa8e5219eee63229148156d012b9 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/build/classes/java/main/Activation/Activation.class b/build/classes/java/main/Activation/Activation.class
new file mode 100644
index 0000000000000000000000000000000000000000..c7f213be0b523ab2f5b45930433cf9db57ab5d28
Binary files /dev/null and b/build/classes/java/main/Activation/Activation.class differ
diff --git a/build/classes/java/main/App$1.class b/build/classes/java/main/App$1.class
index 136eec5fd5de762f9958c0f9e0c25c95369e559e..532fdf1d6c45efaefb8833aff200682238d03a02 100644
Binary files a/build/classes/java/main/App$1.class and b/build/classes/java/main/App$1.class differ
diff --git a/build/classes/java/main/App.class b/build/classes/java/main/App.class
index 6d4b4a3cf2baacad8fae05e86dc06dcb8e8aa6ed..c4f9e1a8b09d49574687d0d038c5e9c5062f15b5 100644
Binary files a/build/classes/java/main/App.class and b/build/classes/java/main/App.class differ
diff --git a/build/classes/java/main/Fighters/AntiFire.class b/build/classes/java/main/Fighters/AntiFire.class
new file mode 100644
index 0000000000000000000000000000000000000000..f53ca4a7eaced15fbdb8f61ccb51fde563a9d0a0
Binary files /dev/null and b/build/classes/java/main/Fighters/AntiFire.class differ
diff --git a/build/classes/java/main/Fighters/Clouds.class b/build/classes/java/main/Fighters/Clouds.class
new file mode 100644
index 0000000000000000000000000000000000000000..04fbc2404b53a199d7c4fc58936240901f909bb0
Binary files /dev/null and b/build/classes/java/main/Fighters/Clouds.class differ
diff --git a/build/classes/java/main/Fighters/FireFighters.class b/build/classes/java/main/Fighters/FireFighters.class
new file mode 100644
index 0000000000000000000000000000000000000000..c944b2b3d708386cd19b154b0380028d8e179044
Binary files /dev/null and b/build/classes/java/main/Fighters/FireFighters.class differ
diff --git a/build/classes/java/main/Fighters/MotorizedFireFighters.class b/build/classes/java/main/Fighters/MotorizedFireFighters.class
new file mode 100644
index 0000000000000000000000000000000000000000..232fd081ec112261f8f28bb0d674f82c5ea8952e
Binary files /dev/null and b/build/classes/java/main/Fighters/MotorizedFireFighters.class differ
diff --git a/build/classes/java/main/Fire/Fire.class b/build/classes/java/main/Fire/Fire.class
new file mode 100644
index 0000000000000000000000000000000000000000..76b51a2e4075a447e5f8ddf8c112852473950669
Binary files /dev/null and b/build/classes/java/main/Fire/Fire.class differ
diff --git a/build/classes/java/main/Grid.class b/build/classes/java/main/Grid.class
deleted file mode 100644
index 2979e0e7f08c7d0bff33daa48fabe02028e1045b..0000000000000000000000000000000000000000
Binary files a/build/classes/java/main/Grid.class and /dev/null differ
diff --git a/build/classes/java/main/Grid/Grid.class b/build/classes/java/main/Grid/Grid.class
new file mode 100644
index 0000000000000000000000000000000000000000..96b9598c143a90c2e0e1f015cefdc77b1df0e521
Binary files /dev/null and b/build/classes/java/main/Grid/Grid.class differ
diff --git a/build/classes/java/main/Model$Position.class b/build/classes/java/main/Model$Position.class
deleted file mode 100644
index 51c52b923ab5b501b3803cc99bb5101b0b07402d..0000000000000000000000000000000000000000
Binary files a/build/classes/java/main/Model$Position.class and /dev/null differ
diff --git a/build/classes/java/main/Model.class b/build/classes/java/main/Model.class
deleted file mode 100644
index 5d858bfcb70dbf28f83d9ed1c56ce1f4d1db1948..0000000000000000000000000000000000000000
Binary files a/build/classes/java/main/Model.class and /dev/null differ
diff --git a/build/classes/java/main/Model/Model.class b/build/classes/java/main/Model/Model.class
new file mode 100644
index 0000000000000000000000000000000000000000..cb1d5740f8d1f3bb9c5085b7958d3a4bd15e9f7e
Binary files /dev/null and b/build/classes/java/main/Model/Model.class differ
diff --git a/build/classes/java/main/Position/Position.class b/build/classes/java/main/Position/Position.class
new file mode 100644
index 0000000000000000000000000000000000000000..33bf07ad87f3b9a313773bf30224819c611ade2b
Binary files /dev/null and b/build/classes/java/main/Position/Position.class differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 99ccfdfd3ea2fd7ca14837d733baf60e85e1d94c..602a1e264d73293219aa1caa066dd595b27a20ae 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/Activation/Activation.java b/src/main/java/Activation/Activation.java
new file mode 100644
index 0000000000000000000000000000000000000000..35c91025d40fd936ae4872f81241b58fe43dfec7
--- /dev/null
+++ b/src/main/java/Activation/Activation.java
@@ -0,0 +1,6 @@
+package Activation;
+
+public interface Activation {
+    public void activation();
+
+}
diff --git a/src/main/java/App.java b/src/main/java/App.java
index 10dda1d5b5dac2118958e64a64772f18e7258f18..f2ec687179b2ef1ad8afb6df00b767741006617a 100644
--- a/src/main/java/App.java
+++ b/src/main/java/App.java
@@ -1,3 +1,5 @@
+import Activation.Activation;
+import Grid.Grid;
 import javafx.application.Application;
 import javafx.scene.Group;
 import javafx.scene.Scene;
@@ -21,6 +23,7 @@ public class App extends Application {
         Button restart = new Button("Restart");
         VBox buttons = new VBox();
         HBox total = new HBox();
+        Activation activation = null;
         Grid grid = new Grid(1000,1000,20,20);
 
         root.getChildren().add(total);
@@ -37,7 +40,7 @@ public class App extends Application {
                 while(true){
                     try {
                         sleep(50);
-                        grid.model.activation();
+                        activation.activation();
                         grid.repaint();
                     } catch (InterruptedException e) {
                         e.printStackTrace();
diff --git a/src/main/java/Fighters/AntiFire.java b/src/main/java/Fighters/AntiFire.java
index b4a6d1cb0a2ed4f21140d489af4338e0f751f88c..148d82168d8a35df1de53454f43cf750d080480b 100644
--- a/src/main/java/Fighters/AntiFire.java
+++ b/src/main/java/Fighters/AntiFire.java
@@ -1,30 +1,25 @@
 package Fighters;
 
-import javax.swing.text.Position;
+import Model.Model;
+import Position.Position;
 import java.util.*;
-
-public abstract class AntiFire {
+import Grid.Grid;
+public abstract class AntiFire  {
     Grid grid;
     int colCount, rowCount;
-    List<Position> firefighters = new ArrayList<>();
     Set<Position> fires = new HashSet<>();
 
-    public Model.Position randomPosition() {
-        return new Model.Position((int) (Math.random()*rowCount), (int) (Math.random()*colCount));
-    }
 
     public  abstract Position moveTowardFire(Position position);
     public abstract List<Position> next(Position position);
     public abstract Position activateFight(Position position);
 
 
-
-
-
-    public void extinguish(Position position) {
+   public void extinguish(Position position) {
             fires.remove(position);
-            grid.paint(position.row, position.col);
+
+            grid.paint(position.row(), position.col());
         }
-    }
+
 
 }
diff --git a/src/main/java/Fighters/Clouds.java b/src/main/java/Fighters/Clouds.java
index 1ceaa9dfdde5154172b2c7a63681517515a9cec7..aebf985966471ada1cde05b35cb772ba88e17c48 100644
--- a/src/main/java/Fighters/Clouds.java
+++ b/src/main/java/Fighters/Clouds.java
@@ -4,10 +4,17 @@ package Fighters;
 
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+
+import Activation.Activation;
 import Position.Position;
-public abstract class Clouds extends AntiFire {
+public abstract class Clouds extends AntiFire implements Activation {
+    List<Position> clouds = new ArrayList<>();
+    Set<Position> fires = new HashSet<>();
 
+    List<Position> cloudsNewPositions;
     @Override
     public Position activateFight(Position position) {
         Position randomPosition = next(position).get((int) (Math.random()*next(position).size()));
@@ -25,11 +32,24 @@ public abstract class Clouds extends AntiFire {
     @Override
     public List<Position> next(Position position) {
         List<Position> list = new ArrayList<>();
-        if(position.row()>0) list.add(new Position(position.row()-1, position.col());
+        if(position.row()>0) list.add(new Position(position.row()-1, position.col()));
         if(position.col()>0) list.add(new Position(position.row(), position.col()-1));
         if(position.row()<rowCount-1) list.add(new Position(position.row()+1, position.col()));
         if(position.col()<colCount-1) list.add(new Position(position.row(), position.col()+1));
         return list;
     }
 
+    @Override
+    public void activation() {
+        cloudsNewPositions = new ArrayList<>();
+
+        for(Position cc : clouds){
+            Position newPosition = activateFight(cc);
+
+            grid.paint(cc.row(),cc.col());
+            grid.paintCloud(newPosition.row(), newPosition.col());
+            cloudsNewPositions.add(newPosition);
+        }
+        clouds= cloudsNewPositions;
+    }
 }
diff --git a/src/main/java/Fighters/FireFighters.java b/src/main/java/Fighters/FireFighters.java
index 5ac517608e82375bad92e5506808badafedbc4c6..32eaa51694509b5efc697097bc50b42643946411 100644
--- a/src/main/java/Fighters/FireFighters.java
+++ b/src/main/java/Fighters/FireFighters.java
@@ -1,20 +1,26 @@
 package Fighters;
 
+import Activation.Activation;
 import Fighters.AntiFire;
 
 import Position.Position;
+
+import javax.swing.*;
 import java.util.*;
 
-public class FireFighters extends AntiFire {
+public class FireFighters extends AntiFire implements Activation {
     int colCount, rowCount;
+    List<Position> firefighters = new ArrayList<>();
+    Set<Position> fires = new HashSet<>();
+
+    List<Position> ffNewPositions;
 
-    Position position;
 
 
     @Override
     public Position activateFight(Position position) {
         Position randomPosition = moveTowardFire(position);
-        //next(position).get((int) (Math.random()*next(position).size()));
+
         List<Position> nextFires = next(randomPosition).stream().filter(fires::contains).toList();
         extinguish(randomPosition);
         for (Position fire : nextFires)
@@ -29,7 +35,7 @@ public class FireFighters extends AntiFire {
 
         if(position.row()>0) list.add(new Position(position.row()-1, position.col()));
         if(position.col()>0) list.add(new Position(position.row(), position.col()-1));
-        if(position.row()<rowCount-1) list.add(new Position(position.row+1, position.col()));
+        if(position.row()<rowCount-1) list.add(new Position(position.row()+1, position.col()));
         if(position.col()<colCount-1) list.add(new Position(position.row(), position.col()+1));
         return list;
     }
@@ -55,4 +61,17 @@ public class FireFighters extends AntiFire {
         }
         return position;
     }
+
+    @Override
+    public void activation() {
+        ffNewPositions = new ArrayList<>();
+        for(Position ff : firefighters){
+            Position newPosition = activateFight(ff);
+
+            grid.paint(ff.row(),ff.col());
+            grid.paintFF(newPosition.row(), newPosition.col());
+            ffNewPositions.add(newPosition);
+        }
+        firefighters = ffNewPositions;
+    }
 }
diff --git a/src/main/java/Fighters/MotorizedFireFighters.java b/src/main/java/Fighters/MotorizedFireFighters.java
index fe9b6a52257f52238c19c2fcd6d9b9d17628d49f..a385f72516eff2f6f8bcceb963e8694d80d80a0b 100644
--- a/src/main/java/Fighters/MotorizedFireFighters.java
+++ b/src/main/java/Fighters/MotorizedFireFighters.java
@@ -1,10 +1,15 @@
 package Fighters;
 
+import Activation.Activation;
 import Position.Position;
 import java.util.*;
 
-public  class MotorizedFireFighters extends AntiFire {
+public  class MotorizedFireFighters extends AntiFire implements Activation {
+    List<Position> motorizedfirefighters = new ArrayList<>();
+    Set<Position> fires = new HashSet<>();
 
+
+    List<Position>  mffNewPositions;
     @Override
     public Position activateFight(Position position) {
         Position randomPosition = moveTowardFire(position);
@@ -43,10 +48,23 @@ public  class MotorizedFireFighters extends AntiFire {
     @Override
     public List<Position> next(Position position) {
         List<Position> list = new ArrayList<>();
-        if(position.row()>0) list.add(new Position(position.row()-2, position.col());
+        if(position.row()>0) list.add(new Position(position.row()-2, position.col()));
         if(position.col()>0) list.add(new Position(position.row(), position.col()-2));
         if(position.row()<rowCount-1) list.add(new Position(position.row()+2, position.col()));
         if(position.col()<colCount-1) list.add(new Position(position.row(), position.col()+2));
         return list;
     }
+
+    @Override
+    public void activation() {
+        mffNewPositions= new ArrayList<>();
+        for(Position mff : motorizedfirefighters){
+            Position newPosition = activateFight(mff);
+
+            grid.paint(mff.row(),mff.col());
+            grid.paintMFF(newPosition.row(), newPosition.col());
+            mffNewPositions.add(newPosition);
+        }
+        motorizedfirefighters=mffNewPositions;
+    }
 }
diff --git a/src/main/java/Fire.java b/src/main/java/Fire/Fire.java
similarity index 50%
rename from src/main/java/Fire.java
rename to src/main/java/Fire/Fire.java
index 19aa564e6af338acd1d2b9c250b98014c45f05d5..1e3dfd4d918d9e363c7c4da76a839cfa35c272a9 100644
--- a/src/main/java/Fire.java
+++ b/src/main/java/Fire/Fire.java
@@ -1,18 +1,38 @@
+package Fire;
 
+import Activation.Activation;
+import Grid.Grid;
 import Position.Position;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
-public class Fire {
-    int colCount,rowCount;
-
+public class Fire implements Activation {
+    int colCount,rowCount,step;
+    Grid grid;
+    Set<Position> fires = new HashSet<>();
     private List<Position> activateFire(Position position) {
         return next(position);
     }
+    public void activation(){
+
+        if(step%2==0){
+            List<Position> newFires = new ArrayList<>();
+            for(Position fire : fires){
+                newFires.addAll(activateFire(fire));
+            }
+            for(Position newFire : newFires)
+                grid.paintFire(newFire.row(), newFire.col());
+
+            fires.addAll(newFires);}
+        step++;
+
+    }
     private List<Position> next(Position position){
         List<Position> list = new ArrayList<>();
-        if(position.row()>0) list.add(new Position(position.row()-1, position.col());
+        if(position.row()>0) list.add(new Position(position.row()-1, position.col()));
         if(position.col()>0) list.add(new Position(position.row(), position.col()-1));
         if(position.row()<rowCount-1) list.add(new Position(position.row()+1, position.col()));
         if(position.col()<colCount-1) list.add(new Position(position.row(), position.col()+1));
diff --git a/src/main/java/Grid.java b/src/main/java/Grid/Grid.java
similarity index 70%
rename from src/main/java/Grid.java
rename to src/main/java/Grid/Grid.java
index 4ce3285c486ee31f4b17eb0326a726740d501081..1dc162969834fb9cb0bb85dc4401ffde2703eef7 100644
--- a/src/main/java/Grid.java
+++ b/src/main/java/Grid/Grid.java
@@ -1,11 +1,19 @@
+package Grid;
+
+import Activation.Activation;
+import Model.Model;
 import javafx.scene.canvas.Canvas;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.input.MouseEvent;
 import javafx.scene.paint.Color;
 
-public class Grid extends Canvas{
-    int width, height, colCount, rowCount;
-    Model model;
+public class Grid extends Canvas {
+    int width;
+    int height;
+    public int colCount;
+    public int rowCount;
+    public Model model;
+    Activation activation=null;
 
 
     public Grid(int width, int height, int colCount, int rowCount) {
@@ -27,14 +35,13 @@ public class Grid extends Canvas{
         repaint();
     }
     private void mousePressed(MouseEvent mouseEvent) {
-        model.activation();
+        activation.activation();
         repaint();
             /*double x = mouseEvent.getX();
             double y = mouseEvent.getY();
-            model.click((int)x*rowCount/height,(int)y*colCount/width);*/
-    }
+            model.click((int)x*rowCount/height,(int)y*colCount/width);*/}
 
-    void repaint(){
+    public void repaint(){
         for(int col=0; col<colCount; col++)
             getGraphicsContext2D().strokeLine(0, col*width/colCount,height, col*width/colCount);
         for(int row=0; row<rowCount;row++)
@@ -42,7 +49,7 @@ public class Grid extends Canvas{
 
     }
 
-    void paint(int row, int col){
+    public void paint(int row, int col){
         getGraphicsContext2D().setFill(Color.WHITE);
         getGraphicsContext2D().fillRect(row*height/rowCount,col*width/colCount,height/rowCount,width/colCount);
     }
@@ -56,5 +63,13 @@ public class Grid extends Canvas{
         getGraphicsContext2D().setFill(Color.RED);
         getGraphicsContext2D().fillRect(row*height/rowCount,col*width/colCount,height/rowCount,width/colCount);
     }
+    public void paintMFF(int row, int col) {
+        getGraphicsContext2D().setFill(Color.BLUE);
+        getGraphicsContext2D().fillRect(row*height/rowCount,col*width/colCount,height/rowCount,width/colCount);
+    }
+    public void paintCloud(int row , int col){
+        getGraphicsContext2D().setFill(Color.GREY);
+        getGraphicsContext2D().fillRect(row*height/rowCount,col*width/colCount,height/rowCount,width/colCount);
+    }
 
 }
\ No newline at end of file
diff --git a/src/main/java/Model.java b/src/main/java/Model.java
deleted file mode 100644
index 7e6653f332c7d248448a91cc6a925bb51472dee8..0000000000000000000000000000000000000000
--- a/src/main/java/Model.java
+++ /dev/null
@@ -1,118 +0,0 @@
-import javax.swing.text.Position;
-import java.util.*;
-
-
-public class Model {
-
-    Position position;
-    Grid grid;
-    int colCount, rowCount;
-    List<Position> firefighters = new ArrayList<>();
-    Set<Position> fires = new HashSet<>();
-    List<Position> motorizedfirefighters = new ArrayList<>();
-    List<Position> clouds = new ArrayList<>();
-    List<Position> ffNewPositions;
-    int step = 0;
-
-    public Model(Grid grid) {
-        this.grid = grid;
-        colCount = grid.colCount;
-        rowCount = grid.rowCount;
-    }
-
-
-    public void initialisation(int fireNumber, int fireFighterNumber,int cloudNumber, int motorizedFireFighterNumber){
-        for(int index=0; index<fireNumber;index++)
-            fires.add(randomPosition());
-        for(int index=0; index<fireFighterNumber;index++)
-            firefighters.add(randomPosition());
-
-        for(int index=0; index<cloudNumber;index++)
-            clouds.add(randomPosition());
-        for(int index=0; index<motorizedFireFighterNumber;index++)
-            motorizedfirefighters.add(randomPosition());
-
-    }
-
-
-    public Position randomPosition() {
-        return new Position((int) (Math.random()*rowCount), (int) (Math.random()*colCount));
-    }
-
-
-    public void activation(){
-        ffNewPositions = new ArrayList<>();
-        for(Position ff : firefighters){
-            Position newPosition = activateFirefighter(ff);
-
-            grid.paint(ff.row,ff.col);
-            grid.paintFF(newPosition.row, newPosition.col);
-            ffNewPositions.add(newPosition);
-        }
-        firefighters = ffNewPositions;
-        if(step%2==0){
-            List<Position> newFires = new ArrayList<>();
-            for(Position fire : fires){
-                newFires.addAll(activateFire(fire));
-            }
-            for(Position newFire : newFires)
-                grid.paintFire(newFire.row, newFire.col);
-
-            fires.addAll(newFires);}
-        step++;
-
-    }
-
-    public List<Position> activateFire(Position position) {
-        return next(position);
-    }
-
-
-
-    public Position activateFirefighter(Position position) {
-        Position randomPosition = aStepTowardFire(position);
-        //next(position).get((int) (Math.random()*next(position).size()));
-        List<Position> nextFires = next(randomPosition).stream().filter(fires::contains).toList();
-        extinguish(randomPosition);
-        for (Position fire : nextFires)
-            extinguish(fire);
-        return randomPosition;
-    }
-
-    public void extinguish(Position position) {
-        fires.remove(position);
-        grid.paint(position.row, position.col);
-    }
-
-    public List<Position> next(Position position){
-        List<Position> list = new ArrayList<>();
-        if(position.row>0) list.add(new Position(position.row-1, position.col));
-        if(position.col>0) list.add(new Position(position.row, position.col-1));
-        if(position.row<rowCount-1) list.add(new Position(position.row+1, position.col));
-        if(position.col<colCount-1) list.add(new Position(position.row, position.col+1));
-        return list;
-    }
-
-    public Position aStepTowardFire(Position position){
-        Queue<Position> toVisit = new LinkedList<>();
-        Set<Position> seen = new HashSet<>();
-        HashMap<Position,Position> firstMove = new HashMap<>();
-        toVisit.addAll(next(position));
-        for(Position initialMove : toVisit)
-            firstMove.put(initialMove,initialMove);
-        while(!toVisit.isEmpty()){
-            Position current = toVisit.poll();
-            if(fires.contains(current))
-                return firstMove.get(current);
-            for(Position adjacent : next(current)){
-                if(seen.contains(adjacent)) continue;
-                toVisit.add(adjacent);
-                seen.add(adjacent);
-                firstMove.put(adjacent, firstMove.get(current));
-            }
-        }
-        return position;
-    }
-    public record Position(int row, int col){}
-
-}
diff --git a/src/main/java/Model/Model.java b/src/main/java/Model/Model.java
new file mode 100644
index 0000000000000000000000000000000000000000..70769c04807c7dc0a4bf7d99a7f4ac840c7d186d
--- /dev/null
+++ b/src/main/java/Model/Model.java
@@ -0,0 +1,45 @@
+package Model;
+import Activation.Activation;
+import Grid.Grid;
+import Fighters.*;
+import java.util.*;
+import  Fire.Fire;
+import Position.Position;
+
+public  class Model   {
+    Grid grid;
+    int colCount, rowCount;
+    List<Position> firefighters = new ArrayList<>();
+    Set<Position> fires = new HashSet<>();
+    List<Position> motorizedfirefighters = new ArrayList<>();
+    List<Position> clouds = new ArrayList<>();
+
+
+
+
+    public Model(Grid grid) {
+        this.grid = grid;
+        colCount = grid.colCount;
+        rowCount = grid.rowCount;
+    }
+
+    public void initialisation(int fireNumber, int fireFighterNumber,int cloudNumber, int motorizedFireFighterNumber){
+        for(int index=0; index<fireNumber;index++)
+            fires.add(randomPosition());
+        for(int index=0; index<fireFighterNumber;index++)
+            firefighters.add(randomPosition());
+        for(int index=0; index<cloudNumber;index++)
+            clouds.add(randomPosition());
+        for(int index=0; index<motorizedFireFighterNumber;index++)
+            motorizedfirefighters.add(randomPosition());
+
+    }
+
+
+    public Position randomPosition() {
+        return new Position((int) (Math.random()*rowCount), (int) (Math.random()*colCount));
+    }
+
+
+
+}