diff --git a/.gradle/7.4/checksums/checksums.lock b/.gradle/7.4/checksums/checksums.lock
index df54c1e0932a6aad9b35fe2f5781753d92dd27c2..05bf94807c93fa240a16ad651bdb2179e5022856 100644
Binary files a/.gradle/7.4/checksums/checksums.lock and b/.gradle/7.4/checksums/checksums.lock differ
diff --git a/.gradle/7.4/checksums/md5-checksums.bin b/.gradle/7.4/checksums/md5-checksums.bin
index 38740cef473d59e77cc7580e7c7e168c289010c2..6ce413ad4b66b7b5bc4d4eec40e1040272c2023a 100644
Binary files a/.gradle/7.4/checksums/md5-checksums.bin and b/.gradle/7.4/checksums/md5-checksums.bin differ
diff --git a/.gradle/7.4/checksums/sha1-checksums.bin b/.gradle/7.4/checksums/sha1-checksums.bin
index 37d18a5f1d3ac5802ec2e11e6e2ee389d38eabe7..228d9eedbd99af90c75b73d08d1529c14e3310bc 100644
Binary files a/.gradle/7.4/checksums/sha1-checksums.bin and b/.gradle/7.4/checksums/sha1-checksums.bin differ
diff --git a/.gradle/7.4/executionHistory/executionHistory.bin b/.gradle/7.4/executionHistory/executionHistory.bin
index 8044f8db540d8ca16951815ac998f6158a86ba9c..482e3bdabfbae03cd5487a119ad5f3965e386c49 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 e57456dc4f9a187338a1af68d935fbf5cffe29da..9941b2c52553d73e13143e16fb70a977ea5e0ef9 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 ac4d206fd6144671088bac4e8af72f9d24c99d8f..4967a97b225f66ba74f8ce3a2c0c13d4676fff19 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 f382ced7e8f10e14ccd723be3c74dae1c97aa72b..12eb8cbe55628dc15efc14f86e6ba1b86813d97b 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
new file mode 100644
index 0000000000000000000000000000000000000000..ab592c7a31bfa7d10f331af39895804b94763548
Binary files /dev/null and b/.gradle/7.4/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index f7492f18c6ecf67db5af3279f7c8498953313f0a..f9bfce77ea4384b451ec4b6f1a5479072d930f33 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 22247e075c97d900294472751d70aa6810330c43..4bcaca91cdbd023010d013659aafa9c3bcf80e91 100644
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
new file mode 100644
index 0000000000000000000000000000000000000000..d94dcb441eb81719468d22e20d87091ecbebd734
Binary files /dev/null and b/.gradle/file-system.probe differ
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000000000000000000000000000000000000..e588a89280298b674f6ad86639a14bf2b86c42a9
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+ff
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 659bf43190d1afbfe1907e2e5e2bd75ad761dfb3..fb7f4a8a465d42b4a0390d464b83b99e8465bba7 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="CompilerConfiguration">
-    <bytecodeTargetLevel target="16" />
+    <bytecodeTargetLevel target="11" />
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index ba1ec5c7e20c12eb5b893684698eab151c4a8803..611e7c8ad7b91e576987485e8678b0fdad4193ae 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="GradleMigrationSettings" migrationVersion="1" />
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 3db7abf849bb2eb6f6e84f40abd01c1aba9033b5..8476b296e8a659d80d9c1da62e6ea7f7f1e15a39 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
   <component name="FrameworkDetectionExcludesConfiguration">
     <file type="web" url="file://$PROJECT_DIR$" />
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_16" default="true" project-jdk-name="corretto-16" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="corretto-18 (2)" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e96534fb27b68192f27f985d3879e173ec77adb8
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
\ No newline at end of file
diff --git a/build/classes/java/main/App$1.class b/build/classes/java/main/App$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..136eec5fd5de762f9958c0f9e0c25c95369e559e
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..6d4b4a3cf2baacad8fae05e86dc06dcb8e8aa6ed
Binary files /dev/null and b/build/classes/java/main/App.class differ
diff --git a/build/classes/java/main/Grid.class b/build/classes/java/main/Grid.class
new file mode 100644
index 0000000000000000000000000000000000000000..2979e0e7f08c7d0bff33daa48fabe02028e1045b
Binary files /dev/null and b/build/classes/java/main/Grid.class differ
diff --git a/build/classes/java/main/Model$Position.class b/build/classes/java/main/Model$Position.class
new file mode 100644
index 0000000000000000000000000000000000000000..51c52b923ab5b501b3803cc99bb5101b0b07402d
Binary files /dev/null and b/build/classes/java/main/Model$Position.class differ
diff --git a/build/classes/java/main/Model.class b/build/classes/java/main/Model.class
new file mode 100644
index 0000000000000000000000000000000000000000..5d858bfcb70dbf28f83d9ed1c56ce1f4d1db1948
Binary files /dev/null and b/build/classes/java/main/Model.class differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
new file mode 100644
index 0000000000000000000000000000000000000000..99ccfdfd3ea2fd7ca14837d733baf60e85e1d94c
Binary files /dev/null and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/Fighters/AntiFire.java b/src/main/java/Fighters/AntiFire.java
new file mode 100644
index 0000000000000000000000000000000000000000..b4a6d1cb0a2ed4f21140d489af4338e0f751f88c
--- /dev/null
+++ b/src/main/java/Fighters/AntiFire.java
@@ -0,0 +1,30 @@
+package Fighters;
+
+import javax.swing.text.Position;
+import java.util.*;
+
+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) {
+            fires.remove(position);
+            grid.paint(position.row, position.col);
+        }
+    }
+
+}
diff --git a/src/main/java/Fighters/Clouds.java b/src/main/java/Fighters/Clouds.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ceaa9dfdde5154172b2c7a63681517515a9cec7
--- /dev/null
+++ b/src/main/java/Fighters/Clouds.java
@@ -0,0 +1,35 @@
+package Fighters;
+
+
+
+
+import java.util.ArrayList;
+import java.util.List;
+import Position.Position;
+public abstract class Clouds extends AntiFire {
+
+    @Override
+    public Position activateFight(Position position) {
+        Position randomPosition = 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;
+    }
+
+
+
+
+    @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.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;
+    }
+
+}
diff --git a/src/main/java/Fighters/FireFighters.java b/src/main/java/Fighters/FireFighters.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ac517608e82375bad92e5506808badafedbc4c6
--- /dev/null
+++ b/src/main/java/Fighters/FireFighters.java
@@ -0,0 +1,58 @@
+package Fighters;
+
+import Fighters.AntiFire;
+
+import Position.Position;
+import java.util.*;
+
+public class FireFighters extends AntiFire {
+    int colCount, rowCount;
+
+    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)
+            extinguish(fire);
+        return randomPosition;
+    }
+
+
+    @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.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 Position moveTowardFire(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;
+    }
+}
diff --git a/src/main/java/Fighters/MotorizedFireFighters.java b/src/main/java/Fighters/MotorizedFireFighters.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe9b6a52257f52238c19c2fcd6d9b9d17628d49f
--- /dev/null
+++ b/src/main/java/Fighters/MotorizedFireFighters.java
@@ -0,0 +1,52 @@
+package Fighters;
+
+import Position.Position;
+import java.util.*;
+
+public  class MotorizedFireFighters extends AntiFire {
+
+    @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)
+            extinguish(fire);
+        return randomPosition;
+    }
+
+    @Override
+    public Position moveTowardFire(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;
+    }
+
+
+
+    @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.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;
+    }
+}
diff --git a/src/main/java/Fire.java b/src/main/java/Fire.java
new file mode 100644
index 0000000000000000000000000000000000000000..19aa564e6af338acd1d2b9c250b98014c45f05d5
--- /dev/null
+++ b/src/main/java/Fire.java
@@ -0,0 +1,21 @@
+
+import Position.Position;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Fire {
+    int colCount,rowCount;
+
+    private List<Position> activateFire(Position position) {
+        return next(position);
+    }
+    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.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;
+    }
+}
diff --git a/src/main/java/Grid.java b/src/main/java/Grid.java
index 23fb50d23d9ba0dd308def943a81d8fe898d40a9..4ce3285c486ee31f4b17eb0326a726740d501081 100644
--- a/src/main/java/Grid.java
+++ b/src/main/java/Grid.java
@@ -17,12 +17,12 @@ public class Grid extends Canvas{
         setFocusTraversable(true);
         setOnMousePressed(this::mousePressed);
         model = new Model(this);
-        model.initialisation(3,8);
+        model.initialisation(3,8,2,2);
     }
 
     public void restart(MouseEvent mouseEvent){
         model = new Model(this);
-        model.initialisation(3,6);
+        model.initialisation(10,50,2,1);
         getGraphicsContext2D().clearRect(0,0,width,height);
         repaint();
     }
@@ -48,7 +48,7 @@ public class Grid extends Canvas{
     }
 
     public void paintFF(int row, int col) {
-        getGraphicsContext2D().setFill(Color.BLUE);
+        getGraphicsContext2D().setFill(Color.GREEN);
         getGraphicsContext2D().fillRect(row*height/rowCount,col*width/colCount,height/rowCount,width/colCount);
     }
 
diff --git a/src/main/java/Model.java b/src/main/java/Model.java
index f23d0d13c6a3e847962201dc7c72fd5dedc0a249..7e6653f332c7d248448a91cc6a925bb51472dee8 100644
--- a/src/main/java/Model.java
+++ b/src/main/java/Model.java
@@ -1,11 +1,16 @@
+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;
 
@@ -16,14 +21,21 @@ public class Model {
     }
 
 
-    public void initialisation(int fireNumber, int fireFighterNumber){
+    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());
+
     }
 
-    private Position randomPosition() {
+
+    public Position randomPosition() {
         return new Position((int) (Math.random()*rowCount), (int) (Math.random()*colCount));
     }
 
@@ -32,6 +44,7 @@ public class Model {
         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);
@@ -50,28 +63,28 @@ public class Model {
 
     }
 
-    private List<Position> activateFire(Position position) {
+    public List<Position> activateFire(Position position) {
         return next(position);
     }
 
 
 
-    private Position activateFirefighter(Position position) {
+    public Position activateFirefighter(Position position) {
         Position randomPosition = aStepTowardFire(position);
-                //next(position).get((int) (Math.random()*next(position).size()));
+        //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;
-        }
+        for (Position fire : nextFires)
+            extinguish(fire);
+        return randomPosition;
+    }
 
-        private void extinguish(Position position) {
+    public void extinguish(Position position) {
         fires.remove(position);
         grid.paint(position.row, position.col);
     }
 
-    private List<Position> next(Position position){
+    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));
@@ -80,7 +93,7 @@ public class Model {
         return list;
     }
 
-    private Position aStepTowardFire(Position position){
+    public Position aStepTowardFire(Position position){
         Queue<Position> toVisit = new LinkedList<>();
         Set<Position> seen = new HashSet<>();
         HashMap<Position,Position> firstMove = new HashMap<>();
@@ -100,6 +113,6 @@ public class Model {
         }
         return position;
     }
-
     public record Position(int row, int col){}
-}
\ No newline at end of file
+
+}
diff --git a/src/main/java/Position/Position.java b/src/main/java/Position/Position.java
new file mode 100644
index 0000000000000000000000000000000000000000..31cbc69c281fd9ebae15ec2c8c3008b8e41fe855
--- /dev/null
+++ b/src/main/java/Position/Position.java
@@ -0,0 +1,4 @@
+package Position;
+
+public record Position(int row , int col) {
+}