diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index 8a7d940b93df112c84f1974aafc6583f732a969c..801682b4acca704d855b5ba58364e10c6be1e3e1 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.bin and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock
index ef361d8b63c134e84f7affa2d2621affa8de176b..5b176266587d46e29c3a775aa442174ff8dbf06e 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.lock and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin
index f2a336c65db20a01007e272875843babaefcf378..323467683484b9266ecd535509702c7760b5a32d 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.bin and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock
index 798d5cd3eb39830d8ca937c9a283e98363eb1566..3794939f8c5f3032a051b517b07e7ac5264934e4 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.lock and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin
index 7d944ec98a8eaa6d54745e6131228683c877919b..9e2be0dcef627ba82befe7bc04e30dba136e0c2e 100644
Binary files a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index d2e3f59c567d112182b45db78883bd7bfb215512..57aad489612f304cc3c097a326b022c7f177c918 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 93c56d2b8a81d5ee6e98ab947d377bceda18ebb0..140230ec6b331e08f23b455dfe2ec91081f6cea2 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/build/classes/java/main/model/ElementFactory.class b/build/classes/java/main/model/ElementFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..a493c4db7d9a83f99b551d0393f2f3194a70d081
Binary files /dev/null and b/build/classes/java/main/model/ElementFactory.class differ
diff --git a/build/classes/java/main/model/FFBoard.class b/build/classes/java/main/model/FFBoard.class
index c9b8a72cb01f2a502c5697bcf5525fd49946aace..22b830c77540ec5a044acbe5cf4d54a89f63f322 100644
Binary files a/build/classes/java/main/model/FFBoard.class and b/build/classes/java/main/model/FFBoard.class differ
diff --git a/build/classes/java/main/model/FFBoardData.class b/build/classes/java/main/model/FFBoardData.class
index ae88b9bbb6be6394ec0ec3fefd9be577f7a22e87..6c39baa2525b9a58c1bf337efbaeac761ef1fa41 100644
Binary files a/build/classes/java/main/model/FFBoardData.class and b/build/classes/java/main/model/FFBoardData.class differ
diff --git a/build/classes/java/main/model/Fire.class b/build/classes/java/main/model/Fire.class
index 8604d513c073cdc29e42ab5a667e94ae636069f0..6ecd16e4eb9b69b1c8dcf9bd55039fc157999244 100644
Binary files a/build/classes/java/main/model/Fire.class and b/build/classes/java/main/model/Fire.class differ
diff --git a/build/classes/java/main/model/FireBehavior.class b/build/classes/java/main/model/FireBehavior.class
index fbda223f83d841a0d2e5d0ec3a306e46366258c2..f3a5f1a37d1e68fd8ff89363887ea0ffb6d09a16 100644
Binary files a/build/classes/java/main/model/FireBehavior.class and b/build/classes/java/main/model/FireBehavior.class differ
diff --git a/build/classes/java/main/model/ModelElement.class b/build/classes/java/main/model/ModelElement.class
index 133014562eb460bf29442abefb2f7666149c8cc6..06587494c5d0b8af205116e1fec56f1c2b843c60 100644
Binary files a/build/classes/java/main/model/ModelElement.class and b/build/classes/java/main/model/ModelElement.class differ
diff --git a/build/classes/java/main/model/MotorizedFireFighter.class b/build/classes/java/main/model/MotorizedFireFighter.class
new file mode 100644
index 0000000000000000000000000000000000000000..8f8c31c07c776f0bb418023db3a336f14f691707
Binary files /dev/null and b/build/classes/java/main/model/MotorizedFireFighter.class differ
diff --git a/build/classes/java/main/model/Road.class b/build/classes/java/main/model/Road.class
new file mode 100644
index 0000000000000000000000000000000000000000..6199f31f761d0a4a447737e97acb77abd849fa79
Binary files /dev/null and b/build/classes/java/main/model/Road.class differ
diff --git a/build/classes/java/main/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class
index f2278096afc490cfaa958bc37331cacc5f40ba8c..9605485d704f388ad67b2eb579987455a1b79d60 100644
Binary files a/build/classes/java/main/view/ViewElement.class and b/build/classes/java/main/view/ViewElement.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Behavior.class.uniqueId21 b/build/tmp/compileJava/compileTransaction/stash-dir/Behavior.class.uniqueId21
new file mode 100644
index 0000000000000000000000000000000000000000..7b66ceda77beed63d4117f3a5a0e60d01e373d50
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Behavior.class.uniqueId21 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BoardData.class.uniqueId24 b/build/tmp/compileJava/compileTransaction/stash-dir/BoardData.class.uniqueId24
new file mode 100644
index 0000000000000000000000000000000000000000..1473192238ebff191ff33a083801c7c099c24bc6
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/BoardData.class.uniqueId24 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId22 b/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId22
new file mode 100644
index 0000000000000000000000000000000000000000..a31acca2d1c953a93b797c67b9600eb48fd22172
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId22 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CloudBehavior.class.uniqueId23 b/build/tmp/compileJava/compileTransaction/stash-dir/CloudBehavior.class.uniqueId23
new file mode 100644
index 0000000000000000000000000000000000000000..344f982210adb7b2522955c44e6e86888dd98f2b
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/CloudBehavior.class.uniqueId23 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId3
new file mode 100644
index 0000000000000000000000000000000000000000..6a04f4e1dcb90af98351b81bb8c0a5fe71e3561a
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId3 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Element.class.uniqueId16 b/build/tmp/compileJava/compileTransaction/stash-dir/Element.class.uniqueId16
new file mode 100644
index 0000000000000000000000000000000000000000..86796ebda7b006c90771da8c76c0f4b5e8ec76c5
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Element.class.uniqueId16 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ElementManager.class.uniqueId8 b/build/tmp/compileJava/compileTransaction/stash-dir/ElementManager.class.uniqueId8
new file mode 100644
index 0000000000000000000000000000000000000000..abc64510c990809c4aad859777a4a59aca4086cf
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/ElementManager.class.uniqueId8 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFBehavior.class.uniqueId12 b/build/tmp/compileJava/compileTransaction/stash-dir/FFBehavior.class.uniqueId12
new file mode 100644
index 0000000000000000000000000000000000000000..291fe9094bbfeaa70d5df89ff86cc3f4924868ba
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FFBehavior.class.uniqueId12 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId0
deleted file mode 100644
index c9b8a72cb01f2a502c5697bcf5525fd49946aace..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId0 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..f011c6673ea53fccef1b1a27bce0d0de70133da5
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId1 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFBoardData.class.uniqueId13 b/build/tmp/compileJava/compileTransaction/stash-dir/FFBoardData.class.uniqueId13
new file mode 100644
index 0000000000000000000000000000000000000000..6c39baa2525b9a58c1bf337efbaeac761ef1fa41
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FFBoardData.class.uniqueId13 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFUpdater.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/FFUpdater.class.uniqueId4
new file mode 100644
index 0000000000000000000000000000000000000000..f18682c2c9367d3033da83621242d3dead5202c6
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FFUpdater.class.uniqueId4 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId5
new file mode 100644
index 0000000000000000000000000000000000000000..6ecd16e4eb9b69b1c8dcf9bd55039fc157999244
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId5 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireBehavior.class.uniqueId19 b/build/tmp/compileJava/compileTransaction/stash-dir/FireBehavior.class.uniqueId19
new file mode 100644
index 0000000000000000000000000000000000000000..fbda223f83d841a0d2e5d0ec3a306e46366258c2
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FireBehavior.class.uniqueId19 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId26 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId26
new file mode 100644
index 0000000000000000000000000000000000000000..46f71e21c725c1bfb76086ef444cdc525879437e
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId26 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterBehavior.class.uniqueId11 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterBehavior.class.uniqueId11
new file mode 100644
index 0000000000000000000000000000000000000000..3685400111fbb247a6d748f2fc008267a4152b38
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterBehavior.class.uniqueId11 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId15 b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId15
new file mode 100644
index 0000000000000000000000000000000000000000..05ec18aeff68513e99aa82d1e6ae68a3edf3cccd
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId15 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId2
deleted file mode 100644
index 133014562eb460bf29442abefb2f7666149c8cc6..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId2 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId9 b/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId9
new file mode 100644
index 0000000000000000000000000000000000000000..23b874024299c05963109c14f605b1de8021616d
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId9 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId10 b/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId10
new file mode 100644
index 0000000000000000000000000000000000000000..8f8c31c07c776f0bb418023db3a336f14f691707
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId10 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId17 b/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId17
new file mode 100644
index 0000000000000000000000000000000000000000..8fe05667e5c8fafa6d3f2372371cb9667027db77
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId17 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/RemoverBehavior.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/RemoverBehavior.class.uniqueId2
new file mode 100644
index 0000000000000000000000000000000000000000..04db6553438809493d5f56a17c14984108ebf74f
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/RemoverBehavior.class.uniqueId2 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId20 b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId20
new file mode 100644
index 0000000000000000000000000000000000000000..6d88dc9a0edace933e7b9ca5f67bbdaddba48037
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId20 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/StandardFire.class.uniqueId27 b/build/tmp/compileJava/compileTransaction/stash-dir/StandardFire.class.uniqueId27
new file mode 100644
index 0000000000000000000000000000000000000000..6d04a90edcec07b7d1375dffb8a54bc7a4ae1aa9
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/StandardFire.class.uniqueId27 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId18
similarity index 95%
rename from build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId3
rename to build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId18
index e50baa20089256b969478bf81fa2a00ffb4e2f73..fc5b93fe24ca479ac79d43a6c4b73789cb475381 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId3 and b/build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId18 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/TangibleBehavior.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/TangibleBehavior.class.uniqueId6
new file mode 100644
index 0000000000000000000000000000000000000000..7a4f2f1c104b6561239e3e8f93096cfebb71097b
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/TangibleBehavior.class.uniqueId6 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Updatable.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/Updatable.class.uniqueId7
new file mode 100644
index 0000000000000000000000000000000000000000..ca0085ffcc16197c036e8b623d6aa133f687c3a6
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Updatable.class.uniqueId7 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Updater.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Updater.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..5094364d480368e64c5c482badb41c0fe948d624
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Updater.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ViewElement.class.uniqueId25 b/build/tmp/compileJava/compileTransaction/stash-dir/ViewElement.class.uniqueId25
new file mode 100644
index 0000000000000000000000000000000000000000..552725fc4d9e4c1db6cd5180f0a7c77471b79777
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/ViewElement.class.uniqueId25 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId14
similarity index 100%
rename from build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId1
rename to build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId14
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index d61a78cf073388e04d0cd756b75702ada7870d81..5e158cc7c168f519415f9982e559dccee63b42ed 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/model/ElementFactory.java b/src/main/java/model/ElementFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..d8b78aaa60f787b4397f82f6dd17e440e47b8487
--- /dev/null
+++ b/src/main/java/model/ElementFactory.java
@@ -0,0 +1,13 @@
+package model;
+
+import util.Position;
+
+public class ElementFactory {
+    //this is using the factoryMethod design pattern (I'm writing this it just in case )
+    public static Element createElement(BoardData boardData,ModelElement modelElement, Position position){
+        Element e=modelElement.instanciate(position);
+        boardData.addElement(e);
+        return e;
+    }
+
+}
diff --git a/src/main/java/model/FFBoard.java b/src/main/java/model/FFBoard.java
index 2fe2d4b61cdbc833135be36b82e769243cce6a71..c6c971fe6f47f2719470d3540e869c7c54c64724 100644
--- a/src/main/java/model/FFBoard.java
+++ b/src/main/java/model/FFBoard.java
@@ -33,10 +33,12 @@ public class FFBoard implements Board<List<ModelElement>> {
       boardData.addElement(new StandardFire(randomPosition()));
      for (int index = 0; index < initialFirefighterCount; index++)
        boardData.addElement(new StandardFireFighter(randomPosition()));
+    for (int index = 0; index < 2; index++)
+      boardData.addElement(new MotorizedFireFighter(randomPosition()));
     for (int index = 0; index < 10; index++)
       boardData.addElement(new Cloud(randomPosition()));
     for (int index = 0; index < 50; index++)
-      boardData.addElement(new Mountain(randomPosition()));
+      boardData.addElement(new Road(randomPosition()));
 
   }
 
diff --git a/src/main/java/model/FFBoardData.java b/src/main/java/model/FFBoardData.java
index 2ab57bf9fba7b3fdeba1a9e8a2fdc4770a143a2b..1f88593815355d23e72482ecd4de425871ef7dbf 100644
--- a/src/main/java/model/FFBoardData.java
+++ b/src/main/java/model/FFBoardData.java
@@ -56,9 +56,12 @@ public class FFBoardData implements BoardData{
         return neighbors.get(position);
     }
     public void addElement(Element element){
-        elementList.get(element.getType().ordinal()).add(element);
-        getCell(element.getPosition()).Content.add(element);
-        FFUpdater.modifiedPositions.add(element.getPosition());
+        if(element!=null)
+        {
+            elementList.get(element.getType().ordinal()).add(element);
+            getCell(element.getPosition()).Content.add(element);
+            FFUpdater.modifiedPositions.add(element.getPosition());
+        }
     }
     public void removeElement(Element element){
         FFUpdater.modifiedPositions.add(element.getPosition());
diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java
index 3cb31a89f822c277f506dbe8fea8ceda45d5dcdf..56d5a02b821709ad3c6c11e277e7ad148d215290 100644
--- a/src/main/java/model/Fire.java
+++ b/src/main/java/model/Fire.java
@@ -12,12 +12,14 @@ public abstract class Fire implements Element,Updatable{
     ModelElement type;
     Position position;
     static Behavior behavior=new FireBehavior();
-    Map<ModelElement,ModelElement> FireDictionary=new HashMap<>(); //.put(MAISON,FEUMAISON)
+    Map<ModelElement,ModelElement> fireDictionary=new HashMap<>();
+     //.put(MAISON,FEUMAISON)
 
     public Fire(int delay, ModelElement type, Position position) {
         this.delay = delay;
         this.type = type;
         this.position = position;
+        fireDictionary.put(ModelElement.MOUNTAIN,null);
     }
     @Override
     public Position getPosition() {
@@ -29,7 +31,7 @@ public abstract class Fire implements Element,Updatable{
     }
     private Fire getNewFireByType(BoardData boardData,Position position){
         List<ModelElement> s = boardData.getCell(position).Content.stream().map(x -> x.getType()).toList();
-        for(Map.Entry<ModelElement,ModelElement> entry: FireDictionary.entrySet()){
+        for(Map.Entry<ModelElement,ModelElement> entry: fireDictionary.entrySet()){
             if (s.contains(entry.getKey())) return (Fire) entry.getValue().instanciate(position);
         }
         return new StandardFire(position);
@@ -38,8 +40,7 @@ public abstract class Fire implements Element,Updatable{
     public List<Position> updateSelf(BoardData boardData) {
         List<Position> positions=behavior.update(boardData,this);
         for (Position p:positions) {
-
-            boardData.addElement(new StandardFire(p));
+            boardData.addElement(getNewFireByType(boardData,p));
         }
         return positions;
     }
diff --git a/src/main/java/model/FireBehavior.java b/src/main/java/model/FireBehavior.java
index 4630bd8ef1e32c48c2b8de53763be6dfe2d221fc..db0d8bc322a88716ddac7090d2b5387d6f5f5bda 100644
--- a/src/main/java/model/FireBehavior.java
+++ b/src/main/java/model/FireBehavior.java
@@ -8,7 +8,7 @@ import java.util.Map;
 import java.util.Set;
 
 public class FireBehavior extends FFBehavior /*implements TangibleBehavior<ModelElement>*/ {
-    private List<ModelElement> obstacles=List.of(ModelElement.MOUNTAIN);
+    private List<ModelElement> obstacles=List.of(ModelElement.MOUNTAIN,ModelElement.ROAD);
 
     @Override
     public List<Position> update(BoardData boardData,Element element) {
diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java
index 6727141bc57022333c93b0091f9a8ba739244171..ee7fdfcb81fe454bed272cb5831799f195c8f28a 100644
--- a/src/main/java/model/ModelElement.java
+++ b/src/main/java/model/ModelElement.java
@@ -10,9 +10,11 @@ public enum ModelElement {
 
 
   FIREFIGHTER(StandardFireFighter.class),
+  MOTORIZEDFIREFIGHTER(MotorizedFireFighter.class),
   FIRE(StandardFire.class),
   CLOUD(Cloud.class),
-  MOUNTAIN(Mountain.class);
+  MOUNTAIN(Mountain.class),
+  ROAD(Road.class);
 
 
   public final Class<?> c;
diff --git a/src/main/java/model/MotorizedFireFighter.java b/src/main/java/model/MotorizedFireFighter.java
new file mode 100644
index 0000000000000000000000000000000000000000..828bff5639cada8756c98794233bffc6adf96695
--- /dev/null
+++ b/src/main/java/model/MotorizedFireFighter.java
@@ -0,0 +1,9 @@
+package model;
+
+import util.Position;
+
+public class MotorizedFireFighter extends FireFighter implements Updatable{
+    public MotorizedFireFighter(Position position) {
+        super(2, ModelElement.MOTORIZEDFIREFIGHTER, position);
+    }
+}
diff --git a/src/main/java/model/Road.java b/src/main/java/model/Road.java
new file mode 100644
index 0000000000000000000000000000000000000000..436eb5db98ebcfa75657c9cd727dba929178356d
--- /dev/null
+++ b/src/main/java/model/Road.java
@@ -0,0 +1,23 @@
+package model;
+
+import util.Position;
+
+public class Road implements Element {
+    Position position;
+    ModelElement type;
+
+    public Road(Position position) {
+        this.position = position;
+        type=ModelElement.ROAD;
+    }
+
+    @Override
+    public Position getPosition() {
+        return position;
+    }
+
+    @Override
+    public ModelElement getType() {
+        return type;
+    }
+}
diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java
index 4695ecd5fd6bcd79e72f68ebedcea869d944c5af..82ab204e0ce52ca949a69ced435a9ef542ca7449 100644
--- a/src/main/java/view/ViewElement.java
+++ b/src/main/java/view/ViewElement.java
@@ -3,7 +3,7 @@ package view;
 import javafx.scene.paint.Color;
 
 public enum ViewElement {
-  FIREFIGHTER(Color.BLUE), FIRE(Color.RED),CLOUD(Color.GRAY) ,MOUNTAIN(Color.BROWN) , EMPTY(Color.WHITE);
+  FIREFIGHTER(Color.BLUE), MOTORIZEDFIREFIGHTER(Color.DARKBLUE), FIRE(Color.RED),CLOUD(Color.GRAY)  ,MOUNTAIN(Color.BROWN),ROAD(Color.BLACK), EMPTY(Color.WHITE);
   final Color color;
   ViewElement(Color color) {
     this.color = color;