diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin
index a5c9e9cdea3798469a1177a4bba0911f48354d83..a71519ded6c9ebee252cee8cb3687c2ada0bd953 100644
Binary files a/.gradle/8.8/executionHistory/executionHistory.bin and b/.gradle/8.8/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock
index f8138d670b0911747c80a8831e8d96aeb8709c20..2ee55492caacc80bf3821a740172ad1b136c2ca0 100644
Binary files a/.gradle/8.8/executionHistory/executionHistory.lock and b/.gradle/8.8/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin
index 7702a663a9d6c9513b7af89fc14367f58ad72d8d..6f6b4210b51935cf8d9baa1ad9e31aecbf6ebc34 100644
Binary files a/.gradle/8.8/fileHashes/fileHashes.bin and b/.gradle/8.8/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock
index 42ee81c069a4416a3173c85f5e7204b1af4f6016..1110c77d973f4879b4b7228337f829dab05f45d7 100644
Binary files a/.gradle/8.8/fileHashes/fileHashes.lock and b/.gradle/8.8/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin
index 11ff398c19af08399b9a4ba87a776efd04b4b1d4..dc6ec36208e7e1d9cf3b3f288bce65fc33a813a9 100644
Binary files a/.gradle/8.8/fileHashes/resourceHashesCache.bin and b/.gradle/8.8/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index f3d5c8e530b4598ce790c3d7e58feb54aad95b37..75e7290f6d8a761f6959371c7dda40b95e33f29e 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/build/classes/java/main/matrix/ListMatrix.class b/build/classes/java/main/matrix/ListMatrix.class
index 7ee826551990188fb0835ab104f5c6e6c65acbd8..2a03bc38d6c0b51a2e3ce90fd8efff54a67a47d1 100644
Binary files a/build/classes/java/main/matrix/ListMatrix.class and b/build/classes/java/main/matrix/ListMatrix.class differ
diff --git a/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html b/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
index 8977fcd01c32655259eda32721566b63035426db..c3e14641c8b0506552c6461268b08e5dfb6776d7 100644
--- a/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
+++ b/build/reports/tests/test/classes/matrix.ConstantMatrixInitializerTest.html
@@ -94,7 +94,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html b/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
index 22565e92ee2208cae9295ea379230ca1621eca9d..399971f26b24bb685fc9a238c3c30dc73b78c671 100644
--- a/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
+++ b/build/reports/tests/test/classes/matrix.CoordinateIteratorTest.html
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.006s</div>
+<div class="counter">0.007s</div>
 <p>duration</p>
 </div>
 </td>
@@ -76,17 +76,17 @@
 </thead>
 <tr>
 <td class="success">testIteratorWithOneDimension()</td>
-<td class="success">0.001s</td>
+<td class="success">0s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
 <td class="success">testIteratorWithTwoDimensions()</td>
-<td class="success">0.005s</td>
+<td class="success">0.006s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
 <td class="success">testIteratorWithZeroDimensions()</td>
-<td class="success">0s</td>
+<td class="success">0.001s</td>
 <td class="success">passed</td>
 </tr>
 </table>
@@ -99,7 +99,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/classes/matrix.CoordinateTest.html b/build/reports/tests/test/classes/matrix.CoordinateTest.html
index 1dc511c910d551bd82e6fcb39c59ed16c5fad8f4..1d7ed28b2d6ad19511032abc6281231ea9bf1597 100644
--- a/build/reports/tests/test/classes/matrix.CoordinateTest.html
+++ b/build/reports/tests/test/classes/matrix.CoordinateTest.html
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.004s</div>
+<div class="counter">0.002s</div>
 <p>duration</p>
 </div>
 </td>
@@ -81,7 +81,7 @@
 </tr>
 <tr>
 <td class="success">testBelow()</td>
-<td class="success">0.001s</td>
+<td class="success">0s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
@@ -96,7 +96,7 @@
 </tr>
 <tr>
 <td class="success">testLeft()</td>
-<td class="success">0.001s</td>
+<td class="success">0s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
@@ -106,12 +106,12 @@
 </tr>
 <tr>
 <td class="success">testOrthogonalNeighbours()</td>
-<td class="success">0.001s</td>
+<td class="success">0s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
 <td class="success">testRight()</td>
-<td class="success">0s</td>
+<td class="success">0.001s</td>
 <td class="success">passed</td>
 </tr>
 </table>
@@ -124,7 +124,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/classes/matrix.ListMatrixTest.html b/build/reports/tests/test/classes/matrix.ListMatrixTest.html
index 27f94eb2eb39c162d78b34913ae4bc9c96ca94c2..be26e148b21fc62b4df74873d7a9c319c778166e 100644
--- a/build/reports/tests/test/classes/matrix.ListMatrixTest.html
+++ b/build/reports/tests/test/classes/matrix.ListMatrixTest.html
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.001s</div>
+<div class="counter">0.002s</div>
 <p>duration</p>
 </div>
 </td>
@@ -91,7 +91,7 @@
 </tr>
 <tr>
 <td class="success">testMatrixIterator()</td>
-<td class="success">0s</td>
+<td class="success">0.001s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
@@ -119,7 +119,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/classes/model.CellTest.html b/build/reports/tests/test/classes/model.CellTest.html
index 301fbcce3af58166c7d1ebd3c62be940b46cc0cc..e52fa059b2023191791ca1bbab40507a3f49742d 100644
--- a/build/reports/tests/test/classes/model.CellTest.html
+++ b/build/reports/tests/test/classes/model.CellTest.html
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.001s</div>
+<div class="counter">0s</div>
 <p>duration</p>
 </div>
 </td>
@@ -81,7 +81,7 @@
 </tr>
 <tr>
 <td class="success">testCellWithoutListener()</td>
-<td class="success">0.001s</td>
+<td class="success">0s</td>
 <td class="success">passed</td>
 </tr>
 </table>
@@ -94,7 +94,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html b/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
index 28fa398159d7c6b9682d6a99d8d770305c58cbac..306dc1d82b64678f81ac3446940565d12a7071f0 100644
--- a/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
+++ b/build/reports/tests/test/classes/model.CellularAutomatonSimulationTest.html
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.009s</div>
+<div class="counter">0.010s</div>
 <p>duration</p>
 </div>
 </td>
@@ -86,12 +86,12 @@
 </tr>
 <tr>
 <td class="success">testColor()</td>
-<td class="success">0.005s</td>
+<td class="success">0.004s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
 <td class="success">testCopy()</td>
-<td class="success">0s</td>
+<td class="success">0.001s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
@@ -116,7 +116,7 @@
 </tr>
 <tr>
 <td class="success">testSetChangeListener()</td>
-<td class="success">0s</td>
+<td class="success">0.001s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
@@ -139,7 +139,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html b/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
index fb7f13221e06b39300ebbca867e376a38d9cf9a6..f0df88640dd92ceb3989f414eb1f2c9c5b37f8af 100644
--- a/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
+++ b/build/reports/tests/test/classes/model.NextGenerationInitializerTest.html
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.001s</div>
+<div class="counter">0.002s</div>
 <p>duration</p>
 </div>
 </td>
@@ -86,17 +86,17 @@
 </tr>
 <tr>
 <td class="success">testModuloPositive()</td>
-<td class="success">0s</td>
+<td class="success">0.001s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
 <td class="success">testWrapCoordinateInsideGrid()</td>
-<td class="success">0.001s</td>
+<td class="success">0s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
 <td class="success">testWrapCoordinateOutsideGrid()</td>
-<td class="success">0s</td>
+<td class="success">0.001s</td>
 <td class="success">passed</td>
 </tr>
 </table>
@@ -109,7 +109,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/classes/model.StateTest.html b/build/reports/tests/test/classes/model.StateTest.html
index 9432f2c8dd2b026e06e1f947b4c3e5c1d8216192..c00746a49b59fdc90ce89cdb65d7939d988706fd 100644
--- a/build/reports/tests/test/classes/model.StateTest.html
+++ b/build/reports/tests/test/classes/model.StateTest.html
@@ -104,7 +104,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html b/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
index 98d5cd95960cd6f541f7d012c8f7d9bdb73228b8..1ea05de0e70507df33a070e5ec9e30e7a425866b 100644
--- a/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
+++ b/build/reports/tests/test/classes/model.automata.GameOfLifeStateTest.html
@@ -76,12 +76,12 @@
 </thead>
 <tr>
 <td class="success">testAliveUpdate()</td>
-<td class="success">0s</td>
+<td class="success">0.001s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
 <td class="success">testDeadUpdate()</td>
-<td class="success">0.001s</td>
+<td class="success">0s</td>
 <td class="success">passed</td>
 </tr>
 <tr>
@@ -104,7 +104,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
index 72a92befcce730a41ecad7946925e5d24d2fc859..fd24e674daa30d270093e654642ce3324b1e70ea 100644
--- a/build/reports/tests/test/index.html
+++ b/build/reports/tests/test/index.html
@@ -38,7 +38,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.028s</div>
+<div class="counter">0.029s</div>
 <p>duration</p>
 </div>
 </td>
@@ -95,7 +95,7 @@
 <td>22</td>
 <td>0</td>
 <td>0</td>
-<td>0.011s</td>
+<td>0.012s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -142,7 +142,7 @@
 <td>3</td>
 <td>0</td>
 <td>0</td>
-<td>0.006s</td>
+<td>0.007s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -152,7 +152,7 @@
 <td>8</td>
 <td>0</td>
 <td>0</td>
-<td>0.004s</td>
+<td>0.002s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -162,7 +162,7 @@
 <td>7</td>
 <td>0</td>
 <td>0</td>
-<td>0.001s</td>
+<td>0.002s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -172,7 +172,7 @@
 <td>2</td>
 <td>0</td>
 <td>0</td>
-<td>0.001s</td>
+<td>0s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -182,7 +182,7 @@
 <td>11</td>
 <td>0</td>
 <td>0</td>
-<td>0.009s</td>
+<td>0.010s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -192,7 +192,7 @@
 <td>5</td>
 <td>0</td>
 <td>0</td>
-<td>0.001s</td>
+<td>0.002s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -226,7 +226,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/packages/matrix.html b/build/reports/tests/test/packages/matrix.html
index f85ff8a0f9366079c1afbfae7ca078194e6e0532..69a198c072027290c3033026e47691a1763445cd 100644
--- a/build/reports/tests/test/packages/matrix.html
+++ b/build/reports/tests/test/packages/matrix.html
@@ -93,7 +93,7 @@
 <td>3</td>
 <td>0</td>
 <td>0</td>
-<td>0.006s</td>
+<td>0.007s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -103,7 +103,7 @@
 <td>8</td>
 <td>0</td>
 <td>0</td>
-<td>0.004s</td>
+<td>0.002s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -113,7 +113,7 @@
 <td>7</td>
 <td>0</td>
 <td>0</td>
-<td>0.001s</td>
+<td>0.002s</td>
 <td class="success">100%</td>
 </tr>
 </table>
@@ -126,7 +126,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/packages/model.automata.html b/build/reports/tests/test/packages/model.automata.html
index 5d6594cacc359b593144469f7557301967b29596..41e72d28c7cd5b7cb2d3c0fa528c53ce0e6c6cef 100644
--- a/build/reports/tests/test/packages/model.automata.html
+++ b/build/reports/tests/test/packages/model.automata.html
@@ -96,7 +96,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/packages/model.html b/build/reports/tests/test/packages/model.html
index 87748821c76f9aaedbf3b16c24ad73adb80de138..5fcbdcd6851189b96fee8b3a3a658609d324bcdd 100644
--- a/build/reports/tests/test/packages/model.html
+++ b/build/reports/tests/test/packages/model.html
@@ -40,7 +40,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.011s</div>
+<div class="counter">0.012s</div>
 <p>duration</p>
 </div>
 </td>
@@ -83,7 +83,7 @@
 <td>2</td>
 <td>0</td>
 <td>0</td>
-<td>0.001s</td>
+<td>0s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -93,7 +93,7 @@
 <td>11</td>
 <td>0</td>
 <td>0</td>
-<td>0.009s</td>
+<td>0.010s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -103,7 +103,7 @@
 <td>5</td>
 <td>0</td>
 <td>0</td>
-<td>0.001s</td>
+<td>0.002s</td>
 <td class="success">100%</td>
 </tr>
 <tr>
@@ -126,7 +126,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:42:20 AM</p>
+<a href="http://www.gradle.org">Gradle 8.8</a> at Jan 26, 2025, 1:47:20 AM</p>
 </div>
 </div>
 </body>
diff --git a/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml b/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
index 7ad82e82c2e15ef93892c4ee6f5636566538ff0a..30160d37325e9c0c085518e3bc96ed5d49730859 100644
--- a/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
+++ b/build/test-results/test/TEST-matrix.ConstantMatrixInitializerTest.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="matrix.ConstantMatrixInitializerTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.006">
+<testsuite name="matrix.ConstantMatrixInitializerTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.006">
   <properties/>
   <testcase name="testMatrixInitializationWithConstantValue()" classname="matrix.ConstantMatrixInitializerTest" time="0.005"/>
   <testcase name="testMatrixInitializationWithConstantValue2()" classname="matrix.ConstantMatrixInitializerTest" time="0.0"/>
diff --git a/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml b/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
index 9301f513c9638e71347a1745a6d0dcae6675f176..c1f4ed6dd978bfca505b8e697e6f298bb09cca34 100644
--- a/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
+++ b/build/test-results/test/TEST-matrix.CoordinateIteratorTest.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="matrix.CoordinateIteratorTest" tests="3" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.007">
+<testsuite name="matrix.CoordinateIteratorTest" tests="3" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.007">
   <properties/>
-  <testcase name="testIteratorWithZeroDimensions()" classname="matrix.CoordinateIteratorTest" time="0.0"/>
-  <testcase name="testIteratorWithTwoDimensions()" classname="matrix.CoordinateIteratorTest" time="0.005"/>
-  <testcase name="testIteratorWithOneDimension()" classname="matrix.CoordinateIteratorTest" time="0.001"/>
+  <testcase name="testIteratorWithZeroDimensions()" classname="matrix.CoordinateIteratorTest" time="0.001"/>
+  <testcase name="testIteratorWithTwoDimensions()" classname="matrix.CoordinateIteratorTest" time="0.006"/>
+  <testcase name="testIteratorWithOneDimension()" classname="matrix.CoordinateIteratorTest" time="0.0"/>
   <system-out><![CDATA[]]></system-out>
   <system-err><![CDATA[]]></system-err>
 </testsuite>
diff --git a/build/test-results/test/TEST-matrix.CoordinateTest.xml b/build/test-results/test/TEST-matrix.CoordinateTest.xml
index 80cf2f5b794f7a9542c05b6dc13b38e3dc9c9ca5..81c31c2c30502623484c890d2a2ef51de693dacf 100644
--- a/build/test-results/test/TEST-matrix.CoordinateTest.xml
+++ b/build/test-results/test/TEST-matrix.CoordinateTest.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="matrix.CoordinateTest" tests="8" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.004">
+<testsuite name="matrix.CoordinateTest" tests="8" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.004">
   <properties/>
   <testcase name="testAbove()" classname="matrix.CoordinateTest" time="0.0"/>
-  <testcase name="testBelow()" classname="matrix.CoordinateTest" time="0.001"/>
-  <testcase name="testRight()" classname="matrix.CoordinateTest" time="0.0"/>
-  <testcase name="testLeft()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testBelow()" classname="matrix.CoordinateTest" time="0.0"/>
+  <testcase name="testRight()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testLeft()" classname="matrix.CoordinateTest" time="0.0"/>
   <testcase name="testDiagonalNeighbours()" classname="matrix.CoordinateTest" time="0.001"/>
   <testcase name="testCoordinateCreation()" classname="matrix.CoordinateTest" time="0.0"/>
-  <testcase name="testOrthogonalNeighbours()" classname="matrix.CoordinateTest" time="0.001"/>
+  <testcase name="testOrthogonalNeighbours()" classname="matrix.CoordinateTest" time="0.0"/>
   <testcase name="testOrthodiagonalNeighbours()" classname="matrix.CoordinateTest" time="0.0"/>
   <system-out><![CDATA[]]></system-out>
   <system-err><![CDATA[]]></system-err>
diff --git a/build/test-results/test/TEST-matrix.ListMatrixTest.xml b/build/test-results/test/TEST-matrix.ListMatrixTest.xml
index f7c7b31a12cfb2987bf7cbbf16feeaf9658ca473..6c2a6ad0dceacb941e73c543db077894403b8951 100644
--- a/build/test-results/test/TEST-matrix.ListMatrixTest.xml
+++ b/build/test-results/test/TEST-matrix.ListMatrixTest.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="matrix.ListMatrixTest" tests="7" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.004">
+<testsuite name="matrix.ListMatrixTest" tests="7" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.004">
   <properties/>
   <testcase name="testMatrixWidthAndHeight()" classname="matrix.ListMatrixTest" time="0.0"/>
   <testcase name="testMatrixCoordinates()" classname="matrix.ListMatrixTest" time="0.0"/>
   <testcase name="testMatrixCreationWithInitialValue()" classname="matrix.ListMatrixTest" time="0.001"/>
   <testcase name="testSubMatrix()" classname="matrix.ListMatrixTest" time="0.0"/>
-  <testcase name="testMatrixIterator()" classname="matrix.ListMatrixTest" time="0.0"/>
+  <testcase name="testMatrixIterator()" classname="matrix.ListMatrixTest" time="0.001"/>
   <testcase name="testMatrixCreationWithInitializer()" classname="matrix.ListMatrixTest" time="0.0"/>
   <testcase name="testMatrixSetAndGet()" classname="matrix.ListMatrixTest" time="0.0"/>
   <system-out><![CDATA[]]></system-out>
diff --git a/build/test-results/test/TEST-model.CellTest.xml b/build/test-results/test/TEST-model.CellTest.xml
index 85fc2231ae4123ad45a09a34781943570229c89d..068c656c0984b2260e8e0118df70595af1d30a58 100644
--- a/build/test-results/test/TEST-model.CellTest.xml
+++ b/build/test-results/test/TEST-model.CellTest.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="model.CellTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+<testsuite name="model.CellTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.0">
   <properties/>
   <testcase name="testCellValueChangeWithListener()" classname="model.CellTest" time="0.0"/>
-  <testcase name="testCellWithoutListener()" classname="model.CellTest" time="0.001"/>
+  <testcase name="testCellWithoutListener()" classname="model.CellTest" time="0.0"/>
   <system-out><![CDATA[]]></system-out>
   <system-err><![CDATA[]]></system-err>
 </testsuite>
diff --git a/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml b/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
index e00b5d7eabb979532f98ec3f6a9ca249ac9cdc8f..ed6bd091b18223f6f02e1c412eb1a6991711ca1c 100644
--- a/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
+++ b/build/test-results/test/TEST-model.CellularAutomatonSimulationTest.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="model.CellularAutomatonSimulationTest" tests="11" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.012">
+<testsuite name="model.CellularAutomatonSimulationTest" tests="11" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.012">
   <properties/>
   <testcase name="testNumberOfColumns()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
   <testcase name="testSetGenerationNumberChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
   <testcase name="testClear()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
-  <testcase name="testColor()" classname="model.CellularAutomatonSimulationTest" time="0.005"/>
+  <testcase name="testColor()" classname="model.CellularAutomatonSimulationTest" time="0.004"/>
   <testcase name="testReset()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
-  <testcase name="testCopy()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testCopy()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
   <testcase name="testNext()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
   <testcase name="testAt()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
   <testcase name="testUpdateToNextGeneration()" classname="model.CellularAutomatonSimulationTest" time="0.002"/>
-  <testcase name="testSetChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
+  <testcase name="testSetChangeListener()" classname="model.CellularAutomatonSimulationTest" time="0.001"/>
   <testcase name="testNumberOfRows()" classname="model.CellularAutomatonSimulationTest" time="0.0"/>
   <system-out><![CDATA[]]></system-out>
   <system-err><![CDATA[]]></system-err>
diff --git a/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml b/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
index 94877102ba449b537279ed71f9ced62b3bd91836..63fd85f1e7b38477b18e9a2ce23ca7ee84850256 100644
--- a/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
+++ b/build/test-results/test/TEST-model.NextGenerationInitializerTest.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="model.NextGenerationInitializerTest" tests="5" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.003">
+<testsuite name="model.NextGenerationInitializerTest" tests="5" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.002">
   <properties/>
-  <testcase name="testWrapCoordinateInsideGrid()" classname="model.NextGenerationInitializerTest" time="0.001"/>
-  <testcase name="testModuloPositive()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="testWrapCoordinateInsideGrid()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="testModuloPositive()" classname="model.NextGenerationInitializerTest" time="0.001"/>
   <testcase name="testModuloNegative()" classname="model.NextGenerationInitializerTest" time="0.0"/>
-  <testcase name="testWrapCoordinateOutsideGrid()" classname="model.NextGenerationInitializerTest" time="0.0"/>
+  <testcase name="testWrapCoordinateOutsideGrid()" classname="model.NextGenerationInitializerTest" time="0.001"/>
   <testcase name="initialValueAt()" classname="model.NextGenerationInitializerTest" time="0.0"/>
   <system-out><![CDATA[]]></system-out>
   <system-err><![CDATA[]]></system-err>
diff --git a/build/test-results/test/TEST-model.StateTest.xml b/build/test-results/test/TEST-model.StateTest.xml
index 3a6a86f896888a0e722cf5f194e4854fb506c303..58dcd4d05fdd667257d654b55efd487a3cd3ba62 100644
--- a/build/test-results/test/TEST-model.StateTest.xml
+++ b/build/test-results/test/TEST-model.StateTest.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="model.StateTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+<testsuite name="model.StateTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
   <properties/>
   <testcase name="testCountMethodWithNoMatchingElements()" classname="model.StateTest" time="0.0"/>
   <testcase name="testCountMethodWithInteger()" classname="model.StateTest" time="0.0"/>
diff --git a/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml b/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
index 28c0739a55d928a3fa291792e0f0071ca29abf96..c913b357a01a4c0dae9384db47b56110450d10cb 100644
--- a/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
+++ b/build/test-results/test/TEST-model.automata.GameOfLifeStateTest.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="model.automata.GameOfLifeStateTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:42:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
+<testsuite name="model.automata.GameOfLifeStateTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-01-26T00:47:20" hostname="MacBook-Pro-de-Melis.local" time="0.001">
   <properties/>
   <testcase name="testGetColor()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
   <testcase name="testNext()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
-  <testcase name="testDeadUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.001"/>
-  <testcase name="testAliveUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
+  <testcase name="testDeadUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.0"/>
+  <testcase name="testAliveUpdate()" classname="model.automata.GameOfLifeStateTest" time="0.001"/>
   <system-out><![CDATA[]]></system-out>
   <system-err><![CDATA[]]></system-err>
 </testsuite>
diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
index fe8b6eee535fa6ba4678a7abf52b47de3b7fc8f7..e9244072b3555fa6c56470c7ae16dd18e8633816 100644
Binary files a/build/test-results/test/binary/results.bin 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
index 748c4c7738db23e8b2a1034a2add2df53c661aa1..dd6c34cc6b3dacf70d6f46f71fc0b9ecd835f238 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin 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
index 16fbb7fb04fac14befb7a15c27e64a92a763ad04..9224017afff4628d34cf26c48c8e2b0cbc949242 100644
Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and b/build/tmp/compileTestJava/previous-compilation-data.bin differ
diff --git a/src/main/java/matrix/ListMatrix.java b/src/main/java/matrix/ListMatrix.java
index b929766ad8d8c6776d814be04af22379fc70b7db..987c6a162bc97c20d930765a492d5c9f3facf74e 100644
--- a/src/main/java/matrix/ListMatrix.java
+++ b/src/main/java/matrix/ListMatrix.java
@@ -59,8 +59,16 @@ public class ListMatrix<T> implements Matrix<T> {
 
     return matrix.get(x).get(y);
   }
+  @Override
+  public Matrix<T> subMatrix(Coordinate corner, int subWidth, int subHeight) {
+    if (corner.x() < 0 || corner.y() < 0 ||
+            corner.x() + subWidth > this.width ||
+            corner.y() + subHeight > this.height) {
+      throw new IllegalArgumentException("Sub-matrix dimensions are out of bounds.");
+    }
 
-
+    return new ListMatrix<>(subWidth, subHeight, new SubMatrixInitializer<>(this, corner));
+  }
   @Override
   public void set(int x, int y, T newValue) {
     matrix.get(x).set(y,newValue);