diff --git a/.gradle/8.4/checksums/checksums.lock b/.gradle/8.4/checksums/checksums.lock
new file mode 100644
index 0000000000000000000000000000000000000000..0d396a9ce9192b40f12e2f15159b98e80b81878f
Binary files /dev/null and b/.gradle/8.4/checksums/checksums.lock differ
diff --git a/.gradle/8.4/checksums/md5-checksums.bin b/.gradle/8.4/checksums/md5-checksums.bin
new file mode 100644
index 0000000000000000000000000000000000000000..c769c9c87c437aae1bc23ab4875bffb84a413227
Binary files /dev/null and b/.gradle/8.4/checksums/md5-checksums.bin differ
diff --git a/.gradle/8.4/checksums/sha1-checksums.bin b/.gradle/8.4/checksums/sha1-checksums.bin
new file mode 100644
index 0000000000000000000000000000000000000000..273fa1e6b3c6a85dffc6febd8b98e828279ae3ec
Binary files /dev/null and b/.gradle/8.4/checksums/sha1-checksums.bin differ
diff --git a/.gradle/8.4/dependencies-accessors/dependencies-accessors.lock b/.gradle/8.4/dependencies-accessors/dependencies-accessors.lock
new file mode 100644
index 0000000000000000000000000000000000000000..2c777a753252619ac176e75e2118610e12fd65ed
Binary files /dev/null and b/.gradle/8.4/dependencies-accessors/dependencies-accessors.lock differ
diff --git a/.gradle/8.4/dependencies-accessors/gc.properties b/.gradle/8.4/dependencies-accessors/gc.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin
new file mode 100644
index 0000000000000000000000000000000000000000..23b910c84593008cc664b21a2ec6261c0629fdcf
Binary files /dev/null and b/.gradle/8.4/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.4/executionHistory/executionHistory.lock b/.gradle/8.4/executionHistory/executionHistory.lock
new file mode 100644
index 0000000000000000000000000000000000000000..b7c964893efa8831ad8806d4f1343a8bf6d5349c
Binary files /dev/null and b/.gradle/8.4/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.4/fileChanges/last-build.bin b/.gradle/8.4/fileChanges/last-build.bin
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
Binary files /dev/null and b/.gradle/8.4/fileChanges/last-build.bin differ
diff --git a/.gradle/8.4/fileHashes/fileHashes.bin b/.gradle/8.4/fileHashes/fileHashes.bin
new file mode 100644
index 0000000000000000000000000000000000000000..01d4ae1131c3e851320bb8b6e29f1d92cc6e2874
Binary files /dev/null and b/.gradle/8.4/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.4/fileHashes/fileHashes.lock b/.gradle/8.4/fileHashes/fileHashes.lock
new file mode 100644
index 0000000000000000000000000000000000000000..ee0b1b30e3c0629debb4a250dfa42950f0b96b4e
Binary files /dev/null and b/.gradle/8.4/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.4/fileHashes/resourceHashesCache.bin b/.gradle/8.4/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000000000000000000000000000000000000..50a163583b8b043ef51c8ca6050419b3c8a72c7d
Binary files /dev/null and b/.gradle/8.4/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/8.4/gc.properties b/.gradle/8.4/gc.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000000000000000000000000000000000000..b806b428a767754d77dffa311cbd75688d170cff
Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000000000000000000000000000000000000..0464ff7791ad71cc1a0ce58c97398d0427502e25
--- /dev/null
+++ b/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Wed Nov 22 20:14:26 CET 2023
+gradle.version=8.4
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000000000000000000000000000000000000..501348736c0f0b2b8f1f95eb4bdcf9a9365b09d6
Binary files /dev/null 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..b45dd6f87ac93474a3344a334ee26a378d6cbc42
Binary files /dev/null and b/.gradle/file-system.probe differ
diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class
new file mode 100644
index 0000000000000000000000000000000000000000..79653026e5c8543cdf4454eae8200ea087bac7ff
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..4530cc2971636d0c78bcf91139a4f699c2f20eb4
Binary files /dev/null and b/build/classes/java/main/app/SimulatorMain.class differ
diff --git a/build/classes/java/main/controller/controllerMenu.class b/build/classes/java/main/controller/controllerMenu.class
new file mode 100644
index 0000000000000000000000000000000000000000..ab696f6c396ca7dcad7029c2f7e94c82303accd9
Binary files /dev/null and b/build/classes/java/main/controller/controllerMenu.class differ
diff --git a/build/classes/java/main/controller/fireFigther/ControllerFireFigtherBord.class b/build/classes/java/main/controller/fireFigther/ControllerFireFigtherBord.class
new file mode 100644
index 0000000000000000000000000000000000000000..f488ab73b0d3a83ae71afcf7d32b537b4091b18c
Binary files /dev/null and b/build/classes/java/main/controller/fireFigther/ControllerFireFigtherBord.class differ
diff --git a/build/classes/java/main/controller/fireFigther/PersistentToggleGroup.class b/build/classes/java/main/controller/fireFigther/PersistentToggleGroup.class
new file mode 100644
index 0000000000000000000000000000000000000000..2e4bfd31af0cd5e71a813e7d3a4392cf9643e118
Binary files /dev/null and b/build/classes/java/main/controller/fireFigther/PersistentToggleGroup.class differ
diff --git a/build/classes/java/main/model/Board.class b/build/classes/java/main/model/Board.class
new file mode 100644
index 0000000000000000000000000000000000000000..78a05f5ff2cef6594a26e4118589211ff4a7f60e
Binary files /dev/null and b/build/classes/java/main/model/Board.class differ
diff --git a/build/classes/java/main/model/Element/Cloud.class b/build/classes/java/main/model/Element/Cloud.class
new file mode 100644
index 0000000000000000000000000000000000000000..8886290a6125c437e80a7faae281022e0cb9f633
Binary files /dev/null and b/build/classes/java/main/model/Element/Cloud.class differ
diff --git a/build/classes/java/main/model/Element/Fire.class b/build/classes/java/main/model/Element/Fire.class
new file mode 100644
index 0000000000000000000000000000000000000000..75cfe77d8e557cccf15d9a8f43b6b3e49aa4a77a
Binary files /dev/null and b/build/classes/java/main/model/Element/Fire.class differ
diff --git a/build/classes/java/main/model/Element/FireFigther.class b/build/classes/java/main/model/Element/FireFigther.class
new file mode 100644
index 0000000000000000000000000000000000000000..e752d1c02a0e0ae6d18d0eed1ab81b5f46e5bde0
Binary files /dev/null and b/build/classes/java/main/model/Element/FireFigther.class differ
diff --git a/build/classes/java/main/model/Element/ModelElement.class b/build/classes/java/main/model/Element/ModelElement.class
new file mode 100644
index 0000000000000000000000000000000000000000..3e8f2fe80c25d02073a3cbc16b2f8d0e0c064c33
Binary files /dev/null and b/build/classes/java/main/model/Element/ModelElement.class differ
diff --git a/build/classes/java/main/model/Element/MotorisedFirefigther.class b/build/classes/java/main/model/Element/MotorisedFirefigther.class
new file mode 100644
index 0000000000000000000000000000000000000000..e918e428d01acbfa257155770637ad9a2c98b2df
Binary files /dev/null and b/build/classes/java/main/model/Element/MotorisedFirefigther.class differ
diff --git a/build/classes/java/main/model/Element/Mountain.class b/build/classes/java/main/model/Element/Mountain.class
new file mode 100644
index 0000000000000000000000000000000000000000..5b0ceda04922d3faac37734a3949ccd9876ddb50
Binary files /dev/null and b/build/classes/java/main/model/Element/Mountain.class differ
diff --git a/build/classes/java/main/model/Element/Road.class b/build/classes/java/main/model/Element/Road.class
new file mode 100644
index 0000000000000000000000000000000000000000..33a01f995fe95c4ff878c3c625522f6775060059
Binary files /dev/null and b/build/classes/java/main/model/Element/Road.class differ
diff --git a/build/classes/java/main/model/Element/Rockerie.class b/build/classes/java/main/model/Element/Rockerie.class
new file mode 100644
index 0000000000000000000000000000000000000000..0ad2ce30ff4054aaeeee0bedf57eb4941e7949e8
Binary files /dev/null and b/build/classes/java/main/model/Element/Rockerie.class differ
diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class
new file mode 100644
index 0000000000000000000000000000000000000000..d102989f64dd2b11f2f93aee28b47dc5d460ca4c
Binary files /dev/null and b/build/classes/java/main/model/FirefighterBoard.class differ
diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class
new file mode 100644
index 0000000000000000000000000000000000000000..0e3710ab45ba151ddc0776ef50a1dd310d9846d7
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..b01c34770ddcee9fb9247441aa31c14fcb6fc662
Binary files /dev/null and b/build/classes/java/main/util/Position.class differ
diff --git a/build/classes/java/main/util/Tools.class b/build/classes/java/main/util/Tools.class
new file mode 100644
index 0000000000000000000000000000000000000000..824ee22bf406b942acc14d94d8737fa0afd14d8a
Binary files /dev/null and b/build/classes/java/main/util/Tools.class differ
diff --git a/build/classes/java/main/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class
new file mode 100644
index 0000000000000000000000000000000000000000..d3aa8b502db4a33b10f399e43266e4f7e63828a1
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..3d42b97050079349780725b186452a4ef88502d2
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..6a770ed265853e93f7262f61f4f47112d408c139
Binary files /dev/null and b/build/classes/java/main/view/ViewElement.class differ
diff --git a/build/classes/java/test/model/FirefighterBoardTest.class b/build/classes/java/test/model/FirefighterBoardTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..2f78280a259abd0179915f2984b66b82f886e0df
Binary files /dev/null and b/build/classes/java/test/model/FirefighterBoardTest.class differ
diff --git a/build/classes/java/test/view/FirefighterGridTest.class b/build/classes/java/test/view/FirefighterGridTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..de04ddb3608a2a6e826f6764e68891eaa86f2722
Binary files /dev/null and b/build/classes/java/test/view/FirefighterGridTest.class differ
diff --git a/build/reports/tests/test/classes/model.FirefighterBoardTest.html b/build/reports/tests/test/classes/model.FirefighterBoardTest.html
new file mode 100644
index 0000000000000000000000000000000000000000..d78e169a4490a20eae8f0317c73a69d48e179cd8
--- /dev/null
+++ b/build/reports/tests/test/classes/model.FirefighterBoardTest.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - FirefighterBoardTest</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>FirefighterBoardTest</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; 
+<a href="../packages/model.html">model</a> &gt; FirefighterBoardTest</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">1</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.068s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">75%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Tests</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<div class="test">
+<a name="testGetState_afterSet()"></a>
+<h3 class="failures">testGetState_afterSet()</h3>
+<span class="code">
+<pre>java.lang.AssertionError: 
+Expecting actual not to be null
+	at model.FirefighterBoardTest.testGetState_afterSet(FirefighterBoardTest.java:36)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+</pre>
+</span>
+</div>
+</div>
+<div id="tab1" class="tab">
+<h2>Tests</h2>
+<table>
+<thead>
+<tr>
+<th>Test</th>
+<th>Duration</th>
+<th>Result</th>
+</tr>
+</thead>
+<tr>
+<td class="success">testColumnCount()</td>
+<td class="success">0.051s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="failures">testGetState_afterSet()</td>
+<td class="failures">0.013s</td>
+<td class="failures">failed</td>
+</tr>
+<tr>
+<td class="success">testRowCount()</td>
+<td class="success">0.001s</td>
+<td class="success">passed</td>
+</tr>
+<tr>
+<td class="success">testStepNumber()</td>
+<td class="success">0.003s</td>
+<td class="success">passed</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.4</a> at 22 nov. 2023, 21:05:34</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/css/base-style.css b/build/reports/tests/test/css/base-style.css
new file mode 100644
index 0000000000000000000000000000000000000000..4afa73e3ddcf5e21bdd0a22ac575dc99b2e3d826
--- /dev/null
+++ b/build/reports/tests/test/css/base-style.css
@@ -0,0 +1,179 @@
+
+body {
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+    font-size: 12pt;
+}
+
+body, a, a:visited {
+    color: #303030;
+}
+
+#content {
+    padding-left: 50px;
+    padding-right: 50px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+}
+
+#content h1 {
+    font-size: 160%;
+    margin-bottom: 10px;
+}
+
+#footer {
+    margin-top: 100px;
+    font-size: 80%;
+    white-space: nowrap;
+}
+
+#footer, #footer a {
+    color: #a0a0a0;
+}
+
+#line-wrapping-toggle {
+    vertical-align: middle;
+}
+
+#label-for-line-wrapping-toggle {
+    vertical-align: middle;
+}
+
+ul {
+    margin-left: 0;
+}
+
+h1, h2, h3 {
+    white-space: nowrap;
+}
+
+h2 {
+    font-size: 120%;
+}
+
+ul.tabLinks {
+    padding-left: 0;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    overflow: auto;
+    min-width: 800px;
+    width: auto !important;
+    width: 800px;
+}
+
+ul.tabLinks li {
+    float: left;
+    height: 100%;
+    list-style: none;
+    padding-left: 10px;
+    padding-right: 10px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    margin-bottom: 0;
+    -moz-border-radius: 7px;
+    border-radius: 7px;
+    margin-right: 25px;
+    border: solid 1px #d4d4d4;
+    background-color: #f0f0f0;
+}
+
+ul.tabLinks li:hover {
+    background-color: #fafafa;
+}
+
+ul.tabLinks li.selected {
+    background-color: #c5f0f5;
+    border-color: #c5f0f5;
+}
+
+ul.tabLinks a {
+    font-size: 120%;
+    display: block;
+    outline: none;
+    text-decoration: none;
+    margin: 0;
+    padding: 0;
+}
+
+ul.tabLinks li h2 {
+    margin: 0;
+    padding: 0;
+}
+
+div.tab {
+}
+
+div.selected {
+    display: block;
+}
+
+div.deselected {
+    display: none;
+}
+
+div.tab table {
+    min-width: 350px;
+    width: auto !important;
+    width: 350px;
+    border-collapse: collapse;
+}
+
+div.tab th, div.tab table {
+    border-bottom: solid #d0d0d0 1px;
+}
+
+div.tab th {
+    text-align: left;
+    white-space: nowrap;
+    padding-left: 6em;
+}
+
+div.tab th:first-child {
+    padding-left: 0;
+}
+
+div.tab td {
+    white-space: nowrap;
+    padding-left: 6em;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+div.tab td:first-child {
+    padding-left: 0;
+}
+
+div.tab td.numeric, div.tab th.numeric {
+    text-align: right;
+}
+
+span.code {
+    display: inline-block;
+    margin-top: 0em;
+    margin-bottom: 1em;
+}
+
+span.code pre {
+    font-size: 11pt;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    padding-left: 10px;
+    padding-right: 10px;
+    margin: 0;
+    background-color: #f7f7f7;
+    border: solid 1px #d0d0d0;
+    min-width: 700px;
+    width: auto !important;
+    width: 700px;
+}
+
+span.wrapped pre {
+    word-wrap: break-word;
+    white-space: pre-wrap;
+    word-break: break-all;
+}
+
+label.hidden {
+    display: none;
+}
\ No newline at end of file
diff --git a/build/reports/tests/test/css/style.css b/build/reports/tests/test/css/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..3dc4913e7a077a1f1f3810b1f20cc9275fb236bf
--- /dev/null
+++ b/build/reports/tests/test/css/style.css
@@ -0,0 +1,84 @@
+
+#summary {
+    margin-top: 30px;
+    margin-bottom: 40px;
+}
+
+#summary table {
+    border-collapse: collapse;
+}
+
+#summary td {
+    vertical-align: top;
+}
+
+.breadcrumbs, .breadcrumbs a {
+    color: #606060;
+}
+
+.infoBox {
+    width: 110px;
+    padding-top: 15px;
+    padding-bottom: 15px;
+    text-align: center;
+}
+
+.infoBox p {
+    margin: 0;
+}
+
+.counter, .percent {
+    font-size: 120%;
+    font-weight: bold;
+    margin-bottom: 8px;
+}
+
+#duration {
+    width: 125px;
+}
+
+#successRate, .summaryGroup {
+    border: solid 2px #d0d0d0;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+}
+
+#successRate {
+    width: 140px;
+    margin-left: 35px;
+}
+
+#successRate .percent {
+    font-size: 180%;
+}
+
+.success, .success a {
+    color: #008000;
+}
+
+div.success, #successRate.success {
+    background-color: #bbd9bb;
+    border-color: #008000;
+}
+
+.failures, .failures a {
+    color: #b60808;
+}
+
+.skipped, .skipped a {
+    color: #c09853;
+}
+
+div.failures, #successRate.failures {
+    background-color: #ecdada;
+    border-color: #b60808;
+}
+
+ul.linkList {
+    padding-left: 0;
+}
+
+ul.linkList li {
+    list-style: none;
+    margin-bottom: 5px;
+}
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..8ff9b4a0ed37da7ed032a168adfd0711d2fa32fc
--- /dev/null
+++ b/build/reports/tests/test/index.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Test Summary</title>
+<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="css/style.css" rel="stylesheet" type="text/css"/>
+<script src="js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Test Summary</h1>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">1</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.068s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">75%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Packages</a>
+</li>
+<li>
+<a href="#tab2">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<ul class="linkList">
+<li>
+<a href="classes/model.FirefighterBoardTest.html">FirefighterBoardTest</a>.
+<a href="classes/model.FirefighterBoardTest.html#testGetState_afterSet()">testGetState_afterSet()</a>
+</li>
+</ul>
+</div>
+<div id="tab1" class="tab">
+<h2>Packages</h2>
+<table>
+<thead>
+<tr>
+<th>Package</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="failures">
+<a href="packages/model.html">model</a>
+</td>
+<td>4</td>
+<td>1</td>
+<td>0</td>
+<td>0.068s</td>
+<td class="failures">75%</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="tab2" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="failures">
+<a href="classes/model.FirefighterBoardTest.html">model.FirefighterBoardTest</a>
+</td>
+<td>4</td>
+<td>1</td>
+<td>0</td>
+<td>0.068s</td>
+<td class="failures">75%</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.4</a> at 22 nov. 2023, 21:05:34</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/reports/tests/test/js/report.js b/build/reports/tests/test/js/report.js
new file mode 100644
index 0000000000000000000000000000000000000000..83bab4a19f36a6f460c6747ad6b7252f63a1fad3
--- /dev/null
+++ b/build/reports/tests/test/js/report.js
@@ -0,0 +1,194 @@
+(function (window, document) {
+    "use strict";
+
+    var tabs = {};
+
+    function changeElementClass(element, classValue) {
+        if (element.getAttribute("className")) {
+            element.setAttribute("className", classValue);
+        } else {
+            element.setAttribute("class", classValue);
+        }
+    }
+
+    function getClassAttribute(element) {
+        if (element.getAttribute("className")) {
+            return element.getAttribute("className");
+        } else {
+            return element.getAttribute("class");
+        }
+    }
+
+    function addClass(element, classValue) {
+        changeElementClass(element, getClassAttribute(element) + " " + classValue);
+    }
+
+    function removeClass(element, classValue) {
+        changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
+    }
+
+    function initTabs() {
+        var container = document.getElementById("tabs");
+
+        tabs.tabs = findTabs(container);
+        tabs.titles = findTitles(tabs.tabs);
+        tabs.headers = findHeaders(container);
+        tabs.select = select;
+        tabs.deselectAll = deselectAll;
+        tabs.select(0);
+
+        return true;
+    }
+
+    function getCheckBox() {
+        return document.getElementById("line-wrapping-toggle");
+    }
+
+    function getLabelForCheckBox() {
+        return document.getElementById("label-for-line-wrapping-toggle");
+    }
+
+    function findCodeBlocks() {
+        var spans = document.getElementById("tabs").getElementsByTagName("span");
+        var codeBlocks = [];
+        for (var i = 0; i < spans.length; ++i) {
+            if (spans[i].className.indexOf("code") >= 0) {
+                codeBlocks.push(spans[i]);
+            }
+        }
+        return codeBlocks;
+    }
+
+    function forAllCodeBlocks(operation) {
+        var codeBlocks = findCodeBlocks();
+
+        for (var i = 0; i < codeBlocks.length; ++i) {
+            operation(codeBlocks[i], "wrapped");
+        }
+    }
+
+    function toggleLineWrapping() {
+        var checkBox = getCheckBox();
+
+        if (checkBox.checked) {
+            forAllCodeBlocks(addClass);
+        } else {
+            forAllCodeBlocks(removeClass);
+        }
+    }
+
+    function initControls() {
+        if (findCodeBlocks().length > 0) {
+            var checkBox = getCheckBox();
+            var label = getLabelForCheckBox();
+
+            checkBox.onclick = toggleLineWrapping;
+            checkBox.checked = false;
+
+            removeClass(label, "hidden");
+         }
+    }
+
+    function switchTab() {
+        var id = this.id.substr(1);
+
+        for (var i = 0; i < tabs.tabs.length; i++) {
+            if (tabs.tabs[i].id === id) {
+                tabs.select(i);
+                break;
+            }
+        }
+
+        return false;
+    }
+
+    function select(i) {
+        this.deselectAll();
+
+        changeElementClass(this.tabs[i], "tab selected");
+        changeElementClass(this.headers[i], "selected");
+
+        while (this.headers[i].firstChild) {
+            this.headers[i].removeChild(this.headers[i].firstChild);
+        }
+
+        var h2 = document.createElement("H2");
+
+        h2.appendChild(document.createTextNode(this.titles[i]));
+        this.headers[i].appendChild(h2);
+    }
+
+    function deselectAll() {
+        for (var i = 0; i < this.tabs.length; i++) {
+            changeElementClass(this.tabs[i], "tab deselected");
+            changeElementClass(this.headers[i], "deselected");
+
+            while (this.headers[i].firstChild) {
+                this.headers[i].removeChild(this.headers[i].firstChild);
+            }
+
+            var a = document.createElement("A");
+
+            a.setAttribute("id", "ltab" + i);
+            a.setAttribute("href", "#tab" + i);
+            a.onclick = switchTab;
+            a.appendChild(document.createTextNode(this.titles[i]));
+
+            this.headers[i].appendChild(a);
+        }
+    }
+
+    function findTabs(container) {
+        return findChildElements(container, "DIV", "tab");
+    }
+
+    function findHeaders(container) {
+        var owner = findChildElements(container, "UL", "tabLinks");
+        return findChildElements(owner[0], "LI", null);
+    }
+
+    function findTitles(tabs) {
+        var titles = [];
+
+        for (var i = 0; i < tabs.length; i++) {
+            var tab = tabs[i];
+            var header = findChildElements(tab, "H2", null)[0];
+
+            header.parentNode.removeChild(header);
+
+            if (header.innerText) {
+                titles.push(header.innerText);
+            } else {
+                titles.push(header.textContent);
+            }
+        }
+
+        return titles;
+    }
+
+    function findChildElements(container, name, targetClass) {
+        var elements = [];
+        var children = container.childNodes;
+
+        for (var i = 0; i < children.length; i++) {
+            var child = children.item(i);
+
+            if (child.nodeType === 1 && child.nodeName === name) {
+                if (targetClass && child.className.indexOf(targetClass) < 0) {
+                    continue;
+                }
+
+                elements.push(child);
+            }
+        }
+
+        return elements;
+    }
+
+    // Entry point.
+
+    window.onload = function() {
+        initTabs();
+        initControls();
+    };
+} (window, window.document));
\ No newline at end of file
diff --git a/build/reports/tests/test/packages/model.html b/build/reports/tests/test/packages/model.html
new file mode 100644
index 0000000000000000000000000000000000000000..347d763d6977ffaab43366bfd54ac249dbb9a98e
--- /dev/null
+++ b/build/reports/tests/test/packages/model.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Package model</title>
+<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="../css/style.css" rel="stylesheet" type="text/css"/>
+<script src="../js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Package model</h1>
+<div class="breadcrumbs">
+<a href="../index.html">all</a> &gt; model</div>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">4</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">1</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">0.068s</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox failures" id="successRate">
+<div class="percent">75%</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<ul class="linkList">
+<li>
+<a href="../classes/model.FirefighterBoardTest.html">FirefighterBoardTest</a>.
+<a href="../classes/model.FirefighterBoardTest.html#testGetState_afterSet()">testGetState_afterSet()</a>
+</li>
+</ul>
+</div>
+<div id="tab1" class="tab">
+<h2>Classes</h2>
+<table>
+<thread>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thread>
+<tr>
+<td class="failures">
+<a href="../classes/model.FirefighterBoardTest.html">FirefighterBoardTest</a>
+</td>
+<td>4</td>
+<td>1</td>
+<td>0</td>
+<td>0.068s</td>
+<td class="failures">75%</td>
+</tr>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>
+<div>
+<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
+<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
+</label>
+</div>Generated by 
+<a href="http://www.gradle.org">Gradle 8.4</a> at 22 nov. 2023, 21:05:34</p>
+</div>
+</div>
+</body>
+</html>
diff --git a/build/resources/main/view/fireFigtherView/DarkTheme.css b/build/resources/main/view/fireFigtherView/DarkTheme.css
new file mode 100644
index 0000000000000000000000000000000000000000..46b78aaf90972dd435399466c9fd861ca73fc59f
--- /dev/null
+++ b/build/resources/main/view/fireFigtherView/DarkTheme.css
@@ -0,0 +1,142 @@
+.background {
+    -fx-background-color: #1d1d1d;
+}
+
+.label {
+    -fx-font-size: 11pt;
+    -fx-font-family: "Segoe UI Semibold";
+    -fx-text-fill: white;
+    -fx-opacity: 0.6;
+}
+
+.label-bright {
+    -fx-font-size: 11pt;
+    -fx-font-family: "Segoe UI Semibold";
+    -fx-text-fill: white;
+    -fx-opacity: 1;
+}
+
+.label-header {
+    -fx-font-size: 32pt;
+    -fx-font-family: "Segoe UI Light";
+    -fx-text-fill: white;
+    -fx-opacity: 1;
+}
+
+.table-view {
+    -fx-base: #1d1d1d;
+    -fx-control-inner-background: #1d1d1d;
+    -fx-background-color: #1d1d1d;
+    -fx-table-cell-border-color: transparent;
+    -fx-table-header-border-color: transparent;
+    -fx-padding: 5;
+}
+
+.table-view .column-header-background {
+    -fx-background-color: transparent;
+}
+
+.table-view .column-header, .table-view .filler {
+    -fx-border-width: 0 0 1 0;
+    -fx-background-color: transparent;
+    -fx-border-color: 
+        transparent
+        transparent
+        derive(-fx-base, 80%) 
+        transparent;
+    -fx-border-insets: 0 10 1 0;
+}
+
+.table-view .column-header .label {
+    -fx-font-size: 20pt;
+    -fx-font-family: "Segoe UI Light";
+    -fx-text-fill: white;
+    -fx-alignment: center-left;
+    -fx-opacity: 1;
+}
+
+.table-view:focused .table-row-cell:filled:focused:selected {
+    -fx-background-color: -fx-focus-color;
+}
+
+.split-pane:horizontal > .split-pane-divider {
+    -fx-border-color: transparent #1d1d1d transparent #1d1d1d;
+    -fx-background-color: transparent, derive(#1d1d1d,20%);
+}
+
+.split-pane {
+    -fx-padding: 1 0 0 0;
+}
+
+.menu-bar {
+    -fx-background-color: derive(#1d1d1d,20%);
+}
+
+.context-menu {
+    -fx-background-color: derive(#1d1d1d,50%);
+}
+
+.menu-bar .label {
+    -fx-font-size: 14pt;
+    -fx-font-family: "Segoe UI Light";
+    -fx-text-fill: white;
+    -fx-opacity: 0.9;
+}
+
+.menu .left-container {
+    -fx-background-color: black;
+}
+
+.text-field {
+    -fx-font-size: 12pt;
+    -fx-font-family: "Segoe UI Semibold";
+}
+
+/* 
+ * Metro style Push Button
+ * Author: Pedro Duque Vieira
+ * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/
+ */
+.button {
+    -fx-padding: 5 22 5 22;   
+    -fx-border-color: #e2e2e2;
+    -fx-border-width: 2;
+    -fx-background-radius: 0;
+    -fx-background-color: #1d1d1d;
+    -fx-font-family: "Segoe UI", Helvetica, Arial, sans-serif;
+    -fx-font-size: 11pt;
+    -fx-text-fill: #d8d8d8;
+    -fx-background-insets: 0 0 0 0, 0, 1, 2;
+}
+
+.button:hover {
+    -fx-background-color: #3a3a3a;
+}
+
+.button:pressed, .button:default:hover:pressed {
+  -fx-background-color: white;
+  -fx-text-fill: #1d1d1d;
+}
+
+.button:focused {
+    -fx-border-color: white, white;
+    -fx-border-width: 1, 1;
+    -fx-border-style: solid;
+    -fx-border-radius: 0, 0;
+    -fx-border-insets: 1 1 1 1, 0;
+}
+
+.button:disabled, .button:default:disabled {
+    -fx-opacity: 0.4;
+    -fx-background-color: #1d1d1d;
+    -fx-text-fill: white;
+}
+
+.button:default {
+    -fx-background-color: -fx-focus-color;
+    -fx-text-fill: #ffffff;
+}
+
+.button:default:hover {
+    -fx-background-color: derive(-fx-focus-color,30%);
+}
\ No newline at end of file
diff --git a/build/resources/main/view/fireFigtherView/fireFigtherBord.fxml b/build/resources/main/view/fireFigtherView/fireFigtherBord.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..7e1c179c34759e686122a03577556f25d189aece
--- /dev/null
+++ b/build/resources/main/view/fireFigtherView/fireFigtherBord.fxml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import view.FirefighterGrid?>
+
+<?import javafx.scene.control.ToggleButton?>
+<?import javafx.scene.control.Separator?>
+<?import javafx.scene.control.Label?>
+<HBox styleClass="background" stylesheets="@DarkTheme.css"
+      xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml"
+      fx:controller="controller.fireFigther.ControllerFireFigtherBord">
+  <VBox>
+    <Separator maxHeight="-Infinity" maxWidth="-Infinity"
+               prefHeight="24.0" prefWidth="200.0"/>
+    <Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0"
+           text="Generation number"/>
+    <Label fx:id="generationNumberLabel" alignment="CENTER" contentDisplay="TEXT_ONLY"
+           maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/>
+    <Separator maxHeight="-Infinity" maxWidth="-Infinity"
+               prefHeight="24.0" prefWidth="200.0"/>
+    <Button fx:id="restartButton" maxHeight="-Infinity" maxWidth="-Infinity"
+            mnemonicParsing="false" onAction="#restartButtonAction" prefHeight="24.0" prefWidth="200.0"
+            text="Restart"/>
+    <Button fx:id="oneStepButton" maxHeight="-Infinity" maxWidth="-Infinity"
+            mnemonicParsing="false" onAction="#oneStepButtonAction" prefHeight="24.0" prefWidth="200.0"
+            text="One step"/>
+    <ToggleButton fx:id="playToggleButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                  mnemonicParsing="false" onAction="#playToggleButtonAction" prefHeight="24.0"
+                  prefWidth="200.0" styleClass="button" text="Play"/>
+    <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity"
+                  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"
+                   xmlns="http://javafx.com/javafx"
+                   xmlns:fx="http://javafx.com/fxml">
+  </FirefighterGrid>
+</HBox>
diff --git a/build/resources/main/view/fireFigtherView/putElementCount.fxml b/build/resources/main/view/fireFigtherView/putElementCount.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/build/resources/main/view/menu.fxml b/build/resources/main/view/menu.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..ca96e53c1888262a2367f5a2ae6853530fb3666d
--- /dev/null
+++ b/build/resources/main/view/menu.fxml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.lang.*?>
+<?import java.util.*?>
+<?import javafx.scene.*?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.layout.*?>
+
+<AnchorPane xmlns="http://javafx.com/javafx"
+            xmlns:fx="http://javafx.com/fxml"
+            fx:controller="controller.controllerMenu"
+            prefHeight="400.0" prefWidth="600.0">
+
+</AnchorPane>
diff --git a/build/test-results/test/TEST-model.FirefighterBoardTest.xml b/build/test-results/test/TEST-model.FirefighterBoardTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..164ceb0bb458a5a34553740376cf189c101054a4
--- /dev/null
+++ b/build/test-results/test/TEST-model.FirefighterBoardTest.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="model.FirefighterBoardTest" tests="4" skipped="0" failures="1" errors="0" timestamp="2023-11-22T20:05:34" hostname="DESKTOP-3230S2U" time="0.07">
+  <properties/>
+  <testcase name="testColumnCount()" classname="model.FirefighterBoardTest" time="0.051"/>
+  <testcase name="testGetState_afterSet()" classname="model.FirefighterBoardTest" time="0.013">
+    <failure message="java.lang.AssertionError: &#13;&#10;Expecting actual not to be null" type="java.lang.AssertionError">java.lang.AssertionError: 
+Expecting actual not to be null
+	at model.FirefighterBoardTest.testGetState_afterSet(FirefighterBoardTest.java:36)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+</failure>
+  </testcase>
+  <testcase name="testRowCount()" classname="model.FirefighterBoardTest" time="0.001"/>
+  <testcase name="testStepNumber()" classname="model.FirefighterBoardTest" time="0.003"/>
+  <system-out><![CDATA[]]></system-out>
+  <system-err><![CDATA[]]></system-err>
+</testsuite>
diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
Binary files /dev/null and b/build/test-results/test/binary/output.bin.idx differ
diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
new file mode 100644
index 0000000000000000000000000000000000000000..f3c57298b357f43b186fd42c76a4ae066b4525f1
Binary files /dev/null and b/build/test-results/test/binary/results.bin 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..e5a1d76288c668649bad8511abdb7e552df95c99
Binary files /dev/null and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin
new file mode 100644
index 0000000000000000000000000000000000000000..13f25d29dcbe2bbc093d571e503f2d45b23515b2
Binary files /dev/null and b/build/tmp/compileTestJava/previous-compilation-data.bin differ