diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin
index fa35c1eb18a4f98f221ed796f8659a7fe5daa222..7db84cf512cfbd6344621c3243526dc4cc2dc375 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 db33ea1fd7c3174a2b9e2c4b764be7fb0d2a3dee..8dd60600587a381839406e5a67c47d9ee2a0037b 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 ddac65beefa1ab7fcb5c3a44b431245ff0b02470..9b87dbd18e4735170e1a9941f3730342b9f27460 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 f3cb0d8c873d1cd7a8e7f7e5340bbc04b426d09e..a2eea0623d496bfb6ed80c4b729a96fc4c16ab15 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 f1816dbf4dc49178890d6a09e8dc1dc35abf5ddb..4a8cdfd724f87fdc16c3db8b31cb5c5b4cfb54b8 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 8bb0f46bc417db6aa9df217dccf23f9f15f664d5..7006a23b212cd5dd50e65ec374cff0e9fee33061 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index 634d7f4f938fbd50afa1813d5f19ad70832c5e71..a3e12595537c4c25dbeda35b32cd55e1914cc4df 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/build/classes/java/main/SimulatorApplication.class b/build/classes/java/main/SimulatorApplication.class
index 75fd7f257f694cb74372cc8dcff547d46f9acfb5..d3e7e6501fdcde716363cd6017444d3fbf0f8365 100644
Binary files a/build/classes/java/main/SimulatorApplication.class and b/build/classes/java/main/SimulatorApplication.class differ
diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
index 1d24f5e49304d4651517c9f6a98619faee8e706f..50f1985db624e6ed3e6c54909068cafcdc7632b2 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 c0ccdd01abe3a42a581528ab9898584f819a2f12..c628d6aee41898dcc4426423e5c33466a8821e27 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/controller/Simulation.class b/build/classes/java/main/controller/Simulation.class
index 99050b0840eb144a4a29cac34e09d3d6e03ea560..3fe4f4ce2663af0228448feb83542f1d2358875b 100644
Binary files a/build/classes/java/main/controller/Simulation.class and b/build/classes/java/main/controller/Simulation.class differ
diff --git a/build/classes/java/main/matrix/ConstantMatrixInitializer.class b/build/classes/java/main/matrix/ConstantMatrixInitializer.class
index dbfb570ad41968cd3d1de1887b287ef9bb481d2d..2f16ea4c75ab73551466ffcc6ea2bc92abdcd589 100644
Binary files a/build/classes/java/main/matrix/ConstantMatrixInitializer.class and b/build/classes/java/main/matrix/ConstantMatrixInitializer.class differ
diff --git a/build/classes/java/main/matrix/Coordinate.class b/build/classes/java/main/matrix/Coordinate.class
index b058d4d4552bf2d60d562577be08b786552bf8d8..59d565bbb1bf7099365cccd3570443e9e0bb1688 100644
Binary files a/build/classes/java/main/matrix/Coordinate.class and b/build/classes/java/main/matrix/Coordinate.class differ
diff --git a/build/classes/java/main/matrix/CoordinateIterator.class b/build/classes/java/main/matrix/CoordinateIterator.class
index b4474f14429e175bd7e8ae1db3b004535e7e16fc..b78510c25a69a61a846d813c6674ded77e52f0a7 100644
Binary files a/build/classes/java/main/matrix/CoordinateIterator.class and b/build/classes/java/main/matrix/CoordinateIterator.class differ
diff --git a/build/classes/java/main/matrix/ListMatrix.class b/build/classes/java/main/matrix/ListMatrix.class
index 440bfa8caa12668dd9b18b1f5709cd4d21226661..de7394d23c81a6d916b2aaea41ba2448529805bb 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/classes/java/main/matrix/Matrix.class b/build/classes/java/main/matrix/Matrix.class
index 22eb59f4782d59fa4799727546314e01498d8629..19d764354d8b419924fd129c6f18920c18920517 100644
Binary files a/build/classes/java/main/matrix/Matrix.class and b/build/classes/java/main/matrix/Matrix.class differ
diff --git a/build/classes/java/main/matrix/MatrixInitializer.class b/build/classes/java/main/matrix/MatrixInitializer.class
index 13704b631e961c3106d366f90a28b1d8338a6ba2..9bc1c897ff3cddf97bb07832e4fde607b397cfa9 100644
Binary files a/build/classes/java/main/matrix/MatrixInitializer.class and b/build/classes/java/main/matrix/MatrixInitializer.class differ
diff --git a/build/classes/java/main/matrix/MatrixIterator.class b/build/classes/java/main/matrix/MatrixIterator.class
index e38b2c1d6c455ec498d36936bbacc66f42d61431..1c1d116d29e6152d3c9fd224885ac802b81ee476 100644
Binary files a/build/classes/java/main/matrix/MatrixIterator.class and b/build/classes/java/main/matrix/MatrixIterator.class differ
diff --git a/build/classes/java/main/model/Cell.class b/build/classes/java/main/model/Cell.class
index 078a4176e34e14673012b593f8350fadf7a760d2..d09c8ecdfcbaa06e6fe470f77822326f2a5e571b 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/CellularAutomaton.class b/build/classes/java/main/model/CellularAutomaton.class
index e0423deb6bbd1f5fc614f556b4017895a50331cc..1a0ed666b87c50677a7f121d1a97229e1e05925c 100644
Binary files a/build/classes/java/main/model/CellularAutomaton.class and b/build/classes/java/main/model/CellularAutomaton.class differ
diff --git a/build/classes/java/main/model/CellularAutomatonSimulation.class b/build/classes/java/main/model/CellularAutomatonSimulation.class
index 28f441ca87e3830ef05866616d5278961cb240a5..666eee34be1ba6a3882b4a01d6f8c4b665a305ca 100644
Binary files a/build/classes/java/main/model/CellularAutomatonSimulation.class and b/build/classes/java/main/model/CellularAutomatonSimulation.class differ
diff --git a/build/classes/java/main/model/ConstantCellInitializer.class b/build/classes/java/main/model/ConstantCellInitializer.class
index b4cee6eb41e43d303236da1aa2cc89c598ff6795..603836f0726f5e36360c4e9845e56ce22da0e958 100644
Binary files a/build/classes/java/main/model/ConstantCellInitializer.class and b/build/classes/java/main/model/ConstantCellInitializer.class differ
diff --git a/build/classes/java/main/model/Lens.class b/build/classes/java/main/model/Lens.class
index e0e7e26472d50a2660577c557c975e46f2f77c70..5e9d95cc244edd60efa438fc9854d67ed089627a 100644
Binary files a/build/classes/java/main/model/Lens.class and b/build/classes/java/main/model/Lens.class differ
diff --git a/build/classes/java/main/model/NextGenerationInitializer.class b/build/classes/java/main/model/NextGenerationInitializer.class
index 51521ffd32a0046c74f1eddf3aca0924cbcc55a7..80c0fcd224a6291ccca3999b938dd923af0c1789 100644
Binary files a/build/classes/java/main/model/NextGenerationInitializer.class and b/build/classes/java/main/model/NextGenerationInitializer.class differ
diff --git a/build/classes/java/main/model/OnChangeListener.class b/build/classes/java/main/model/OnChangeListener.class
index 05924558e4751df0ee7d2587240d296e1b1060ec..80bddead8147f21fde0097004c22150a415d0e0f 100644
Binary files a/build/classes/java/main/model/OnChangeListener.class and b/build/classes/java/main/model/OnChangeListener.class differ
diff --git a/build/classes/java/main/model/State.class b/build/classes/java/main/model/State.class
index b7c76e03a910080e9f8e4815d4f20b88346b1097..adf228847c862eb8f9b88eb02acb9e3803a2ac07 100644
Binary files a/build/classes/java/main/model/State.class and b/build/classes/java/main/model/State.class differ
diff --git a/build/classes/java/main/model/automata/GameOfLifeAutomaton.class b/build/classes/java/main/model/automata/GameOfLifeAutomaton.class
index 5d1c0aebe6f3de0e551e4d4828afa5f7b3897e92..6bd36f42deaaa9459be2cbcbd62ab2e47a4d957e 100644
Binary files a/build/classes/java/main/model/automata/GameOfLifeAutomaton.class and b/build/classes/java/main/model/automata/GameOfLifeAutomaton.class differ
diff --git a/build/classes/java/main/model/automata/GameOfLifeState.class b/build/classes/java/main/model/automata/GameOfLifeState.class
index b3a87374692bcd4b8207a000bc7cfa23c62d85fe..496f137cfbed7d0264a6ca2f99b74a1b97c92542 100644
Binary files a/build/classes/java/main/model/automata/GameOfLifeState.class and b/build/classes/java/main/model/automata/GameOfLifeState.class differ
diff --git a/build/classes/java/main/view/FillingMouseListener.class b/build/classes/java/main/view/FillingMouseListener.class
index 591c5a91de905231d9d4015bb17a2ac9fc4dd7e4..f32cd2081452de736b6e7e0a39b46d383c6adc1a 100644
Binary files a/build/classes/java/main/view/FillingMouseListener.class and b/build/classes/java/main/view/FillingMouseListener.class differ
diff --git a/build/classes/java/main/view/MatrixPane.class b/build/classes/java/main/view/MatrixPane.class
index d9f62f085e54ebfeade6227714692731154c4c01..4f8dc71a4e4214025952869039c4ca01b0b2c332 100644
Binary files a/build/classes/java/main/view/MatrixPane.class and b/build/classes/java/main/view/MatrixPane.class differ
diff --git a/build/classes/java/main/view/MouseListener.class b/build/classes/java/main/view/MouseListener.class
index 61a64b0064a5c3170d2e0f7a6389ed7a15be7350..6b6d3e981db48c494c78210023e7835f77ee7672 100644
Binary files a/build/classes/java/main/view/MouseListener.class and b/build/classes/java/main/view/MouseListener.class differ
diff --git a/build/classes/java/main/view/WaitingMouseListener.class b/build/classes/java/main/view/WaitingMouseListener.class
index 5991560323e72bd7e913304f66d7888f14a286c3..76deffb5e152a59097e32fbacf40b1b072abf481 100644
Binary files a/build/classes/java/main/view/WaitingMouseListener.class and b/build/classes/java/main/view/WaitingMouseListener.class differ
diff --git a/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class b/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class
index e6769c0ae5cddb83c36ada7f2d6b749df7938609..cde4b6594d2a1ff59ef83f819d769bcea647ca47 100644
Binary files a/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class and b/build/classes/java/test/matrix/ConstantMatrixInitializerTest.class differ
diff --git a/build/classes/java/test/matrix/CoordinateIteratorTest.class b/build/classes/java/test/matrix/CoordinateIteratorTest.class
index be9900b00e42d0af30b47934dc84084e19178df0..8791c1e9c06d3c6463574719105c2d4a9e08de29 100644
Binary files a/build/classes/java/test/matrix/CoordinateIteratorTest.class and b/build/classes/java/test/matrix/CoordinateIteratorTest.class differ
diff --git a/build/classes/java/test/matrix/CoordinateTest.class b/build/classes/java/test/matrix/CoordinateTest.class
index ee7f644af9a83317e8924317f5409a95d06b032d..50d43b473339ccb76b099dadfb3883f16fa79713 100644
Binary files a/build/classes/java/test/matrix/CoordinateTest.class and b/build/classes/java/test/matrix/CoordinateTest.class differ
diff --git a/build/classes/java/test/matrix/ListMatrixTest.class b/build/classes/java/test/matrix/ListMatrixTest.class
index beb794540a12d2af95bd5e271e2c38f50e9c416e..40a8c0c74fdc4d7c6ae6a9740afabb180109cbc4 100644
Binary files a/build/classes/java/test/matrix/ListMatrixTest.class and b/build/classes/java/test/matrix/ListMatrixTest.class differ
diff --git a/build/classes/java/test/model/CellTest$Change.class b/build/classes/java/test/model/CellTest$Change.class
index 6b6b7611dca2d207c63a5a951c5021011b75ccad..52af37a3ac9ee8791555d88b98756cf78d328398 100644
Binary files a/build/classes/java/test/model/CellTest$Change.class and b/build/classes/java/test/model/CellTest$Change.class differ
diff --git a/build/classes/java/test/model/CellTest$MockListener.class b/build/classes/java/test/model/CellTest$MockListener.class
index aadba9b3c339283d930612e0b4492a48a4358595..34d293dad5a0f8f4ae7c57c21db09774029697cd 100644
Binary files a/build/classes/java/test/model/CellTest$MockListener.class and b/build/classes/java/test/model/CellTest$MockListener.class differ
diff --git a/build/classes/java/test/model/CellTest.class b/build/classes/java/test/model/CellTest.class
index f4ab89d55a2ce1847a88232fbca8c862a8a0ec3e..d52a7cc15379b9b186b51356f0a802a69c0cf489 100644
Binary files a/build/classes/java/test/model/CellTest.class and b/build/classes/java/test/model/CellTest.class differ
diff --git a/build/classes/java/test/model/CellularAutomatonSimulationTest.class b/build/classes/java/test/model/CellularAutomatonSimulationTest.class
index 04144cd83933d5a2b64984a8ad33edf7ef3fe904..3dc3e8333d0ef9449ab895c39eb6aa4b39acc3c9 100644
Binary files a/build/classes/java/test/model/CellularAutomatonSimulationTest.class and b/build/classes/java/test/model/CellularAutomatonSimulationTest.class differ
diff --git a/build/classes/java/test/model/NextGenerationInitializerTest.class b/build/classes/java/test/model/NextGenerationInitializerTest.class
index 850f2fe85971a90d1c62567c167951c6d9cccace..2e7d38fee51e70409a33d1548ec57fd3a51570dc 100644
Binary files a/build/classes/java/test/model/NextGenerationInitializerTest.class and b/build/classes/java/test/model/NextGenerationInitializerTest.class differ
diff --git a/build/classes/java/test/model/StateTest.class b/build/classes/java/test/model/StateTest.class
index 57cc649808f0b322b304730c4b6c11e1aeb400cc..91e24f71a10f561905d1de2341cbe13c857fd11c 100644
Binary files a/build/classes/java/test/model/StateTest.class and b/build/classes/java/test/model/StateTest.class differ
diff --git a/build/classes/java/test/model/automata/GameOfLifeStateTest.class b/build/classes/java/test/model/automata/GameOfLifeStateTest.class
index de2803b3298d6a110b0a4f5f7373c690c0eb28bc..e06eff8f2660041a36cf720e528bcbabe7ee5edb 100644
Binary files a/build/classes/java/test/model/automata/GameOfLifeStateTest.class and b/build/classes/java/test/model/automata/GameOfLifeStateTest.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomaton.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomaton.class.uniqueId6
new file mode 100644
index 0000000000000000000000000000000000000000..1a0ed666b87c50677a7f121d1a97229e1e05925c
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomaton.class.uniqueId6 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..666eee34be1ba6a3882b4a01d6f8c4b665a305ca
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/CellularAutomatonSimulation.class.uniqueId1 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CoordinateIterator.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/CoordinateIterator.class.uniqueId1
deleted file mode 100644
index 510e71e03735dfe566c742ba4e40ab0aeb46fdc9..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CoordinateIterator.class.uniqueId1 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeAutomaton.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeAutomaton.class.uniqueId4
new file mode 100644
index 0000000000000000000000000000000000000000..6bd36f42deaaa9459be2cbcbd62ab2e47a4d957e
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeAutomaton.class.uniqueId4 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeState.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeState.class.uniqueId2
new file mode 100644
index 0000000000000000000000000000000000000000..496f137cfbed7d0264a6ca2f99b74a1b97c92542
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/GameOfLifeState.class.uniqueId2 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Matrix.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Matrix.class.uniqueId0
deleted file mode 100644
index 22eb59f4782d59fa4799727546314e01498d8629..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Matrix.class.uniqueId0 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..80c0fcd224a6291ccca3999b938dd923af0c1789
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/NextGenerationInitializer.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3
new file mode 100644
index 0000000000000000000000000000000000000000..d3e7e6501fdcde716363cd6017444d3fbf0f8365
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId3 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/State.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/State.class.uniqueId5
new file mode 100644
index 0000000000000000000000000000000000000000..677d2231efee89f0afb0f0481ed6ebed3e15b342
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/State.class.uniqueId5 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index a0c72fc96d493d57160b9feb7e96516cfe9701c9..f076e28112b339596eb66b4b6b5e899995e7d843 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/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..cde4b6594d2a1ff59ef83f819d769bcea647ca47
Binary files /dev/null and b/build/tmp/compileTestJava/compileTransaction/stash-dir/ConstantMatrixInitializerTest.class.uniqueId0 differ
diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1 b/build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..40a8c0c74fdc4d7c6ae6a9740afabb180109cbc4
Binary files /dev/null and b/build/tmp/compileTestJava/compileTransaction/stash-dir/ListMatrixTest.class.uniqueId1 differ
diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin
index f1fec0a7b86514b5e2e3417b6be2a3aa0b00f17f..b847dc1883fd5ce455c9a72ff49f46a7bcf1bafb 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 a3a4e7d562c43dded22737a89919f85f5eca6040..1d29478029be47d2e2757a67f4aea57cbd8e457e 100644
--- a/src/main/java/matrix/ListMatrix.java
+++ b/src/main/java/matrix/ListMatrix.java
@@ -1,5 +1,6 @@
 package matrix;
 
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -23,41 +24,47 @@ public class ListMatrix<T> implements Matrix<T> {
    * @param initializer A matrix initializer to set values in the {@link ListMatrix}.
    */
   public ListMatrix(int width, int height, MatrixInitializer<T> initializer) {
-    // TODO
-    this.width = 0;
-    this.height = 0;
-    this.matrix = null;
-    this.initializeWith(initializer); // fills the matrix using initializer
+    this.width = width;
+    this.height = height;
+    this.matrix = new ArrayList<>(width);
+   // fills the matrix using initializer
+   for(int x =0;x<width;x++){
+    List<T> row = new ArrayList<>(height);
+    for(int y = 0;y<height;y++){
+      row.add(initializer.initialValueAt(new Coordinate(x,y)));
+    }
+    matrix.add(row);
+   }
   }
 
   public ListMatrix(int width, int height, T constant) {
-    this(width, height, new ConstantMatrixInitializer<>(constant));
-  }
-
-  private void initializeWith(MatrixInitializer<T> initializer) {
-    // TODO initialize each cell of the matrix, with a value determined by initializer
+    this(width, height, coord->constant);
   }
 
   public int width() {
-    // TODO
-    return 0;
+    return width;
   }
 
   public int height() {
-    // TODO
-    return 0;
+    return height;
   }
 
   @Override
   public T get(int x, int y) {
-    // TODO
-    return null;
+    checkBounds(x,y);
+    return matrix.get(y).get(x);
   }
 
 
   @Override
   public void set(int x, int y, T newValue) {
-    // TODO
-  }
+    checkBounds(x,y);
+    matrix.get(y).set(x,newValue);
+    }
 
+    private void checkBounds(int x, int y){
+      if(x<0|| x>=width ||y<0||y>= height){
+        throw new IndexOutOfBoundsException("Indicces out of bounds;("+x+","+")");
+      }
+    }
 }
diff --git a/src/main/java/model/State.java b/src/main/java/model/State.java
index 1954558460d6969d09544c64c40152d97c1a736e..addc21ded7ad90dd50c022c633b4d3e43516b2ea 100644
--- a/src/main/java/model/State.java
+++ b/src/main/java/model/State.java
@@ -44,7 +44,12 @@ public interface State<S> {
      * @return The number of times the specified state appears in the list of neighbors.
      */
     static <T> int count(T state, List<T> neighbours) {
-        //TODO: à compléter
-        return 0;
+        int count =0;
+        for(T voisin: neighbours){
+            if (voisin.equals(state)){
+                count ++;
+            }
+        }
+        return count;
     }
 }
\ No newline at end of file