diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 4121b6be45ff8815913f414f8a36c395282bfdb5..a3384eb12bb3f8d0fd4bd9a401aec2ad01a62d9a 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -15,8 +15,8 @@ public class SimulatorApplication extends javafx.application.Application {
   private static final String APP_NAME = "Firefighter simulator";
   private static final int ROW_COUNT = 20;
   private static final int COLUMN_COUNT = 20;
-  private static final int SQUARE_WIDTH = 30;
-  private static final int SQUARE_HEIGHT = 30;
+  private static final int SQUARE_WIDTH = 40;
+  private static final int SQUARE_HEIGHT = 40;
   public static final int INITIAL_FIRE_COUNT = 5;
   public static final int INITIAL_FIREFIGHTER_COUNT = 3;
   public static final int INITIAL_CLOUD_COUNT = 15;
diff --git a/src/main/java/app/miniRAPORT b/src/main/java/app/miniRAPORT
new file mode 100644
index 0000000000000000000000000000000000000000..13793de96956ab9ae1bd5ce7b469418ed6db9e70
--- /dev/null
+++ b/src/main/java/app/miniRAPORT
@@ -0,0 +1,42 @@
+MINI RAPORT
+
+
+Explication de ce quui se voit:  la couleure rouge represente le feu qui se propage
+                                 la couleure bleu represente les pompiers qui se deplacent pour eteindre les feu
+                                 la couleure verte represente les pompiers qui se deplacent pour eteindre les feu
+                                 la couleure bleu ciel represente les nuages qui se propage pour eteindre le feu
+                                 la couleure sendre represente les montagnes
+                                 la couleure sendre tes foncé represente les route
+
+
+1. Utilisation des Principes SOLID :
+
+    Single Responsibility Principle (SRP) : Chaque classe a une seule raison de changer,
+    par exemple, la classe Firefighter est responsable de la logique liée aux pompiers,
+    et la classe Fire est responsable de la logique liée au feu.
+
+    Open/Closed Principle (OCP) : Les classes sont conçues pour être extensibles sans modification.
+    JE PEUX ajouter de nouveaux types d'éléments en implémentant l'interface GridElement sans modifier les classes existantes.
+    L'EXAMPLE si je voulais creer un mofel de virus : avec les virus qui se deplacerait aléatoirement comme le feu mais en
+    infectant
+    les personnes. on aurait des medecins  a la place despompiers qui se deplaceraient aléatoirement ppour suprimer les virus les plus proche
+
+    Liskov Substitution Principle (LSP) : Les objets des classes dérivées (par exemple, Firefighter et Fire) peuvent être
+    utilisés à la place des objets de la classe de base (GridElement).
+
+    Interface Segregation Principle (ISP) : Les classes ne dépendent que des méthodes dont elles ont besoin.
+    Par exemple, Firefighter utilise la méthode update de l'interface GridElement qui est pertinente pour lui.
+
+
+2. paton
+je me suis inspirer du patron de conception Factory :
+
+    j'ai utilisé ce patron pour créer des instances d'éléments de la grille (pompiers, feux, etc.).
+    avec ce patron je peux avoir une usine pour chaque type d'élément de la grille. comme : les flammable, obstacles, les ExtinguishFire;
+
+
+
+3. Diagramme
+
+
+
diff --git a/src/main/java/model/Flammable/Virus.java b/src/main/java/model/Flammable/Virus.java
new file mode 100644
index 0000000000000000000000000000000000000000..5862d4335533f409b203eb5817af379291a3299f
--- /dev/null
+++ b/src/main/java/model/Flammable/Virus.java
@@ -0,0 +1,117 @@
+package model.Flammable;
+
+import javafx.scene.paint.Color;
+import model.BoardElement;
+import model.GameBoard;
+import model.Visitor.CrossMountain;
+import model.Visitor.CrossRoad;
+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 Virus implements Flammable{
+
+
+        private final Color color;
+
+        public Virus(Color color){
+            this.color = color;
+            initialize();
+        }
+
+        @Override
+        public Color getColor() {
+            return this.color;
+        }
+
+        @Override
+        public Boolean accept(Visitor visitor){
+            return visitor.visit(this);
+        }
+
+        @Override
+        public void initialize() {
+            FireFinder fireFinder=new FireFinder();
+            CrossMountain crossMountain = new CrossMountain();
+            Position position = GameBoard.randomPosition();
+            boolean canInitialise;
+            if(GameBoard.elementPosition.containsKey(position)) {
+                for (;;) {
+                    canInitialise=true;
+                    for (BoardElement element : GameBoard.elementPosition.get(position)) {
+                        if (element.accept(fireFinder) || element.accept(crossMountain)) {
+                            canInitialise=false;
+                            break;
+                        }
+                    }
+                    if(canInitialise){
+                        break;
+                    }
+                    position = GameBoard.randomPosition();
+                    if(!GameBoard.elementPosition.containsKey(position))break;
+                }
+                if(GameBoard.elementPosition.containsKey(position))
+                    GameBoard.elementPosition.get(position).add(this);
+                else{
+                    ArrayList<BoardElement> boardElements = new ArrayList<>();
+                    boardElements.add(this);
+                    GameBoard.elementPosition.put(position,boardElements);
+                }
+            }
+            ArrayList<BoardElement> boardElements = new ArrayList<>();
+            boardElements.add(this);
+            GameBoard.elementPosition.put(position,boardElements);
+        }
+
+        @Override
+        public void update(GameBoard gameBoard , Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) {
+            if(extinguishPosition.contains(position)){
+                return ;
+            }
+            if (gameBoard.stepNumber() % 2 == 0) {
+                List<Position> newPositions = new ArrayList<>();
+                newPositions.addAll(gameBoard.neighbors(position));
+                if(newElementPosition.containsKey(position))
+                    newElementPosition.get(position).add(this);
+                else {
+                    newElementPosition.put(position,(new ArrayList<>()));
+                    newElementPosition.get(position).add(this);
+                }
+                for(Position newPosition : newPositions){
+                    if(extinguishPosition.contains(newPosition))
+                        continue;
+                    if(GameBoard.elementPosition.containsKey(newPosition)) {
+                        for(BoardElement boardElement : GameBoard.elementPosition.get(newPosition)){
+                            if(boardElement.accept(new FireFinder()) || boardElement.accept(new CrossRoad()) || boardElement.accept(new CrossMountain())){
+                                break;
+                            }
+                            else if(!boardElement.accept( new FireFinder())&& !boardElement.accept(new CrossRoad()) && !boardElement.accept(new CrossMountain())){
+                                newElementPosition.get(newPosition).add(this);
+                            }
+                        }
+
+                    }
+                    else{
+                        ArrayList<BoardElement> boardElements = new ArrayList<>();
+                        boardElements.add(this);
+                        newElementPosition.put(newPosition,boardElements);
+                    }
+
+                }
+            }
+            else{
+                if(newElementPosition.containsKey(position))
+                    newElementPosition.get(position).add(this);
+                else {
+                    newElementPosition.put(position,(new ArrayList<>()));
+                    newElementPosition.get(position).add(this);
+                }
+            }
+
+        }
+    }
+*/