diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index 8966942aee03de73e68a87ab5eda41875b89188a..0d92e00dbbd0a347cdd9a7f03e94dff731554aba 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 49405863aae00b494edce1612be226fca494db64..bc8fb137df9f101bb354ddfc9b76acac781a25a8 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 84af1bac982e9312a52aa9ba9aa23d5509ab9a63..8fc4a4d37ffc3794da21278b0e7e7e8dbe091303 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 9b9ae10214f053332d90fa497259bd818b9c02b4..183ce3f36866a5918be8ec7e8e2e4ff99f62dac0 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 b8725ad6b473dbb8ff8d32e72245358ae0f97214..5b3bdc3e93b4b93b75c77fe5047baeeba7eee662 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 f99829631ca3c57b3cb959e50f14c3f164809d83..b635deabc9b1cac73bb434c7a2dac4b97f24e938 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 25eff8e95de6232ae9d9ebf35b227ca9a0d0ecd4..19fe2a07031b6e16518095fb0847c3f5267fec00 100644
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class
index 6d88dc9a0edace933e7b9ca5f67bbdaddba48037..ded130549453c7be03cf16abfa899ad45ea7476b 100644
Binary files a/build/classes/java/main/app/SimulatorApplication.class and b/build/classes/java/main/app/SimulatorApplication.class differ
diff --git a/build/classes/java/main/app/SimulatorMain.class b/build/classes/java/main/app/SimulatorMain.class
index a2dee6a565c2ac303dd2d6027dbf08183edeeddf..1d13229f73ef27c233a432bc89aa3dffc086246a 100644
Binary files a/build/classes/java/main/app/SimulatorMain.class and b/build/classes/java/main/app/SimulatorMain.class differ
diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
index 5460b69e4ad124b6ba3858a79d483e32eb5cc8da..da47fbe685528a3342e701a12205a8f5a891a554 100644
Binary files a/build/classes/java/main/controller/Controller.class and b/build/classes/java/main/controller/Controller.class differ
diff --git a/build/classes/java/main/controller/PersistentToggleGroup.class b/build/classes/java/main/controller/PersistentToggleGroup.class
index da299736efc238eef36f74e7abed7e5b291eba8d..314954a9fd4ab6d48da5fec7067063879e670d62 100644
Binary files a/build/classes/java/main/controller/PersistentToggleGroup.class and b/build/classes/java/main/controller/PersistentToggleGroup.class differ
diff --git a/build/classes/java/main/model/Behavior.class b/build/classes/java/main/model/Behavior.class
index 7b66ceda77beed63d4117f3a5a0e60d01e373d50..c8a1c33b84f194553e3868714d53f714ee53745a 100644
Binary files a/build/classes/java/main/model/Behavior.class and b/build/classes/java/main/model/Behavior.class differ
diff --git a/build/classes/java/main/model/Board.class b/build/classes/java/main/model/Board.class
index 18242fdec83565452b8793a712481ec89a92e393..a1f8169e45fef3872ae559ad22bdf5a3d6f63dfd 100644
Binary files a/build/classes/java/main/model/Board.class and b/build/classes/java/main/model/Board.class differ
diff --git a/build/classes/java/main/model/BoardData.class b/build/classes/java/main/model/BoardData.class
index 07eb07f10a711f6f8ef0f19cf60c4172975d4ba7..df031351163a0a0b16469068925835628d0c7153 100644
Binary files a/build/classes/java/main/model/BoardData.class and b/build/classes/java/main/model/BoardData.class differ
diff --git a/build/classes/java/main/model/Cell.class b/build/classes/java/main/model/Cell.class
index c5b5ebd6bb02a92a57e1e05dacdf52857fba1e74..a6ccc8b21b59ef78490a374f74eb5bfce3f932dc 100644
Binary files a/build/classes/java/main/model/Cell.class and b/build/classes/java/main/model/Cell.class differ
diff --git a/build/classes/java/main/model/ChargeTarget.class b/build/classes/java/main/model/ChargeTarget.class
new file mode 100644
index 0000000000000000000000000000000000000000..467dbcee06e169019b57fe86d0d620254f65c983
Binary files /dev/null and b/build/classes/java/main/model/ChargeTarget.class differ
diff --git a/build/classes/java/main/model/ChargerBehavior.class b/build/classes/java/main/model/ChargerBehavior.class
new file mode 100644
index 0000000000000000000000000000000000000000..40e50666dab15c5d8701e1b2d3b0aac5d563703e
Binary files /dev/null and b/build/classes/java/main/model/ChargerBehavior.class differ
diff --git a/build/classes/java/main/model/Cloud.class b/build/classes/java/main/model/Cloud.class
index 8abe5c73fad43333b2acc6717f97fb586a2837cf..99979c80b8f8bc01a75d26d2c31792331f8b08c6 100644
Binary files a/build/classes/java/main/model/Cloud.class and b/build/classes/java/main/model/Cloud.class differ
diff --git a/build/classes/java/main/model/CloudBehavior.class b/build/classes/java/main/model/CloudBehavior.class
index b82fcd18821403a9d9289b8aa19200fd231f8b71..1c435f72cc41009d2d5d9f84aa67c2a43bcd51e1 100644
Binary files a/build/classes/java/main/model/CloudBehavior.class and b/build/classes/java/main/model/CloudBehavior.class differ
diff --git a/build/classes/java/main/model/ConnexElement.class b/build/classes/java/main/model/ConnexElement.class
new file mode 100644
index 0000000000000000000000000000000000000000..553af90201a3b9b52c6e62b7503bf412dace9bcf
Binary files /dev/null and b/build/classes/java/main/model/ConnexElement.class differ
diff --git a/build/classes/java/main/model/Element.class b/build/classes/java/main/model/Element.class
index 8e2eb1350365848b15dcaf78c2b55cde5c7ddfb1..3c37b9b5c664e7c261d89a5cf80c7b0842754dae 100644
Binary files a/build/classes/java/main/model/Element.class and b/build/classes/java/main/model/Element.class differ
diff --git a/build/classes/java/main/model/ElementFactory.class b/build/classes/java/main/model/ElementFactory.class
index 1bd421ef615c9e45a152c2d4978560b948f63951..8c69537429cd49c7b4d6915427103947d3b2bace 100644
Binary files a/build/classes/java/main/model/ElementFactory.class and b/build/classes/java/main/model/ElementFactory.class differ
diff --git a/build/classes/java/main/model/FFBehavior.class b/build/classes/java/main/model/FFBehavior.class
index 291fe9094bbfeaa70d5df89ff86cc3f4924868ba..841f978d80c0a780b8734d21e242fe4d9434b8b1 100644
Binary files a/build/classes/java/main/model/FFBehavior.class and b/build/classes/java/main/model/FFBehavior.class differ
diff --git a/build/classes/java/main/model/FFBoard.class b/build/classes/java/main/model/FFBoard.class
index 9ed68b6c6974ad6e3ccdba8b5b162feb0dedbf50..164df9e0ea9152d7ff4ec2a85af2d7b0284069f9 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 083bf54eef3faaf8e51274d1d229a5ee5f7d084d..3486ddfcd169a48edd03bc4a1272f2b9df31734a 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/FFUpdater.class b/build/classes/java/main/model/FFUpdater.class
index 3e585d7404d70b661e216810cc914f7a9c8d105b..176ed6d6e39f594306adc575db2ea8b0a8ddecf0 100644
Binary files a/build/classes/java/main/model/FFUpdater.class and b/build/classes/java/main/model/FFUpdater.class differ
diff --git a/build/classes/java/main/model/FFboardFiller.class b/build/classes/java/main/model/FFboardFiller.class
index 823516ccceb333663f42a9f493b95ff07bf5d14e..69706264fe913cc46c4410a6ca777db1457ee9a5 100644
Binary files a/build/classes/java/main/model/FFboardFiller.class and b/build/classes/java/main/model/FFboardFiller.class differ
diff --git a/build/classes/java/main/model/Fire.class b/build/classes/java/main/model/Fire.class
index 360986a08a7cb0be7450bcd306c3e8e7a6573fd0..1dd7052a4bdca160584d7b5360e4dfc3bc94dbe5 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 a63c2a3b6535781cf1e152bbb4645a4accf42d73..a59a1df9ac8f798f422d5bd7b2781bd9340b87b6 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/FireFactory.class b/build/classes/java/main/model/FireFactory.class
index 6e4183b0a1a91d569b73a44dee37ec01ec8e7e3a..59d6bccfdc7812f8331ffc923d803975f00ca81a 100644
Binary files a/build/classes/java/main/model/FireFactory.class and b/build/classes/java/main/model/FireFactory.class differ
diff --git a/build/classes/java/main/model/FireFighter.class b/build/classes/java/main/model/FireFighter.class
index 1e2297e2ca73c58649903e7346f5ad3fa4f6f0b8..5964bfc79171cfcba4143f82d20872379b4be94a 100644
Binary files a/build/classes/java/main/model/FireFighter.class and b/build/classes/java/main/model/FireFighter.class differ
diff --git a/build/classes/java/main/model/FirefighterBehavior.class b/build/classes/java/main/model/FireFighterBehavior.class
similarity index 99%
rename from build/classes/java/main/model/FirefighterBehavior.class
rename to build/classes/java/main/model/FireFighterBehavior.class
index 2bca188bdc18f223c28a8b7a8294d8cb2036cb8f..14cd4a24bff338fd74d2f17bd44686d40421da64 100644
Binary files a/build/classes/java/main/model/FirefighterBehavior.class and b/build/classes/java/main/model/FireFighterBehavior.class differ
diff --git a/build/classes/java/main/model/Forest.class b/build/classes/java/main/model/Forest.class
new file mode 100644
index 0000000000000000000000000000000000000000..bfc79442f47547ff214af4a77b0b0b5153e769af
Binary files /dev/null and b/build/classes/java/main/model/Forest.class differ
diff --git a/build/classes/java/main/model/Land.class b/build/classes/java/main/model/Land.class
index cc196ad2cb290b7506aebcb8074e7378df7e0631..68ea065d9beec6041d0beb4ce3c08aa13505baeb 100644
Binary files a/build/classes/java/main/model/Land.class and b/build/classes/java/main/model/Land.class differ
diff --git a/build/classes/java/main/model/ModelElement.class b/build/classes/java/main/model/ModelElement.class
index d3db593cc6c61187e3068ed32b7fe61f64ac09e4..ff226d67cd5a6c679a59329883f3e65397342b01 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
index 8f8c31c07c776f0bb418023db3a336f14f691707..32ce2aca05b23bd96ab7fc847112169e179ebbb7 100644
Binary files a/build/classes/java/main/model/MotorizedFireFighter.class and b/build/classes/java/main/model/MotorizedFireFighter.class differ
diff --git a/build/classes/java/main/model/Mountain.class b/build/classes/java/main/model/Mountain.class
index 55d91ac26b769014e955292d6c7e4faa355cd59e..a93d9d60573c29f1de41fd596f0611137abdb12e 100644
Binary files a/build/classes/java/main/model/Mountain.class and b/build/classes/java/main/model/Mountain.class differ
diff --git a/build/classes/java/main/model/Printable.class b/build/classes/java/main/model/Printable.class
index 4a4da6580c0bf74116ba0d997894b5afc5b6981a..6c3a303bd12db715502a540e39b80657771b2d69 100644
Binary files a/build/classes/java/main/model/Printable.class and b/build/classes/java/main/model/Printable.class differ
diff --git a/build/classes/java/main/model/QuickFire.class b/build/classes/java/main/model/QuickFire.class
new file mode 100644
index 0000000000000000000000000000000000000000..963867da10a4b51fa8119736ffe5826c9d2b3260
Binary files /dev/null and b/build/classes/java/main/model/QuickFire.class differ
diff --git a/build/classes/java/main/model/RemoverBehavior.class b/build/classes/java/main/model/RemoverBehavior.class
index be0680b2517d2851ae5e140a9a5d233c854ae81a..dd637732c93a00b59e8054ce0ceee6174794e8a2 100644
Binary files a/build/classes/java/main/model/RemoverBehavior.class and b/build/classes/java/main/model/RemoverBehavior.class differ
diff --git a/build/classes/java/main/model/Road.class b/build/classes/java/main/model/Road.class
index b3e319e61364f96bb95080e8f4872bc17e437326..2954c7d840fabb369957ca754c8a1279098a67c3 100644
Binary files a/build/classes/java/main/model/Road.class and b/build/classes/java/main/model/Road.class differ
diff --git a/build/classes/java/main/model/RoadFactory.class b/build/classes/java/main/model/RoadFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..66b302a27af3bee8dfb698aa7aba072813cbfdce
Binary files /dev/null and b/build/classes/java/main/model/RoadFactory.class differ
diff --git a/build/classes/java/main/model/Rock.class b/build/classes/java/main/model/Rock.class
index 41ee410a25e815c5d9cb896015db1ce726e96037..2dcd97f4e55156e20bb210d90e8e654202d41a80 100644
Binary files a/build/classes/java/main/model/Rock.class and b/build/classes/java/main/model/Rock.class differ
diff --git a/build/classes/java/main/model/RockBehavior.class b/build/classes/java/main/model/RockBehavior.class
new file mode 100644
index 0000000000000000000000000000000000000000..6bb980514734025b361828f12eb82e32484dfd76
Binary files /dev/null and b/build/classes/java/main/model/RockBehavior.class differ
diff --git a/build/classes/java/main/model/StandardFire.class b/build/classes/java/main/model/StandardFire.class
index 81358e7c16260b8d1d77d2d7a0650163f6d5df8f..650aa056a75d2b256738db200ccb79eddd158914 100644
Binary files a/build/classes/java/main/model/StandardFire.class and b/build/classes/java/main/model/StandardFire.class differ
diff --git a/build/classes/java/main/model/StandardFirefighter.class b/build/classes/java/main/model/StandardFireFighter.class
similarity index 86%
rename from build/classes/java/main/model/StandardFirefighter.class
rename to build/classes/java/main/model/StandardFireFighter.class
index 55c39846baf5e76796aa09fdd55f52ff13aa28bf..64cb2750980590568fcd3216325692b16f978c77 100644
Binary files a/build/classes/java/main/model/StandardFirefighter.class and b/build/classes/java/main/model/StandardFireFighter.class differ
diff --git a/build/classes/java/main/model/TangibleBehavior.class b/build/classes/java/main/model/TangibleBehavior.class
index 02e1e1bca2906667c62dbe82da8609e9e78ddf6a..1944332ebc131f7a3deadf53fd22eb0186eb92ee 100644
Binary files a/build/classes/java/main/model/TangibleBehavior.class and b/build/classes/java/main/model/TangibleBehavior.class differ
diff --git a/build/classes/java/main/model/Updatable.class b/build/classes/java/main/model/Updatable.class
index ca0085ffcc16197c036e8b623d6aa133f687c3a6..cbaa6878f9b5350a9ceca0fe8a50b1c0c1baa2ac 100644
Binary files a/build/classes/java/main/model/Updatable.class and b/build/classes/java/main/model/Updatable.class differ
diff --git a/build/classes/java/main/model/Updater.class b/build/classes/java/main/model/Updater.class
index 5094364d480368e64c5c482badb41c0fe948d624..79de3b2c4f9b5ed24a3d33bf5211531a3b166e2a 100644
Binary files a/build/classes/java/main/model/Updater.class and b/build/classes/java/main/model/Updater.class differ
diff --git a/build/classes/java/main/model/ZoneDependent.class b/build/classes/java/main/model/ZoneDependent.class
index 2aae31c665e51fc937c9336a7923a3127d04148b..69efabaada60bf71dcb11bdb8056479bdfd1b606 100644
Binary files a/build/classes/java/main/model/ZoneDependent.class and b/build/classes/java/main/model/ZoneDependent.class differ
diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class
index f0b28b3b4966d6d1c1eac55f53fff160e8e01b67..a05e120336680c15a80138be7c30617ca4e5473c 100644
Binary files a/build/classes/java/main/module-info.class and b/build/classes/java/main/module-info.class differ
diff --git a/build/classes/java/main/util/Position.class b/build/classes/java/main/util/Position.class
index afa6140ff267268bf6756e3a97e89a7b9e3ad65c..89bcfc46acba6bd77f0f54570c0b935dce0be942 100644
Binary files a/build/classes/java/main/util/Position.class and b/build/classes/java/main/util/Position.class differ
diff --git a/build/classes/java/main/util/TargetStrategy.class b/build/classes/java/main/util/TargetStrategy.class
index 91ebbd6ca418ec914ccf852cf42b85aa1df23be1..29d1e02d75754f3461b19603c654e7b3c458f1cb 100644
Binary files a/build/classes/java/main/util/TargetStrategy.class and b/build/classes/java/main/util/TargetStrategy.class differ
diff --git a/build/classes/java/main/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class
index 05ec18aeff68513e99aa82d1e6ae68a3edf3cccd..831699ca3ca58a17f7b79bad1d1464aeb6d30a4c 100644
Binary files a/build/classes/java/main/view/FirefighterGrid.class and b/build/classes/java/main/view/FirefighterGrid.class differ
diff --git a/build/classes/java/main/view/Grid.class b/build/classes/java/main/view/Grid.class
index 3db58592fb018dfd2fdd792ea9ad02a2a0d797c1..c4fa5e96b46909e2a89e512f2ad9c2d4d042260c 100644
Binary files a/build/classes/java/main/view/Grid.class and b/build/classes/java/main/view/Grid.class differ
diff --git a/build/classes/java/main/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class
index 05ff7c3e9ec43e2613194430a978bf1e0c053711..8d66f769cd36f6a121482fb2a77fe4639175b2a5 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/FFBoard.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..164df9e0ea9152d7ff4ec2a85af2d7b0284069f9
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/FFboardFiller.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/FFboardFiller.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..f6ca48892a657868c312e0f149ec52a9a7fe3fc3
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FFboardFiller.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId2
new file mode 100644
index 0000000000000000000000000000000000000000..a05e120336680c15a80138be7c30617ca4e5473c
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId2 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index bd6cd71f525a43641a292bca9740f473d8975ebd..974d8fc4ebaec68d5de9f0f6c5d3d2ac5e2e393f 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/ConnexElement.java b/src/main/java/model/ConnexElement.java
new file mode 100644
index 0000000000000000000000000000000000000000..5057c05fe82200cef5deb19f43fc82d90daf8f20
--- /dev/null
+++ b/src/main/java/model/ConnexElement.java
@@ -0,0 +1,5 @@
+package model;
+
+public interface ConnexElement extends Element {
+    public ElementFactory getFactory();
+}
diff --git a/src/main/java/model/ElementFactory.java b/src/main/java/model/ElementFactory.java
index b634d40630f74e226692a8f747864100195917a6..b720cd6d8baa6e3ccc1307ebbf83780714758df0 100644
--- a/src/main/java/model/ElementFactory.java
+++ b/src/main/java/model/ElementFactory.java
@@ -6,7 +6,6 @@ import java.util.List;
 import java.util.Map;
 
 public interface ElementFactory {
-    public ModelElement getNewType(BoardData boardData, Position position);
     public Element getNewElement(BoardData boardData, Position position);
 
 }
diff --git a/src/main/java/model/FFBoard.java b/src/main/java/model/FFBoard.java
index f334cbcdb6041acb667ed3d70d01d3a5fb771a8b..ad2a6752708410f8ef0a6ea549006e49e7b1d098 100644
--- a/src/main/java/model/FFBoard.java
+++ b/src/main/java/model/FFBoard.java
@@ -31,14 +31,15 @@ public class FFBoard implements Board<List<ModelElement>> {
     FFUpdater= new FFUpdater();
     FFboardFiller filler=new FFboardFiller();
     filler.fillBoard(boardData,new int[]{
+            1,//roads
+            20,//forests
+            10,//rocks
+            30,//mountains
             5,//firefighter
             2,//motorized firefighter
             2,//clouds
-            30,//mountains
-            10,//roads
-            20,//forests
             10,//fires
-            10//rocks
+
     });
   }
 
diff --git a/src/main/java/model/FFboardFiller.java b/src/main/java/model/FFboardFiller.java
index b552d3bb177f5062ceef7c6aab289c750892b090..d89b9e56f20978ed188346641eb35d664c5160c8 100644
--- a/src/main/java/model/FFboardFiller.java
+++ b/src/main/java/model/FFboardFiller.java
@@ -5,19 +5,25 @@ import view.ViewElement;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Random;
+import java.util.Set;
 
 public class FFboardFiller {
     Random random=new Random();
     public void fillBoard(BoardData boardData,int[] counter){
+        List<Position> positions= new ArrayList<>(List.copyOf(boardData.getNeighbors().keySet()));
         for(ViewElement ve:ViewElement.values()){
             if (ve!=ViewElement.EMPTY)
             while(counter[ve.ordinal()]>0) {
                 Element element;
+                Position p;
                 do {
-                    Position p=new Position(random.nextInt(boardData.getRowCount()), random.nextInt(boardData.getColumnCount()));
-                    element= ve.instanciate(boardData,p);
-                }while (!boardData.addElement(element));
+                   p=new Position(random.nextInt(boardData.getRowCount()), random.nextInt(boardData.getColumnCount()));
+                   element= ve.instanciate(boardData,p);
+                }while (!boardData.addElement(element) && positions.contains(element.getPosition()));
+                positions.remove(p);
                 counter[ve.ordinal()]--;
             }
         }
diff --git a/src/main/java/model/FireFactory.java b/src/main/java/model/FireFactory.java
index 374a6e5694733138cfb4faa374e11cea4ae3e162..672d44424892d5821ec8fba5d2f61efa299837e9 100644
--- a/src/main/java/model/FireFactory.java
+++ b/src/main/java/model/FireFactory.java
@@ -11,13 +11,6 @@ public class FireFactory implements ElementFactory{
     static{
         fireDictionary.put(ModelElement.FOREST,ModelElement.SLOWFIRE);
     }
-    public ModelElement getNewType(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()){
-            if (s.contains(entry.getKey())) return entry.getValue();
-        }
-        return ModelElement.FIRE;
-    }
     public Element getNewElement(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()){
diff --git a/src/main/java/model/Road.java b/src/main/java/model/Road.java
index 29e63bdbe77da7d78fe6683826522f9dca678b67..d32acffcf90444b2cc18631c751643cc89a3f7b5 100644
--- a/src/main/java/model/Road.java
+++ b/src/main/java/model/Road.java
@@ -2,9 +2,15 @@ package model;
 
 import util.Position;
 
-public class Road extends Land implements Element {
+public class Road extends Land implements Element,ConnexElement {
+    public static ElementFactory factory=new RoadFactory();
     public Road(Position position) {
         super(position);
         type=ModelElement.ROAD;
     }
+
+    @Override
+    public ElementFactory getFactory() {
+        return null;
+    }
 }
diff --git a/src/main/java/model/RoadFactory.java b/src/main/java/model/RoadFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..75da23fd9dd7bb8b4d5212955014c5cd483c99df
--- /dev/null
+++ b/src/main/java/model/RoadFactory.java
@@ -0,0 +1,34 @@
+package model;
+
+import util.Position;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+public class RoadFactory implements ElementFactory{
+    Random random = new Random();
+
+    public Element getNewElement(BoardData boardData, Position position){
+        int[][] dir={{0,1},{0,-1},{1,0},{-1,0}};
+        int[] currentDirection1,currentDirection2;
+        do{
+            currentDirection1 = dir[random.nextInt(4)];
+            currentDirection2 = dir[random.nextInt(4)];
+        }while(currentDirection1==currentDirection2);
+
+        for (int i = position.row(),j= position.column();
+             i < boardData.getRowCount() && i >= 0 && j < boardData.getColumnCount() && j >= 0 ;
+             i+=currentDirection1[0],j+=currentDirection1[1]) {
+            System.out.println(i+","+j);
+            boardData.addElement(new Road(new Position(i,j)));
+        }
+        for (int i = position.row(),j= position.column();
+             i < boardData.getRowCount() && i >= 0 && j < boardData.getColumnCount() && j >= 0 ;
+             i+=currentDirection2[0],j+=currentDirection2[1]) {
+            boardData.addElement(new Road(new Position(i,j)));
+        }
+        return new Road(position);
+    }
+}
diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java
index 6d0b17a5a32766633bb40868ed6e3949e57872d7..f49389cc22c0a8a03808bfe4ba2416e5f7057dde 100644
--- a/src/main/java/view/ViewElement.java
+++ b/src/main/java/view/ViewElement.java
@@ -7,15 +7,14 @@ import util.Position;
 import java.lang.reflect.InvocationTargetException;
 
 public enum ViewElement {
-
-  FIREFIGHTER(Color.BLUE, StandardFireFighter.class),
+  ROAD(Color.BLACK, Road.class, Road.factory),
+  FOREST(Color.DARKGREEN, Forest.class),
+  ROCK(Color.GREEN, Rock.class),
+  MOUNTAIN(Color.DARKGRAY, Mountain.class),
+  FIREFIGHTER(Color.LIGHTBLUE, StandardFireFighter.class),
   MOTORIZEDFIREFIGHTER(Color.DARKBLUE, MotorizedFireFighter.class),
-  CLOUD(Color.GRAY, Cloud.class),
-  MOUNTAIN(Color.BROWN, Mountain.class),
-  ROAD(Color.BLACK, Road.class),
-  FOREST(Color.GREEN, Forest.class),
+  CLOUD(Color.LIGHTGRAY, Cloud.class),
   FIRE(Color.RED,Fire.class,Fire.factory),
-  ROCK(Color.DARKGOLDENROD, Rock.class),
 
   EMPTY(Color.WHITE, null);
   final Color color;