diff --git a/cell.h b/cell.h
index 808e5a163e2d37ab48c21f868cd569eca5a80b8a..3ca68e39781f4b8974d24627722a3b3a6c528bf2 100644
--- a/cell.h
+++ b/cell.h
@@ -26,7 +26,6 @@ public slots:
     void addOption(int x);
     void removeOption(int x);
     void collapse(int x);
-private slots:
     void un(void);
 };
 
diff --git a/window.cpp b/window.cpp
index b055b889300a12cabc7261ba8a7993cefc2fc51b..825783a5f60cd4fe4793139d147c0f04f4bcc9c5 100644
--- a/window.cpp
+++ b/window.cpp
@@ -72,6 +72,7 @@ Window::Window(QWidget *parent)
 void Window::solveButtonClicked()
 {
     // std::array<Cell,81> start = m_cell;
+    std::list<Cell*> hist;
     srand(time(NULL));
     while (1)
     {
@@ -101,12 +102,18 @@ void Window::solveButtonClicked()
             return;
         }
         else if(minEtropy ==0){
-            qInfo("dead End reached");
+            while (hist.size()>1)
+            {
+                hist.back()->un();
+                hist.pop_back();
+            }
             return;
+            //solveButtonClicked();
         }
         int choiceCell = rand() % b.size(); //choose a random cell 
         int choiceNr = rand() % b[choiceCell]->index.size(); //choose a random number;
         b[choiceCell]->collapse(b[choiceCell]->index[choiceNr]); //collapse that random cell with chosen number;
+        hist.push_back(b[choiceCell]);
         repaint(); //draw cells again
         QThread::msleep(m_delay);
     }