diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 7b20109cc6272fc8bd2f996d24042dc9ad05c7a5..a3076f1b5ef8ec07a7bff94ad285b9bf97d7c974 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -17,10 +17,10 @@ public class SimulatorApplication extends javafx.application.Application {
   private static final int COLUMN_COUNT = 20;
   private static final int SQUARE_WIDTH = 50;
   private static final int SQUARE_HEIGHT = 50;
-  public static final int INITIAL_FIRE_COUNT = 3;
-  public static final int INITIAL_FIREFIGHTER_COUNT = 0;
+  public static final int INITIAL_FIRE_COUNT = 1;
+  public static final int INITIAL_FIREFIGHTER_COUNT = 4;
 
-  public static final int INITIAL_CLOUD_COUNT = 3;
+  public static final int INITIAL_CLOUD_COUNT = 4;
 
   private Stage primaryStage;
   private Parent view;
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index ba7d444e1a5a5dd931de271f492e460d4165dbeb..334fe19e823206bff837f6c3bee1128389daca89 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -73,7 +73,7 @@ public class Controller {
   }
 
   private void updateBoard2(){
-    board.testScreen();
+
     List<Position> updatedPositions = board.updateToNextGeneration2();
     List<Position> updatedClearSquares = new ArrayList<>();
     List<Item> updatedSquares = new ArrayList<>();
@@ -86,6 +86,7 @@ public class Controller {
     }
     grid.repaint2(updatedSquares, updatedClearSquares);
     updateGenerationLabel(board.stepNumber());
+    //board.testScreen();
   }
 
   private void repaintGrid(){
diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java
index a4b18d8d9ef28d0157c2fe104f4b4b5fddcdfc40..40adb4a068cc70708f4cbeaba95681fd1337e108 100644
--- a/src/main/java/model/Cloud.java
+++ b/src/main/java/model/Cloud.java
@@ -16,18 +16,19 @@ public class Cloud extends Extinguisher implements Item {
 
     List<Position> move(FirefighterBoard board) {
         List<Position> result = new ArrayList<>();
+        List<Position> finalNeighborsList = new ArrayList<>();
         List<Position> neighborsList = board.neighbors(position);
         for (Position neighborPosition: neighborsList) {
-            if (board.getItemByPosition(neighborPosition) != null){
-                neighborsList.remove(neighborPosition);
+            if (board.getItemByPosition(neighborPosition) == null){
+                finalNeighborsList.add(neighborPosition);
             }
         }
-        if (neighborsList.isEmpty()){
-            return null;
+        if (finalNeighborsList.isEmpty()){
+            return new ArrayList<Position>();
         }
         Random ran = new Random();
         result.add(position);
-        position = neighborsList.get(ran.nextInt(neighborsList.size()));
+        position = finalNeighborsList.get(ran.nextInt(finalNeighborsList.size()));
         result.add(position);
         return result;
     }
diff --git a/src/main/java/model/Firefighter.java b/src/main/java/model/Firefighter.java
index 906e3eedd6e8415975fa0c6cfe00b3e9cb5643b3..e08e01094f889bbcd401dea374e106eee471b3de 100644
--- a/src/main/java/model/Firefighter.java
+++ b/src/main/java/model/Firefighter.java
@@ -22,7 +22,7 @@ public class Firefighter extends Extinguisher implements Item{
                 firstMove.put(initialMove, initialMove);
                 toVisit.add(initialMove);
             }
-            if (board.getItemByPosition(initialMove) instanceof Fire) return null;
+            if (board.getItemByPosition(initialMove) instanceof Fire) return new ArrayList<Position>();
         }
         while (!toVisit.isEmpty()) {
             Position current = toVisit.poll();
@@ -39,11 +39,10 @@ public class Firefighter extends Extinguisher implements Item{
                 firstMove.put(adjacent, firstMove.get(current));
             }
         }
-        return null;
+        return new ArrayList<Position>();
     }
 
     public String toString(){
         return "Pompier position : [" + position.row() + ", " + position.column()+ "]";
     }
-
 }
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 235d833c1aa3f0ff274fa9fe1585dd074d397700..fefb41c9f9a4c427ba3c4afb89f8a33309d7d123 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -224,6 +224,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   }
   public void testScreen(){
     Position position;
+
+    //System.out.println(itemList.toString());
+
     for (int row = 0; row < rowCount; row++){
       for (int column = 0; column < columnCount; column++){
 
diff --git a/src/main/java/model/MotorFirefighter.java b/src/main/java/model/MotorFirefighter.java
new file mode 100644
index 0000000000000000000000000000000000000000..64bf86ab8f541d977c3457654b1518bd0886eb01
--- /dev/null
+++ b/src/main/java/model/MotorFirefighter.java
@@ -0,0 +1,50 @@
+package model;
+
+import javafx.scene.paint.Color;
+import util.Position;
+import java.util.List;
+
+import java.util.*;
+
+public class MotorFirefighter extends Extinguisher implements Item{
+    public MotorFirefighter(Position position) {
+        super(position);
+        this.color = Color.PURPLE;
+    }
+
+    public List<Position> move(FirefighterBoard board) {
+        List<Position> result = new ArrayList<>();
+        Set<Position> seen = new HashSet<>();
+        HashMap<Position, Position> firstMove = new HashMap<>();
+        Queue<Position> toVisit = new LinkedList<>();
+        for (int i = 0; i < 2; i++){
+            for (Position initialMove : board.neighbors(position)) {
+                if (board.getItemByPosition(initialMove) == null) {
+                    firstMove.put(initialMove, initialMove);
+                    toVisit.add(initialMove);
+                }
+                if (board.getItemByPosition(initialMove) instanceof Fire) return new ArrayList<Position>();
+            }
+        }
+        while (!toVisit.isEmpty()) {
+            Position current = toVisit.poll();
+            if (board.getItemByPosition(current) instanceof Fire) {
+                result.add(position);
+                position = firstMove.get(current);
+                result.add(position);
+                return result;
+            }
+            for (Position adjacent : board.neighbors(current)) {
+                if (seen.contains(adjacent)) continue;
+                toVisit.add(adjacent);
+                seen.add(adjacent);
+                firstMove.put(adjacent, firstMove.get(current));
+            }
+        }
+        return new ArrayList<Position>();
+    }
+
+    public String toString(){
+        return "Pompier position : [" + position.row() + ", " + position.column()+ "]";
+    }
+}
diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java
index 28bbedd8e0e10cdcb8fe9412d07e720541baaaec..f302ac40ec86ea05f5d56331abdbf52d8192ecdb 100644
--- a/src/main/java/view/FirefighterGrid.java
+++ b/src/main/java/view/FirefighterGrid.java
@@ -104,6 +104,9 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{
         this.squareHeight = squareHeight;
         this.columnCount = columnCount;
         this.rowCount = rowCount;
+        super.setWidth(squareWidth*columnCount);
+        super.setHeight(squareHeight*rowCount);
+
     }
 
     private void paintLines(){
@@ -123,22 +126,22 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{
 
     private void paintSquare(int row, int column, Color color){
         getGraphicsContext2D().setFill(color);
-        getGraphicsContext2D().fillRect(row*squareHeight,column*squareWidth,squareHeight,squareWidth);
+        getGraphicsContext2D().fillRect(column*squareWidth,row*squareHeight, squareWidth, squareHeight);
     }
 
     public void paintTriangle(int row, int column, Color color){
         getGraphicsContext2D().setFill(color);
-        getGraphicsContext2D().fillPolygon(new double[]{row*squareHeight , row*squareHeight + squareHeight/2, (row+1)*squareHeight},
-                                           new double[]{(column+1)*squareWidth , column*squareHeight, (column+1)*squareHeight},
+        getGraphicsContext2D().fillPolygon(new double[]{column*squareWidth , column*squareWidth + squareWidth/2, (column+1)*squareWidth},
+                                           new double[]{(row+1)*squareHeight , row*squareHeight, (row+1)*squareHeight},
                                            3);
     }
 
     public void paintCircle(int row, int column, Color color){
         getGraphicsContext2D().setFill(color);
-        getGraphicsContext2D().fillOval(row*squareHeight, column*squareWidth, squareHeight, squareWidth);
+        getGraphicsContext2D().fillOval(column*squareWidth, row*squareHeight, squareHeight, squareWidth);
     }
 
     private void clearSquare(int row, int column){
-        getGraphicsContext2D().clearRect(row*squareHeight,column*squareWidth,squareHeight,squareWidth);
+        getGraphicsContext2D().clearRect(column*squareWidth,row*squareHeight, squareWidth, squareHeight);
     }
 }
\ No newline at end of file
diff --git a/src/main/resources/view/view.fxml b/src/main/resources/view/view.fxml
index 3f19ac9de44d6f0b571dc29e43bf15ff2ebeff79..336ffa315645baacbe25bf59171d2ff6d867b9c5 100644
--- a/src/main/resources/view/view.fxml
+++ b/src/main/resources/view/view.fxml
@@ -33,7 +33,7 @@
                   mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0"
                   prefWidth="200.0" styleClass="button" text="Pause"/>
   </VBox>
-  <FirefighterGrid fx:id="grid" width="1000.0" height="1000.0"
+  <FirefighterGrid fx:id="grid"
                    xmlns="http://javafx.com/javafx"
                    xmlns:fx="http://javafx.com/fxml">
   </FirefighterGrid>