diff --git a/app/src/main/java/model/ArrayGrid.java b/app/src/main/java/model/ArrayGrid.java
index 78c88c8f10187c0ccb3b2f309ad66d047c4e5ddc..849e6f5b2b5b67b6d982c169cbfb798ea7c8c3ba 100644
--- a/app/src/main/java/model/ArrayGrid.java
+++ b/app/src/main/java/model/ArrayGrid.java
@@ -18,7 +18,7 @@ public class ArrayGrid implements Grid{
         else {
             for (int j = 0; j < this.numberOfColumns; j++) {
                 for (int i = 0; i < this.numberOfRows; i++) {
-                    cells[i][j] = new SquareCell();
+                    cells[j][i] = new SquareCell();
                 }
             }
         }
@@ -37,11 +37,11 @@ public class ArrayGrid implements Grid{
 
     public void color(ColorGenerator colorGenerator){
         for(Cell cell : this)
-               cell.setColor(colorGenerator.nextColor(new SquareCell()));
+               cell.setColor(colorGenerator.nextColor(cell));
     }
 
     public Iterator<Cell> iterator(){
-        return  null  ;
+        return  new CellGridIterator(new ArrayGrid(numberOfColumns,numberOfRows));
     }
 
 
diff --git a/app/src/main/java/model/CellGridIterator.java b/app/src/main/java/model/CellGridIterator.java
new file mode 100644
index 0000000000000000000000000000000000000000..48577727495b5279354676c27a1d6ecb793d89e4
--- /dev/null
+++ b/app/src/main/java/model/CellGridIterator.java
@@ -0,0 +1,41 @@
+package model;
+
+import javafx.scene.paint.Color;
+
+import java.util.Iterator;
+
+public class CellGridIterator implements Iterator<Cell> {
+    private  ArrayGrid grid;
+    private int x ;
+    private int y ;
+
+
+
+   public CellGridIterator(ArrayGrid grid){
+        this.grid = grid;
+   }
+
+    @Override
+    public boolean hasNext() {
+        if(x< grid.getNumberOfColumns()-1 ||y< grid.getNumberOfRows()-1){
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+
+    public Cell next(){
+       Cell cell = grid.getCell(y, x);
+       if (x< grid.getNumberOfRows()-1){
+           x = x + 1;
+       }
+       else {
+            y = y + 1;
+            x = 0;
+       }
+       return cell;
+
+   }
+}
+
diff --git a/app/src/main/java/model/GrayGrid.java b/app/src/main/java/model/GrayGrid.java
index 18e7f4d6c40b812ac5145220461ce84c242eb7ce..b47a50b53dc3ba969fe1090abcb99965ae7be8fa 100644
--- a/app/src/main/java/model/GrayGrid.java
+++ b/app/src/main/java/model/GrayGrid.java
@@ -1,5 +1,7 @@
 package model;
 
+import java.util.Iterator;
+
 public class GrayGrid implements Grid{
 
     private final int numberOfRows;
@@ -44,4 +46,7 @@ public class GrayGrid implements Grid{
     public void color(ColorGenerator colorGenerator){
 
     }
+    public Iterator<Cell> iterator(){
+        return null;
+    }
 }
diff --git a/app/src/main/java/model/Grid.java b/app/src/main/java/model/Grid.java
index 96e23b9f5770314a74e353fdbff338e457d7e664..6c408e4512c40d7eb9e1b6afdf30dcf3028a0444 100644
--- a/app/src/main/java/model/Grid.java
+++ b/app/src/main/java/model/Grid.java
@@ -30,3 +30,4 @@ public interface  Grid  extends Iterable<Cell>{
 
     void color(ColorGenerator colorGenerator);
 }
+
diff --git a/app/src/main/java/model/UniformColorGenerator.java b/app/src/main/java/model/UniformColorGenerator.java
index ec65896d026abebaf65fbf8a2866ee1ed342bb9b..40fca1be3fc3b15460d8517fc5ee191baa43f106 100644
--- a/app/src/main/java/model/UniformColorGenerator.java
+++ b/app/src/main/java/model/UniformColorGenerator.java
@@ -3,12 +3,14 @@ package model;
 import javafx.scene.paint.Color;
 
 public class UniformColorGenerator implements ColorGenerator{
+    private Color color;
 
-
-
+    public UniformColorGenerator(Color color){
+        this.color = color;
+    }
 
     public Color nextColor(Cell cell){
-        return cell.getColor();
+        return color;
     }
 
 }