diff --git a/app/src/main/java/model/ArrayGrid.java b/app/src/main/java/model/ArrayGrid.java
new file mode 100644
index 0000000000000000000000000000000000000000..93644e789583d35602032f5aa15e6b120ecb6648
--- /dev/null
+++ b/app/src/main/java/model/ArrayGrid.java
@@ -0,0 +1,38 @@
+package model;
+
+public class ArrayGrid implements Grid{
+
+    private Cell[][] cells;
+    private int numberOfRows;
+    private int numberOfColumns;
+    public ArrayGrid(int numberOfRows, int numberOfColumns){
+        this.cells=new SquareCell[numberOfRows][numberOfColumns];
+        if (numberOfRows <= 0 || numberOfColumns <= 0)
+            throw new IllegalArgumentException();
+    }
+    @Override
+    public Cell getCell(int row, int column) {
+        return this.cells[row][column];
+    }
+
+    @Override
+    public int getNumberOfRows() {
+        return  this.numberOfRows;
+    }
+
+    @Override
+    public int getNumberOfColumns() {
+        return this.numberOfColumns;
+    }
+
+    public void color(ColorGenerator colorGenerator) {
+        for (int i=0; i < this.getNumberOfRows();i++){
+            for(int j=0; j< this.getNumberOfColumns();j++){
+                this.getCell(i,j).setColor(colorGenerator.nextColor(this.getCell(i,j)));
+            }
+        }
+    }
+    public Iterator<Cell> iterator(){
+        return new CellGridIterator();
+    }
+}
diff --git a/app/src/main/java/model/CellGridIterator.java b/app/src/main/java/model/CellGridIterator.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c7908093744192f2b5cb729a26691df62dad749
--- /dev/null
+++ b/app/src/main/java/model/CellGridIterator.java
@@ -0,0 +1,30 @@
+package model;
+
+public class CellGridIterator implements Iterator<Cell>{
+    ArrayGrid grid;
+    Iterator<Cell> it=grid.iterator();
+    int indixRow;
+    int indixColum;
+
+    public CellGridIterator(ArrayGrid grid) {
+        this.grid = grid;
+    }
+    public SquareCell next() {
+        int i = 0;
+        while (i < grid.getNumberOfRows()) {
+
+            while (it.hasNext()) {
+                return it.next();
+            }
+            i++;
+        }
+    }
+    public boolean hasNext( ){
+        int n;
+
+        if(n>= grid.getNumberOfColumns()|| n>= grid.getNumberOfRows()) return false;
+
+
+
+    }
+}
diff --git a/app/src/main/java/model/Grid.java b/app/src/main/java/model/Grid.java
index 64341b4de0f789c8307834655f856691218cd242..75aacc67512e50adc4a765004d5fed7ab55a39f3 100644
--- a/app/src/main/java/model/Grid.java
+++ b/app/src/main/java/model/Grid.java
@@ -1,6 +1,6 @@
 package model;
 
-public interface  Grid  {
+public interface  Grid extends Iterable<Cell> {
 
     /**
      * Return the cell located at the given coordinates in the grid.
diff --git a/app/src/main/java/model/Iterator.java b/app/src/main/java/model/Iterator.java
new file mode 100644
index 0000000000000000000000000000000000000000..98e84279a7f4330ac489442adac27d27b53c9f1e
--- /dev/null
+++ b/app/src/main/java/model/Iterator.java
@@ -0,0 +1,6 @@
+package model;
+
+public interface Iterator<Cell> {
+
+
+}
diff --git a/app/src/main/java/model/SquareCell.java b/app/src/main/java/model/SquareCell.java
index adac1141eadad457cd20b268921e02af63804e65..87139cc7dda76c3520648e900570e485725576c4 100644
--- a/app/src/main/java/model/SquareCell.java
+++ b/app/src/main/java/model/SquareCell.java
@@ -7,7 +7,19 @@ import java.util.List;
 
 public class SquareCell extends AbstractCell{
 
-    List<Cell> neighbours;
+    private List<Cell> neighbours;
+
+    public SquareCell (){
+        Cell DEFAULT_CELL_COLOR;
+    }
+    public SquareCell(Color color){
+        this.setColor(color);
+    }
+    public SquareCell(Color color,List<Cell> neighbours ){
+        this.setColor(color);
+        this.neighbours=  neighbours;
+
+    }
 
     public SquareCell (){
         Cell DEFAULT_CELL_COLOR;