diff --git a/app/src/main/java/model/ArrayGrid.java b/app/src/main/java/model/ArrayGrid.java
index 93644e789583d35602032f5aa15e6b120ecb6648..0ce83d70767482eb3259b70e16d50e95973968e6 100644
--- a/app/src/main/java/model/ArrayGrid.java
+++ b/app/src/main/java/model/ArrayGrid.java
@@ -33,6 +33,6 @@ public class ArrayGrid implements Grid{
         }
     }
     public Iterator<Cell> iterator(){
-        return new CellGridIterator();
+        return new CellGridIterator(this);
     }
 }
diff --git a/app/src/main/java/model/CellGridIterator.java b/app/src/main/java/model/CellGridIterator.java
index 4c7908093744192f2b5cb729a26691df62dad749..04199f3008a467658dbb1ab3bfcd9d41297523f4 100644
--- a/app/src/main/java/model/CellGridIterator.java
+++ b/app/src/main/java/model/CellGridIterator.java
@@ -2,29 +2,25 @@ 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;
+        this.indixColum=0;
+        this.indixRow=0;
     }
-    public SquareCell next() {
-        int i = 0;
-        while (i < grid.getNumberOfRows()) {
-
-            while (it.hasNext()) {
-                return it.next();
-            }
-            i++;
+    public Cell next() {
+        final Cell result = grid.getCell(indixRow, indixColum);
+        indixColum = (indixColum +1) % grid.getNumberOfColumns();
+        if(indixColum == 0){
+            indixRow++;
         }
-    }
-    public boolean hasNext( ){
-        int n;
-
-        if(n>= grid.getNumberOfColumns()|| n>= grid.getNumberOfRows()) return false;
-
+        return result;
 
 
     }
+    public boolean hasNext(){
+            return this.indixColum < this.grid.getNumberOfColumns() && indixRow < this.grid.getNumberOfRows();
+    }
 }