diff --git a/Calibration/mainwindow.cpp b/Calibration/mainwindow.cpp
index a2ba4dfd3568bb9dcfcf1a0a0ed16fa618348610..612b5bd7a3a5b2c6316f743eb5c6ef49f958ee05 100644
--- a/Calibration/mainwindow.cpp
+++ b/Calibration/mainwindow.cpp
@@ -19,10 +19,9 @@ MainWindow::MainWindow(QWidget *parent)
     parent->connect(ui->btnReload, SIGNAL (released()),this, SLOT(reloadListRealSenseDevices()));
     parent->connect(ui->btnSave, SIGNAL (released()),this, SLOT(saveConfiguration()));
     parent->connect(ui->btnConfig, SIGNAL (released()),this, SLOT(configure()));
-    //parent->connect(ui->lblImage, SIGNAL (mousePressed()),this, SLOT(selectEdgeBorder()));
     parent->connect(ui->lblImage, SIGNAL (mousePos()),this, SLOT(moveEdgeBorder()));
     parent->connect(ui->lblImage, SIGNAL (mouseLeft()),this, SLOT(deselectEdgeBorder()));
-    //parent->connect(ui->MainWindow, SIGNAL (mousePressEvent(QMouseEvent*)),this, SLOT(test(QMouseEvent*)));
+
     // init cursor for console
     pteConsole_cursor = QTextCursor(ui->pteConsole->document());
     pteConsole_cursor.movePosition(QTextCursor::End);
@@ -36,6 +35,7 @@ MainWindow::MainWindow(QWidget *parent)
  */
 MainWindow::~MainWindow()
 {
+    sandbox.stopCamera();
     delete ui;
 }
 
@@ -111,47 +111,82 @@ void MainWindow::saveConfiguration() {
     sandbox.serialize(out);
     pteConsole_cursor.insertText("Serialized\n");
     out.close();
+
+    ifstream in("./device");
+
+    pteConsole_cursor.insertText("Deserialize\n");
+    sandbox.deserialize(in);
+    pteConsole_cursor.insertText("Deserialized\n");
+    out.close();
 }
 
 /*!
  * \brief MainWindow::configure
  * Launch the process to configure the matrix
  */
-void MainWindow::configure() {
-    Mat coloredFrame = sandbox.generateBorder();
-    ui->lblImage->setPixmap(QPixmap::fromImage(QImage(coloredFrame.data, coloredFrame.cols, coloredFrame.rows, coloredFrame.step, QImage::Format_RGB888)));
-    pteConsole_cursor.insertText("Ready to init\n");
-    borderEdition = true;
-}
-
-void MainWindow::selectEdgeBorder()
-{
-    if (borderEdition) {
-        selectedPoint = sandbox.findEdgeBorder(ui->lblImage->x, ui->lblImage->y);
+void MainWindow::configure() {  
+    switch (stepConfiguration) {
+    case 0: // Edit the border
+    {
+        Mat coloredFrame = sandbox.generateBorder();
+        ui->lblImage->setPixmap(QPixmap::fromImage(QImage(coloredFrame.data, coloredFrame.cols, coloredFrame.rows, coloredFrame.step, QImage::Format_RGB888)));
+        pteConsole_cursor.insertText("Ready to init\n");
+        ui->btnConfig->setText("Generate matrix");
+        stepConfiguration = 1;
+        break;
+    }
+    case 1: // Valid the border for the matrix deformation and start beamer detection
+    {
+        sandbox.applyBorder();
+        ui->btnConfig->setText("Capture Point");
+        Mat frameDetection;
+        stepConfiguration = 2;
+        do {
+            tie(frameDetection, crcToDetectBeamer) = sandbox.detectPointToDetectBeamer(indexPointToDetectBeamer);
+            ui->lblImage->setPixmap(QPixmap::fromImage(QImage(frameDetection.data, frameDetection.cols, frameDetection.rows, frameDetection.step, QImage::Format_RGB888)));
+            waitKey(500);
+        } while(indexPointToDetectBeamer < 3);
+        ui->lblImage->setPixmap(QPixmap());
+        stepConfiguration = 3;
+        break;
+    }
+    case 2:
+    {
+        if (!crcToDetectBeamer.empty())
+        {
+            sandbox.capturePointToDetectBeamer(crcToDetectBeamer);
+            indexPointToDetectBeamer++;
+            pteConsole_cursor.insertText("add element\n");
+        }
+    }
+    default:
+        break;
     }
 }
 
+/*!
+ * \brief MainWindow::moveEdgeBorder
+ * mouseMoveEvent when the mouse is pressed on the label
+ * selected the edge of border the nearest of the mouse
+ */
 void MainWindow::moveEdgeBorder() {
-    pteConsole_cursor.insertText(QString::number(ui->lblImage->x));
-    pteConsole_cursor.insertText(" ");
-    pteConsole_cursor.insertText(QString::number(ui->lblImage->y));
-    pteConsole_cursor.insertText("\n");
-    if (borderEdition) {
+
+    if (stepConfiguration == 1) {
         if (selectedPoint == -1) {
             selectedPoint = sandbox.findEdgeBorder(ui->lblImage->x, ui->lblImage->y);
-            //pteConsole_cursor.insertText(QString::number(selectedPoint));
-            //pteConsole_cursor.insertText("\n");
         } else {
-            pteConsole_cursor.insertText(QString::number(selectedPoint));
-            pteConsole_cursor.insertText("\n");
             Mat coloredFrame = sandbox.editEdgeBorder(selectedPoint,ui->lblImage->x, ui->lblImage->y);
             ui->lblImage->setPixmap(QPixmap::fromImage(QImage(coloredFrame.data, coloredFrame.cols, coloredFrame.rows, coloredFrame.step, QImage::Format_RGB888)));
         }
     }
 }
 
+/*!
+ * \brief MainWindow::deselectEdgeBorder
+ * mouseReleaseEvent which deselect the edge of the border
+ */
 void MainWindow::deselectEdgeBorder() {
-   if (borderEdition) {
+   if (stepConfiguration == 1) {
        selectedPoint = -1;
    }
 }
diff --git a/Calibration/mainwindow.h b/Calibration/mainwindow.h
index 8b4c2e6e0ea253be50a78b56a14f60713eb1eeb9..378a6e005a4eb565009751fa58df922bd7a132be 100644
--- a/Calibration/mainwindow.h
+++ b/Calibration/mainwindow.h
@@ -35,7 +35,9 @@ private:
     device_list listRealSenseDevices;
     Sandbox sandbox;
     int selectedPoint = -1;
-    bool borderEdition = false;
+    int stepConfiguration = 0;
+    vector<int> crcToDetectBeamer;
+    int indexPointToDetectBeamer = 0;
 
     // Methods
     void showListRealSenseDevices();
@@ -47,7 +49,6 @@ private slots:
     void reloadListRealSenseDevices();
     void saveConfiguration();
     void configure();
-    void selectEdgeBorder();
     void moveEdgeBorder();
     void deselectEdgeBorder();
 };
diff --git a/Calibration/mainwindow.ui b/Calibration/mainwindow.ui
index fd1257837cf5afa779cb060a5d0298db1acc2582..ae688999522c1d539d8cd901f64c93ba2d6c1014 100644
--- a/Calibration/mainwindow.ui
+++ b/Calibration/mainwindow.ui
@@ -10,7 +10,7 @@
     <x>0</x>
     <y>0</y>
     <width>1920</width>
-    <height>445</height>
+    <height>800</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -103,13 +103,13 @@
         </spacer>
        </item>
        <item>
-        <widget class="ReactiveLabel" name="lblImage">
+        <widget class="ReactiveLabel" name="lblImage" native="true">
          <property name="styleSheet">
           <string notr="true">border-color: rgb(46, 52, 54);
 border-width: 1px;
 border-style: solid;</string>
          </property>
-         <property name="text">
+         <property name="text" stdset="0">
           <string/>
          </property>
         </widget>
@@ -209,6 +209,13 @@ border-style: solid;</string>
   </widget>
   <widget class="QStatusBar" name="statusbar"/>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ReactiveLabel</class>
+   <extends>QWidget</extends>
+   <header>reactivelabel.h</header>
+  </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
 </ui>
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-13_54_21.log b/build-Calibration-Desktop-Debug/2020-04-07-13_54_21.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-13_55_47.log b/build-Calibration-Desktop-Debug/2020-04-07-13_55_47.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-13_57_17.log b/build-Calibration-Desktop-Debug/2020-04-07-13_57_17.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-13_57_26.log b/build-Calibration-Desktop-Debug/2020-04-07-13_57_26.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-13_58_18.log b/build-Calibration-Desktop-Debug/2020-04-07-13_58_18.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_12_44.log b/build-Calibration-Desktop-Debug/2020-04-07-14_12_44.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_12_53.log b/build-Calibration-Desktop-Debug/2020-04-07-14_12_53.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_14_49.log b/build-Calibration-Desktop-Debug/2020-04-07-14_14_49.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_17_30.log b/build-Calibration-Desktop-Debug/2020-04-07-14_17_30.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_18_11.log b/build-Calibration-Desktop-Debug/2020-04-07-14_18_11.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_18_28.log b/build-Calibration-Desktop-Debug/2020-04-07-14_18_28.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_20_20.log b/build-Calibration-Desktop-Debug/2020-04-07-14_20_20.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_24_54.log b/build-Calibration-Desktop-Debug/2020-04-07-14_24_54.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_28_25.log b/build-Calibration-Desktop-Debug/2020-04-07-14_28_25.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_29_32.log b/build-Calibration-Desktop-Debug/2020-04-07-14_29_32.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_30_09.log b/build-Calibration-Desktop-Debug/2020-04-07-14_30_09.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_49_00.log b/build-Calibration-Desktop-Debug/2020-04-07-14_49_00.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_50_12.log b/build-Calibration-Desktop-Debug/2020-04-07-14_50_12.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_51_04.log b/build-Calibration-Desktop-Debug/2020-04-07-14_51_04.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-14_51_28.log b/build-Calibration-Desktop-Debug/2020-04-07-14_51_28.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_07_52.log b/build-Calibration-Desktop-Debug/2020-04-07-15_07_52.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_15_41.log b/build-Calibration-Desktop-Debug/2020-04-07-15_15_41.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_20_10.log b/build-Calibration-Desktop-Debug/2020-04-07-15_20_10.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_23_05.log b/build-Calibration-Desktop-Debug/2020-04-07-15_23_05.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_37_22.log b/build-Calibration-Desktop-Debug/2020-04-07-15_37_22.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_42_25.log b/build-Calibration-Desktop-Debug/2020-04-07-15_42_25.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_43_19.log b/build-Calibration-Desktop-Debug/2020-04-07-15_43_19.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_45_05.log b/build-Calibration-Desktop-Debug/2020-04-07-15_45_05.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_46_00.log b/build-Calibration-Desktop-Debug/2020-04-07-15_46_00.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_46_45.log b/build-Calibration-Desktop-Debug/2020-04-07-15_46_45.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_51_03.log b/build-Calibration-Desktop-Debug/2020-04-07-15_51_03.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-15_52_37.log b/build-Calibration-Desktop-Debug/2020-04-07-15_52_37.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-16_03_35.log b/build-Calibration-Desktop-Debug/2020-04-07-16_03_35.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-16_07_24.log b/build-Calibration-Desktop-Debug/2020-04-07-16_07_24.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-16_09_47.log b/build-Calibration-Desktop-Debug/2020-04-07-16_09_47.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-16_15_59.log b/build-Calibration-Desktop-Debug/2020-04-07-16_15_59.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-16_23_36.log b/build-Calibration-Desktop-Debug/2020-04-07-16_23_36.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-16_57_51.log b/build-Calibration-Desktop-Debug/2020-04-07-16_57_51.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-09-13_20_15.log b/build-Calibration-Desktop-Debug/2020-04-09-13_20_15.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-09-13_26_24.log b/build-Calibration-Desktop-Debug/2020-04-09-13_26_24.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-10-09_43_03.log b/build-Calibration-Desktop-Debug/2020-04-10-09_43_03.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-10-09_44_48.log b/build-Calibration-Desktop-Debug/2020-04-10-09_44_48.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-10-09_47_36.log b/build-Calibration-Desktop-Debug/2020-04-10-09_47_36.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-10-09_50_46.log b/build-Calibration-Desktop-Debug/2020-04-10-09_50_46.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-10-10_09_24.log b/build-Calibration-Desktop-Debug/2020-04-10-10_09_24.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-09_29_15.log b/build-Calibration-Desktop-Debug/2020-04-21-09_29_15.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-09_36_00.log b/build-Calibration-Desktop-Debug/2020-04-21-09_36_00.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-09_57_14.log b/build-Calibration-Desktop-Debug/2020-04-21-09_57_14.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_11_01.log b/build-Calibration-Desktop-Debug/2020-04-21-10_11_01.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_15_38.log b/build-Calibration-Desktop-Debug/2020-04-21-10_15_38.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_21_26.log b/build-Calibration-Desktop-Debug/2020-04-21-10_21_26.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_22_01.log b/build-Calibration-Desktop-Debug/2020-04-21-10_22_01.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_26_06.log b/build-Calibration-Desktop-Debug/2020-04-21-10_26_06.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_26_44.log b/build-Calibration-Desktop-Debug/2020-04-21-10_26_44.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_34_44.log b/build-Calibration-Desktop-Debug/2020-04-21-10_34_44.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_35_41.log b/build-Calibration-Desktop-Debug/2020-04-21-10_35_41.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_37_29.log b/build-Calibration-Desktop-Debug/2020-04-21-10_37_29.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_38_06.log b/build-Calibration-Desktop-Debug/2020-04-21-10_38_06.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_43_38.log b/build-Calibration-Desktop-Debug/2020-04-21-10_43_38.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_49_33.log b/build-Calibration-Desktop-Debug/2020-04-21-10_49_33.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_50_17.log b/build-Calibration-Desktop-Debug/2020-04-21-10_50_17.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-10_51_58.log b/build-Calibration-Desktop-Debug/2020-04-21-10_51_58.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-11_17_01.log b/build-Calibration-Desktop-Debug/2020-04-21-11_17_01.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-13_10_49.log b/build-Calibration-Desktop-Debug/2020-04-21-13_10_49.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-13_48_22.log b/build-Calibration-Desktop-Debug/2020-04-21-13_48_22.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-14_55_14.log b/build-Calibration-Desktop-Debug/2020-04-21-14_55_14.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-15_01_09.log b/build-Calibration-Desktop-Debug/2020-04-21-15_01_09.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-15_01_51.log b/build-Calibration-Desktop-Debug/2020-04-21-15_01_51.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-15_03_46.log b/build-Calibration-Desktop-Debug/2020-04-21-15_03_46.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-15_05_58.log b/build-Calibration-Desktop-Debug/2020-04-21-15_05_58.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-15_06_41.log b/build-Calibration-Desktop-Debug/2020-04-21-15_06_41.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-15_10_24.log b/build-Calibration-Desktop-Debug/2020-04-21-15_10_24.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-15_12_53.log b/build-Calibration-Desktop-Debug/2020-04-21-15_12_53.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-15_17_02.log b/build-Calibration-Desktop-Debug/2020-04-21-15_17_02.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_15_35.log b/build-Calibration-Desktop-Debug/2020-04-21-16_15_35.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_16_17.log b/build-Calibration-Desktop-Debug/2020-04-21-16_16_17.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_20_08.log b/build-Calibration-Desktop-Debug/2020-04-21-16_20_08.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_20_56.log b/build-Calibration-Desktop-Debug/2020-04-21-16_20_56.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_22_11.log b/build-Calibration-Desktop-Debug/2020-04-21-16_22_11.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_24_00.log b/build-Calibration-Desktop-Debug/2020-04-21-16_24_00.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_26_23.log b/build-Calibration-Desktop-Debug/2020-04-21-16_26_23.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_32_00.log b/build-Calibration-Desktop-Debug/2020-04-21-16_32_00.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_38_19.log b/build-Calibration-Desktop-Debug/2020-04-21-16_38_19.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_39_22.log b/build-Calibration-Desktop-Debug/2020-04-21-16_39_22.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_49_28.log b/build-Calibration-Desktop-Debug/2020-04-21-16_49_28.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_50_29.log b/build-Calibration-Desktop-Debug/2020-04-21-16_50_29.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_54_34.log b/build-Calibration-Desktop-Debug/2020-04-21-16_54_34.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_55_18.log b/build-Calibration-Desktop-Debug/2020-04-21-16_55_18.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_56_10.log b/build-Calibration-Desktop-Debug/2020-04-21-16_56_10.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_58_22.log b/build-Calibration-Desktop-Debug/2020-04-21-16_58_22.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-16_59_02.log b/build-Calibration-Desktop-Debug/2020-04-21-16_59_02.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-17_00_49.log b/build-Calibration-Desktop-Debug/2020-04-21-17_00_49.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-17_03_09.log b/build-Calibration-Desktop-Debug/2020-04-21-17_03_09.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-17_04_47.log b/build-Calibration-Desktop-Debug/2020-04-21-17_04_47.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-17_05_34.log b/build-Calibration-Desktop-Debug/2020-04-21-17_05_34.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-17_06_56.log b/build-Calibration-Desktop-Debug/2020-04-21-17_06_56.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-21-17_09_27.log b/build-Calibration-Desktop-Debug/2020-04-21-17_09_27.log
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-11_51_26.log b/build-Calibration-Desktop-Debug/2020-04-28-16_09_19.log
similarity index 100%
rename from build-Calibration-Desktop-Debug/2020-04-07-11_51_26.log
rename to build-Calibration-Desktop-Debug/2020-04-28-16_09_19.log
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-12_26_28.log b/build-Calibration-Desktop-Debug/2020-04-28-16_10_49.log
similarity index 100%
rename from build-Calibration-Desktop-Debug/2020-04-07-12_26_28.log
rename to build-Calibration-Desktop-Debug/2020-04-28-16_10_49.log
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-12_31_31.log b/build-Calibration-Desktop-Debug/2020-04-28-16_13_14.log
similarity index 100%
rename from build-Calibration-Desktop-Debug/2020-04-07-12_31_31.log
rename to build-Calibration-Desktop-Debug/2020-04-28-16_13_14.log
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-12_32_21.log b/build-Calibration-Desktop-Debug/2020-04-28-17_37_14.log
similarity index 100%
rename from build-Calibration-Desktop-Debug/2020-04-07-12_32_21.log
rename to build-Calibration-Desktop-Debug/2020-04-28-17_37_14.log
diff --git a/build-Calibration-Desktop-Debug/2020-04-07-13_52_49.log b/build-Calibration-Desktop-Debug/2020-04-28-17_39_58.log
similarity index 100%
rename from build-Calibration-Desktop-Debug/2020-04-07-13_52_49.log
rename to build-Calibration-Desktop-Debug/2020-04-28-17_39_58.log
diff --git a/build-Calibration-Desktop-Debug/Calibration b/build-Calibration-Desktop-Debug/Calibration
index 26220f47cb1e03889c4466243c332c6a51868bf2..a4fafe057ad6dcd1ffef2533400e03f66c695f0f 100755
Binary files a/build-Calibration-Desktop-Debug/Calibration and b/build-Calibration-Desktop-Debug/Calibration differ
diff --git a/build-Calibration-Desktop-Debug/Makefile b/build-Calibration-Desktop-Debug/Makefile
index b44fc81ff20b817b2c91cfddd5dac3de97b0d01d..174a00c4df4399310f2bdd8da3296956b839b91e 100644
--- a/build-Calibration-Desktop-Debug/Makefile
+++ b/build-Calibration-Desktop-Debug/Makefile
@@ -113,7 +113,6 @@ DIST          = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
-		../Calibration/.qmake.stash \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
@@ -203,7 +202,6 @@ Makefile: ../Calibration/Calibration.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/l
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
-		.qmake.stash \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
@@ -282,7 +280,6 @@ Makefile: ../Calibration/Calibration.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/l
 /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
 /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:
 /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf:
-.qmake.stash:
 /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
 /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf:
 /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
@@ -364,7 +361,6 @@ moc_mainwindow.cpp: ../sandbox/sandbox.h \
 		../sandbox/beamer.h \
 		../sandbox/calibrate.h \
 		../sandbox/borderedit.h \
-		../sandbox/borderfinder.h \
 		../Calibration/reactivelabel.h \
 		../Calibration/mainwindow.h \
 		moc_predefs.h \
@@ -382,7 +378,8 @@ compiler_uic_make_all: ui_mainwindow.h
 compiler_uic_clean:
 	-$(DEL_FILE) ui_mainwindow.h
 ui_mainwindow.h: ../Calibration/mainwindow.ui \
-		/usr/lib/qt5/bin/uic
+		/usr/lib/qt5/bin/uic \
+		../Calibration/reactivelabel.h
 	/usr/lib/qt5/bin/uic ../Calibration/mainwindow.ui -o ui_mainwindow.h
 
 compiler_yacc_decl_make_all:
@@ -402,7 +399,6 @@ main.o: ../Calibration/main.cpp ../Calibration/mainwindow.h \
 		../sandbox/beamer.h \
 		../sandbox/calibrate.h \
 		../sandbox/borderedit.h \
-		../sandbox/borderfinder.h \
 		../Calibration/reactivelabel.h
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o ../Calibration/main.cpp
 
@@ -413,7 +409,6 @@ mainwindow.o: ../Calibration/mainwindow.cpp ../Calibration/mainwindow.h \
 		../sandbox/beamer.h \
 		../sandbox/calibrate.h \
 		../sandbox/borderedit.h \
-		../sandbox/borderfinder.h \
 		../Calibration/reactivelabel.h \
 		ui_mainwindow.h
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o ../Calibration/mainwindow.cpp
diff --git a/build-Calibration-Desktop-Debug/device b/build-Calibration-Desktop-Debug/device
index b8120bf67851c45898ceaef49b0c91f4aa555395..d1f2d150cbe022e463d39e98d639cec274e06cc8 100644
--- a/build-Calibration-Desktop-Debug/device
+++ b/build-Calibration-Desktop-Debug/device
@@ -1 +1 @@
-840412061564
\ No newline at end of file
+8404120615642598.6332600.265-0.205
\ No newline at end of file
diff --git a/build-Calibration-Desktop-Debug/main.o b/build-Calibration-Desktop-Debug/main.o
index c9c9beb19b2d440be548242b03c27931e0444fa8..9b1cfabb39aa6438dbaf96495ddc275f3aa25a00 100644
Binary files a/build-Calibration-Desktop-Debug/main.o and b/build-Calibration-Desktop-Debug/main.o differ
diff --git a/build-Calibration-Desktop-Debug/mainwindow.o b/build-Calibration-Desktop-Debug/mainwindow.o
index fcfa0f0d630a550a80a818ea74c80982b22eb678..ade5df0929bf2d64d55cdda42007697834114a82 100644
Binary files a/build-Calibration-Desktop-Debug/mainwindow.o and b/build-Calibration-Desktop-Debug/mainwindow.o differ
diff --git a/build-Calibration-Desktop-Debug/moc_mainwindow.cpp b/build-Calibration-Desktop-Debug/moc_mainwindow.cpp
index 5bc5ba9f7dcbfa66cbc289e23d8a78633e82a09f..bdd65a4cf3225c4d18fc258932621313dc64c4cc 100644
--- a/build-Calibration-Desktop-Debug/moc_mainwindow.cpp
+++ b/build-Calibration-Desktop-Debug/moc_mainwindow.cpp
@@ -21,8 +21,8 @@ QT_BEGIN_MOC_NAMESPACE
 QT_WARNING_PUSH
 QT_WARNING_DISABLE_DEPRECATED
 struct qt_meta_stringdata_MainWindow_t {
-    QByteArrayData data[11];
-    char stringdata0[173];
+    QByteArrayData data[10];
+    char stringdata0[156];
 };
 #define QT_MOC_LITERAL(idx, ofs, len) \
     Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
@@ -39,16 +39,14 @@ QT_MOC_LITERAL(4, 50, 16), // "QListWidgetItem*"
 QT_MOC_LITERAL(5, 67, 26), // "reloadListRealSenseDevices"
 QT_MOC_LITERAL(6, 94, 17), // "saveConfiguration"
 QT_MOC_LITERAL(7, 112, 9), // "configure"
-QT_MOC_LITERAL(8, 122, 16), // "selectEdgeBorder"
-QT_MOC_LITERAL(9, 139, 14), // "moveEdgeBorder"
-QT_MOC_LITERAL(10, 154, 18) // "deselectEdgeBorder"
+QT_MOC_LITERAL(8, 122, 14), // "moveEdgeBorder"
+QT_MOC_LITERAL(9, 137, 18) // "deselectEdgeBorder"
 
     },
     "MainWindow\0quitApplication\0\0"
     "selectRealSenseDevice\0QListWidgetItem*\0"
     "reloadListRealSenseDevices\0saveConfiguration\0"
-    "configure\0selectEdgeBorder\0moveEdgeBorder\0"
-    "deselectEdgeBorder"
+    "configure\0moveEdgeBorder\0deselectEdgeBorder"
 };
 #undef QT_MOC_LITERAL
 
@@ -58,7 +56,7 @@ static const uint qt_meta_data_MainWindow[] = {
        7,       // revision
        0,       // classname
        0,    0, // classinfo
-       8,   14, // methods
+       7,   14, // methods
        0,    0, // properties
        0,    0, // enums/sets
        0,    0, // constructors
@@ -66,14 +64,13 @@ static const uint qt_meta_data_MainWindow[] = {
        0,       // signalCount
 
  // slots: name, argc, parameters, tag, flags
-       1,    0,   54,    2, 0x08 /* Private */,
-       3,    1,   55,    2, 0x08 /* Private */,
-       5,    0,   58,    2, 0x08 /* Private */,
-       6,    0,   59,    2, 0x08 /* Private */,
-       7,    0,   60,    2, 0x08 /* Private */,
-       8,    0,   61,    2, 0x08 /* Private */,
-       9,    0,   62,    2, 0x08 /* Private */,
-      10,    0,   63,    2, 0x08 /* Private */,
+       1,    0,   49,    2, 0x08 /* Private */,
+       3,    1,   50,    2, 0x08 /* Private */,
+       5,    0,   53,    2, 0x08 /* Private */,
+       6,    0,   54,    2, 0x08 /* Private */,
+       7,    0,   55,    2, 0x08 /* Private */,
+       8,    0,   56,    2, 0x08 /* Private */,
+       9,    0,   57,    2, 0x08 /* Private */,
 
  // slots: parameters
     QMetaType::Void,
@@ -82,7 +79,6 @@ static const uint qt_meta_data_MainWindow[] = {
     QMetaType::Void,
     QMetaType::Void,
     QMetaType::Void,
-    QMetaType::Void,
     QMetaType::Void,
 
        0        // eod
@@ -99,9 +95,8 @@ void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id,
         case 2: _t->reloadListRealSenseDevices(); break;
         case 3: _t->saveConfiguration(); break;
         case 4: _t->configure(); break;
-        case 5: _t->selectEdgeBorder(); break;
-        case 6: _t->moveEdgeBorder(); break;
-        case 7: _t->deselectEdgeBorder(); break;
+        case 5: _t->moveEdgeBorder(); break;
+        case 6: _t->deselectEdgeBorder(); break;
         default: ;
         }
     }
@@ -132,13 +127,13 @@ int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
     if (_id < 0)
         return _id;
     if (_c == QMetaObject::InvokeMetaMethod) {
-        if (_id < 8)
+        if (_id < 7)
             qt_static_metacall(this, _c, _id, _a);
-        _id -= 8;
+        _id -= 7;
     } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
-        if (_id < 8)
+        if (_id < 7)
             *reinterpret_cast<int*>(_a[0]) = -1;
-        _id -= 8;
+        _id -= 7;
     }
     return _id;
 }
diff --git a/build-Calibration-Desktop-Debug/moc_mainwindow.o b/build-Calibration-Desktop-Debug/moc_mainwindow.o
index 706b7a4ab0e921d8eb286569e5a2b13a3e3c45a0..9d5cf281077b3fa1dd7650c40573158777baadaf 100644
Binary files a/build-Calibration-Desktop-Debug/moc_mainwindow.o and b/build-Calibration-Desktop-Debug/moc_mainwindow.o differ
diff --git a/build-Calibration-Desktop-Debug/ui_mainwindow.h b/build-Calibration-Desktop-Debug/ui_mainwindow.h
index 968784cc6975eb8f622c8735c0b53a0f8885b471..e49e929d4500fab7c2985e302a754273a7c28c39 100644
--- a/build-Calibration-Desktop-Debug/ui_mainwindow.h
+++ b/build-Calibration-Desktop-Debug/ui_mainwindow.h
@@ -25,7 +25,7 @@
 #include <QtWidgets/QStatusBar>
 #include <QtWidgets/QVBoxLayout>
 #include <QtWidgets/QWidget>
-#include <reactivelabel.h>
+#include "reactivelabel.h"
 
 QT_BEGIN_NAMESPACE
 
@@ -62,7 +62,7 @@ public:
         if (MainWindow->objectName().isEmpty())
             MainWindow->setObjectName(QStringLiteral("MainWindow"));
         MainWindow->setWindowModality(Qt::WindowModal);
-        MainWindow->resize(1920, 445);
+        MainWindow->resize(1920, 800);
         centralwidget = new QWidget(MainWindow);
         centralwidget->setObjectName(QStringLiteral("centralwidget"));
         verticalLayoutWidget = new QWidget(centralwidget);
@@ -182,7 +182,7 @@ public:
         MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", Q_NULLPTR));
         lblDevices->setText(QApplication::translate("MainWindow", "list of Intel RealSense Cameras", Q_NULLPTR));
         btnReload->setText(QApplication::translate("MainWindow", "Reload", Q_NULLPTR));
-        lblImage->setText(QString());
+        lblImage->setProperty("text", QVariant(QString()));
         lblConsole->setText(QApplication::translate("MainWindow", "Console", Q_NULLPTR));
         btnConfig->setText(QApplication::translate("MainWindow", "Configure", Q_NULLPTR));
         btnSave->setText(QApplication::translate("MainWindow", "Save Configuration", Q_NULLPTR));
diff --git a/build-sandbox-Desktop-Debug/Makefile b/build-sandbox-Desktop-Debug/Makefile
index ea286a10f0b09cdc19ed5b05d572339ce7c258be..7ba8be361b43c2ef12b15649fd82aa2c5e3864f1 100644
--- a/build-sandbox-Desktop-Debug/Makefile
+++ b/build-sandbox-Desktop-Debug/Makefile
@@ -51,14 +51,12 @@ SOURCES       = ../sandbox/beamer.cpp \
 		../sandbox/calibrate.cpp \
 		../sandbox/camera.cpp \
 		../sandbox/sandbox.cpp \
-		../sandbox/borderedit.cpp \
-		../sandbox/borderfinder.cpp 
+		../sandbox/borderedit.cpp 
 OBJECTS       = beamer.o \
 		calibrate.o \
 		camera.o \
 		sandbox.o \
-		borderedit.o \
-		borderfinder.o
+		borderedit.o
 DIST          = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
 		/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
@@ -137,13 +135,11 @@ DIST          = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
 		../sandbox/camera.h \
 		../sandbox/sandbox.h \
 		../sandbox/serializable.h \
-		../sandbox/borderedit.h \
-		../sandbox/borderfinder.h ../sandbox/beamer.cpp \
+		../sandbox/borderedit.h ../sandbox/beamer.cpp \
 		../sandbox/calibrate.cpp \
 		../sandbox/camera.cpp \
 		../sandbox/sandbox.cpp \
-		../sandbox/borderedit.cpp \
-		../sandbox/borderfinder.cpp
+		../sandbox/borderedit.cpp
 QMAKE_TARGET  = sandbox
 DESTDIR       = 
 TARGET        = libsandbox.a
@@ -329,8 +325,8 @@ distdir: FORCE
 	@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
 	$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
 	$(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
-	$(COPY_FILE) --parents ../sandbox/beamer.h ../sandbox/calibrate.h ../sandbox/camera.h ../sandbox/sandbox.h ../sandbox/serializable.h ../sandbox/borderedit.h ../sandbox/borderfinder.h $(DISTDIR)/
-	$(COPY_FILE) --parents ../sandbox/beamer.cpp ../sandbox/calibrate.cpp ../sandbox/camera.cpp ../sandbox/sandbox.cpp ../sandbox/borderedit.cpp ../sandbox/borderfinder.cpp $(DISTDIR)/
+	$(COPY_FILE) --parents ../sandbox/beamer.h ../sandbox/calibrate.h ../sandbox/camera.h ../sandbox/sandbox.h ../sandbox/serializable.h ../sandbox/borderedit.h $(DISTDIR)/
+	$(COPY_FILE) --parents ../sandbox/beamer.cpp ../sandbox/calibrate.cpp ../sandbox/camera.cpp ../sandbox/sandbox.cpp ../sandbox/borderedit.cpp $(DISTDIR)/
 
 
 clean: compiler_clean 
@@ -395,16 +391,12 @@ sandbox.o: ../sandbox/sandbox.cpp ../sandbox/sandbox.h \
 		../sandbox/camera.h \
 		../sandbox/beamer.h \
 		../sandbox/calibrate.h \
-		../sandbox/borderedit.h \
-		../sandbox/borderfinder.h
+		../sandbox/borderedit.h
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sandbox.o ../sandbox/sandbox.cpp
 
 borderedit.o: ../sandbox/borderedit.cpp ../sandbox/borderedit.h
 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o borderedit.o ../sandbox/borderedit.cpp
 
-borderfinder.o: ../sandbox/borderfinder.cpp ../sandbox/borderfinder.h
-	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o borderfinder.o ../sandbox/borderfinder.cpp
-
 ####### Install
 
 install_target: first FORCE
diff --git a/build-sandbox-Desktop-Debug/beamer.o b/build-sandbox-Desktop-Debug/beamer.o
index 94fd78a994f37d51ef224d1851db7c561f4bda1c..b8eab859e95e6d8e1740bcde2ae208e420f339ca 100644
Binary files a/build-sandbox-Desktop-Debug/beamer.o and b/build-sandbox-Desktop-Debug/beamer.o differ
diff --git a/build-sandbox-Desktop-Debug/borderedit.o b/build-sandbox-Desktop-Debug/borderedit.o
index 43c4ff8ad936fed272a813b3fcdf35aeb043d68a..ce174f6b631b14ad37e4e4b64edc10f93b40a9cb 100644
Binary files a/build-sandbox-Desktop-Debug/borderedit.o and b/build-sandbox-Desktop-Debug/borderedit.o differ
diff --git a/build-sandbox-Desktop-Debug/borderfinder.o b/build-sandbox-Desktop-Debug/borderfinder.o
deleted file mode 100644
index 60183584e89e3ab1631648a01b33c2d3212cc213..0000000000000000000000000000000000000000
Binary files a/build-sandbox-Desktop-Debug/borderfinder.o and /dev/null differ
diff --git a/build-sandbox-Desktop-Debug/calibrate.o b/build-sandbox-Desktop-Debug/calibrate.o
index 53249fa3d94d78800df8aed65bd4ad65d2c2d713..8e683ae507b0caa4cea9e4902cfb48f3c9b568fd 100644
Binary files a/build-sandbox-Desktop-Debug/calibrate.o and b/build-sandbox-Desktop-Debug/calibrate.o differ
diff --git a/build-sandbox-Desktop-Debug/camera.o b/build-sandbox-Desktop-Debug/camera.o
index 4e1816186f47aae4ffe4dcd6f102018dc7dd58bf..53f583f1e29d4ffc8c75d5f04403adc5f4983a2d 100644
Binary files a/build-sandbox-Desktop-Debug/camera.o and b/build-sandbox-Desktop-Debug/camera.o differ
diff --git a/build-sandbox-Desktop-Debug/libsandbox.a b/build-sandbox-Desktop-Debug/libsandbox.a
index 531b3d3ef45842ae3d70ae21787d7e336557da67..459fdda59d720e12d6807bccb8db03b124961b7c 100644
Binary files a/build-sandbox-Desktop-Debug/libsandbox.a and b/build-sandbox-Desktop-Debug/libsandbox.a differ
diff --git a/build-sandbox-Desktop-Debug/sandbox.o b/build-sandbox-Desktop-Debug/sandbox.o
index d14490bb1d7c9cc12d38889297c665320af9e583..e72752be32480b5dab14b36d73d42d1d472f38b1 100644
Binary files a/build-sandbox-Desktop-Debug/sandbox.o and b/build-sandbox-Desktop-Debug/sandbox.o differ
diff --git a/sandbox/beamer.cpp b/sandbox/beamer.cpp
index 72d35aee1fefa1a03a1f4569ff9bf994ab41fc24..49468b5638e512601cbb052a835dcc38423ac1c8 100644
--- a/sandbox/beamer.cpp
+++ b/sandbox/beamer.cpp
@@ -67,6 +67,13 @@ int LineLineIntersect(
 Beamer::Beamer(){
     //position par défaut
     beamerPosition = Point3f(0.0f, 0.265f, -0.205f);
+    points.push_back(Point(500, 500));
+    points.push_back(Point(1000, 300));
+    points.push_back(Point(300, 800));
+
+}
+
+Beamer::~Beamer(){
 
 }
 
@@ -94,67 +101,44 @@ vector<int> Beamer::findCercleZ(Mat &rgb)
     return result;
 }
 
-void Beamer::findBeamer(Camera camera)
-{
-    char wname[] = "FindBeamer";
-    namedWindow(wname, CV_WINDOW_NORMAL);
-    setWindowProperty(wname, CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
-    Mat depth;
+tuple<Mat, vector<int>> Beamer::findPoint(Camera camera, int i) {
     Mat rgb;
-    Mat frameImage(Size(1400, 1050), CV_8UC3, Scalar(0, 0, 0));
-    vector<Point> points;
-    points.push_back(Point(500, 500));
-    points.push_back(Point(1000, 300));
-    points.push_back(Point(300, 800));
-    unsigned int nbPoint = 3; //number of point to calculate 1 vector
+
+
+    Point p = points[i];
+    camera.captureFramesAlign();
+    rgb = camera.getRGBFrameAlign();
+    Scalar color;
+    vector<int> crc = findCercleZ(rgb);
+    if (!crc.empty())
+        color = Scalar(0, 255, 0);
+    else
+        color = Scalar(0, 0, 255);
+
+    line(rgb, Point(p.x, 0), Point(p.x, rgb.rows - 1), color, 4);
+    line(rgb, Point(0, p.y), Point(rgb.cols - 1, p.y), color, 4);
+
+    return make_tuple(rgb, crc);
+}
+
+void Beamer::capturePoint(Camera camera, vector<int> crc) {
+    Mat depth;
+    camera.captureFramesAlign();
+    depth = camera.getDepthFrameAlign();
+    float coord[2] = {(float)crc[0], (float)crc[1]};
+    float z = static_cast<float>(depth.at<uint16_t>(crc[1], crc[0]));
+    Point3f p = camera.deprojectPixelToPoint(coord, z / 1000.0);
+    capturedPoints.push_back(p);
+}
+
+void Beamer::findBeamerPosition() {
     vector<Point3d> points1;  //vectors calculate for each point
     vector<Point3d> points2;  //1 point for each vector (to calculate constante d)
     double fact = -20.0;
-
-    for (int i = 0; i < (int)points.size(); i++)
-    {
-        vector<Point3f> capturedPoints;
-        Point p = points[i];
-        while (1)
-        {
-            camera.captureFramesAlign();
-            depth = camera.getDepthFrameAlign();
-            rgb = camera.getRGBFrameAlign();
-            Scalar color;
-            vector<int> crc = findCercleZ(rgb);
-            if (!crc.empty())
-                color = Scalar(0, 255, 0);
-            else
-                color = Scalar(0, 0, 255);
-
-            line(frameImage, Point(p.x, 0), Point(p.x, frameImage.rows - 1), color, 4);
-            line(frameImage, Point(0, p.y), Point(frameImage.cols - 1, p.y), color, 4);
-            putText(frameImage, to_string(capturedPoints.size() + 1) + "/" + to_string(nbPoint), Point(400, 400), FONT_HERSHEY_SIMPLEX, 1, Scalar(255, 255, 255));
-            imshow(wname, frameImage);
-            char keyCode = waitKey(500);
-            if (keyCode == ESCAPE_CHAR)
-                exit(0);
-            else if (keyCode == ' ' && !crc.empty())
-            {
-                float coord[2] = {(float)crc[0], (float)crc[1]};
-                float z = static_cast<float>(depth.at<uint16_t>(crc[1], crc[0]));
-                Point3f p = camera.deprojectPixelToPoint(coord, z / 1000.0);
-                capturedPoints.push_back(p);
-            }
-
-            if (capturedPoints.size() == nbPoint)
-            {
-                Vec3f dir(capturedPoints[0].x - capturedPoints[1].x, capturedPoints[0].y - capturedPoints[1].y, capturedPoints[0].z - capturedPoints[1].z);
-                Vec6f line;
-                fitLine(capturedPoints, line, CV_DIST_L2, 0, 0.01, 0.01);
-                points1.push_back(Point3d(line[3] * fact, line[4] * fact, line[5] * fact));
-                points2.push_back(Point3d(line[0], line[1], line[2]));
-                frameImage.setTo(Scalar(0, 0, 0));
-                break;
-            }
-            frameImage.setTo(Scalar(0, 0, 0));
-        }
-    }
+    Vec6f line;
+    fitLine(capturedPoints, line, CV_DIST_L2, 0, 0.01, 0.01);
+    points1.push_back(Point3d(line[3] * fact, line[4] * fact, line[5] * fact));
+    points2.push_back(Point3d(line[0], line[1], line[2]));
 
     Point3d pa, pb;
     double mua;
@@ -176,23 +160,8 @@ void Beamer::findBeamer(Camera camera)
         beamerPoint += beamerPoints[i];
     }
     beamerPoint /= 6.0;
-    cout << "Beamer position: " << beamerPoint.x << " " << beamerPoint.y << " " << beamerPoint.z << "\n";
     //set beamer position
     beamerPosition.x = (float)beamerPoint.x;
     beamerPosition.y = (float)beamerPoint.y;
     beamerPosition.z = (float)beamerPoint.z;
-
-    /*
-
-        TODO : save beamerPosition in config_file
-
-    */
-    cout << "Saving beamer position in file..." << endl;
-    ofstream myfile;
-    myfile.open(BEAMER_POSITION_FILE);
-    myfile << beamerPosition.x << " " << beamerPosition.y << " " << beamerPosition.z << endl;
-    myfile.close();
-    cout << "Done!" << endl;
-
-    destroyAllWindows();
 }
diff --git a/sandbox/beamer.h b/sandbox/beamer.h
index df21b8ed360763c2850cf85568d313c594ca04f3..adabf109992fc1068fc02a8fc836efbf95fc4d87 100644
--- a/sandbox/beamer.h
+++ b/sandbox/beamer.h
@@ -9,20 +9,29 @@ using namespace std;
 
 class Beamer
 {
-
-    const char *BEAMER_POSITION_FILE = "./backend/config/beamer.dat";
+private:
     float solveD(Vec3f v, Point3f p);
     Point3f intersection(Vec3f v1, Point3f p1, Vec3f v2, Point3f p2, Vec3f v3, Point3f p3, bool &isFound);
     vector<int> findCercleZ(Mat &rgb);
     Point3f beamerPosition;
+    vector<Point> points;
+    vector<Point3f> capturedPoints;
+
 public:
     Beamer();
+    ~Beamer();
     static const int width = 1400;
     static const int height = 1050;
     Point3f getPosition()
     {
         return beamerPosition;
-    };
+    }
+    void setPosition(Point3f position) {
+        beamerPosition = position;
+    }
     void findBeamer(Camera camera);
+    tuple<Mat, vector<int>> findPoint(Camera camera, int i);
+    void capturePoint(Camera camera, vector<int> crc);
+    void findBeamerPosition();
 };
 #endif
diff --git a/sandbox/borderedit.cpp b/sandbox/borderedit.cpp
index c4f5363309a87387e16888a47000ea5b62c5abb6..80244685f6158bb03bbb6b43667e8bf9491e0c2c 100644
--- a/sandbox/borderedit.cpp
+++ b/sandbox/borderedit.cpp
@@ -1,17 +1,33 @@
 #include <algorithm>
 #include "borderedit.h"
 
+/*!
+ * \brief BorderEdit::frameImage
+ * The original frame without border
+ */
 Mat BorderEdit::frameImage;
 
-Mat BorderEdit::drawSquare(Point *p, int n)
+/*!
+ * \brief BorderEdit::drawBorder
+ * \param p first point of the border
+ * \param n the number of points of the border
+ * \return the colored frame with the border
+ */
+Mat BorderEdit::drawBorder(Point *p, int n)
 {
     Mat imageCopy = frameImage.clone();
     polylines(imageCopy, &p, &n, 1, true, Scalar(0, 255, 0), 1, LINE_AA);
-    //imshow(wndname, imageCopy);
 
     return imageCopy;
 }
 
+/*!
+ * \brief BorderEdit::findPoints
+ * \param x position of the mouse
+ * \param y position of the mouse
+ * \param posSandbox list of points of the border
+ * \return the index of the selected border
+ */
 int BorderEdit::findPoints(int x, int y, vector<Point> *posSandbox)
 {
     for (int i = 0; i < (int)posSandbox->size(); i++)
@@ -23,15 +39,31 @@ int BorderEdit::findPoints(int x, int y, vector<Point> *posSandbox)
     return -1; //not found
 }
 
+/*!
+ * \brief BorderEdit::edit
+ * \param selectedPoint of the border
+ * \param x position of the mouse
+ * \param y position of the mouse
+ * \param posSandbox list of points of the border
+ * \return the colored frame with the border
+ * Set the position of the mouse to the selected edge of the border
+ */
 Mat BorderEdit::edit(int selectedPoint, int x, int y, vector<Point> *posSandbox)
 {
     posSandbox->at(selectedPoint).x = x;
     posSandbox->at(selectedPoint).y = y;
-    return BorderEdit::drawSquare(&posSandbox->at(0), (int)posSandbox->size());
+    return BorderEdit::drawBorder(&posSandbox->at(0), (int)posSandbox->size());
 }
 
+/*!
+ * \brief BorderEdit::initBorder
+ * \param frame Original colored frame
+ * \param posSandbox list of points of the border
+ * \return the colored frame with the border
+ * Store the original frame and draw the border
+ */
 Mat BorderEdit::initBorder(Mat frame, vector<Point> *posSandbox)
 {
     frame.copyTo(frameImage);
-    return BorderEdit::drawSquare(&posSandbox->at(0), (int)posSandbox->size());
+    return BorderEdit::drawBorder(&posSandbox->at(0), (int)posSandbox->size());
 }
diff --git a/sandbox/borderedit.h b/sandbox/borderedit.h
index a90a409790f8f0147a15dbd45434b1d83258f8d2..1d2120e08f343f74b2dd9ceef00f1f93236a1b30 100644
--- a/sandbox/borderedit.h
+++ b/sandbox/borderedit.h
@@ -7,14 +7,18 @@
 using namespace cv;
 using namespace std;
 
+/*!
+ * \brief The BorderEdit class
+ * Use the colored frame of the Intel RealSense
+ * Apply a border inside and move to correspond
+ * of the projected image of the beamer
+ */
 class BorderEdit
 {
 private:
     static const int margeClick = 10;
-    static constexpr char *wndname = (char *)"Sandbox Border Finder";
     static Mat frameImage;
-    // OPENCV - MANUEL RECT CHANGE
-    static Mat drawSquare(cv::Point *p, int n);
+    static Mat drawBorder(cv::Point *p, int n);
 
 public:
     static Mat initBorder(Mat frame, vector<Point> *posSandbox);
diff --git a/sandbox/borderfinder.cpp b/sandbox/borderfinder.cpp
deleted file mode 100644
index 3584032815e13fc4a7daed448086d8bf4aca048d..0000000000000000000000000000000000000000
--- a/sandbox/borderfinder.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#include <algorithm>
-#include "borderfinder.h"
-
-double BorderFinder::angle(Point pt1, Point pt2, Point pt0)
-{
-    double dx1 = pt1.x - pt0.x;
-    double dy1 = pt1.y - pt0.y;
-    double dx2 = pt2.x - pt0.x;
-    double dy2 = pt2.y - pt0.y;
-    return (dx1 * dx2 + dy1 * dy2) / sqrt((dx1 * dx1 + dy1 * dy1) * (dx2 * dx2 + dy2 * dy2) + 1e-10);
-}
-
-// returns sequence of squares detected on the image.
-bool BorderFinder::find(Rect &rect)
-{
-    vector<vector<Point>> rectDetect;
-
-    Mat pyr, timg, gray0(frameImage.size(), CV_8U);
-
-    // down-scale and upscale the image to filter out the noise
-    pyrDown(frameImage, pyr, Size(frameImage.cols / 2, frameImage.rows / 2));
-    pyrUp(pyr, timg, frameImage.size());
-    vector<vector<Point>> contours;
-    int c = 1;
-    int ch[] = {c, 0};
-    mixChannels(&timg, 1, &gray0, 1, ch, 1);
-    gray0 = gray0 > 10;
-    waitKey(0);
-    findContours(gray0, contours, RETR_LIST, CHAIN_APPROX_SIMPLE);
-    vector<Point> approx;
-    // test each contour
-    cout << "nb rect: " <<  contours.size() << endl;
-    for (size_t i = 0; i < contours.size(); i++)
-    {
-        // approximate contour with accuracy proportional
-        // to the contour perimeter
-        approxPolyDP(contours[i], approx, arcLength(contours[i], true) * 0.02, true);
-        if (approx.size() == 4 &&
-            fabs(contourArea(approx)) > 1000 &&
-            isContourConvex(approx))
-        {
-            double maxCosine = 0;
-
-            for (int j = 2; j < 5; j++)
-            {
-                // find the maximum cosine of the angle between joint edges
-                double cosine = fabs(angle(approx[j % 4], approx[j - 2], approx[j - 1]));
-                maxCosine = MAX(maxCosine, cosine);
-            }
-
-            // if cosines of all angles are small
-            // (all angles are ~90 degree) then write quandrange
-            // vertices to resultant sequence
-          //  if (maxCosine < 0.3)
-           // {
-                rect = rotateRect(boundingRect(approx), 90, 90);
-                const Point *p = &approx[0];
-                int n = (int)approx.size();
-                polylines(frameImage, &p, &n, 1, true, Scalar(0, 0, 255), 3, LINE_AA);
-                //return true;
-            //}
-        }
-    }
-    //imshow("ff", frameImage);
-    //waitKey(0);
-    return true;
-}
-
-Rect BorderFinder::rotateRect(Rect rect, int heightPercentage, int widthPercetange)
-{
-    int rwidth = rect.width;
-    int rheight = rect.height;
-
-    rect.width = round((rect.width * widthPercetange) / 100.0f);
-    rect.height = round((rect.height * heightPercentage) / 100.0f);
-    rect.x += (rwidth - rect.width) / 2;
-    rect.y += (rheight - rect.height) / 2;
-
-    return rect;
-}
-
-float BorderFinder::calculDistance(float point1[], float point2[])
-{
-    return sqrt(pow(point1[0] - point2[0], 2) +
-                pow(point1[1] - point2[1], 2) +
-                pow(point1[2] - point2[2], 2));
-}
-
-BorderFinder::BorderFinder(Mat frame)
-{
-    frame.copyTo(frameImage);
-}
diff --git a/sandbox/borderfinder.h b/sandbox/borderfinder.h
deleted file mode 100644
index e43b39ffee365065ac8c41a21dbb7f6dba9ac9ba..0000000000000000000000000000000000000000
--- a/sandbox/borderfinder.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef BORDERFINDER_H
-#define BORDERFINDER_H
-#include <opencv2/opencv.hpp>
-
-using namespace cv;
-using namespace std;
-
-class BorderFinder
-{
-private:
-    // helper function:
-    // finds a cosine of angle between vectors
-    // from pt0->pt1 and from pt0->pt2
-    double angle(Point pt1, Point pt2, Point pt0);
-    Mat frameImage;
-    Rect rotateRect(Rect rect, int heightPercentage, int widthPercetange);
-
-public:
-    float calculDistance(float point1[], float point2[]);
-    BorderFinder(Mat frame);
-    bool find(Rect &rect);
-};
-#endif
diff --git a/sandbox/calibrate.h b/sandbox/calibrate.h
index 2c908ce7b2c60e570a9f9d50db86fe2094bb1706..2581b5b8b339afbbdd52907d788c8bf40eff7de0 100644
--- a/sandbox/calibrate.h
+++ b/sandbox/calibrate.h
@@ -9,7 +9,6 @@ using namespace cv;
 class Calibrate
 {
 private:
-    const char *wndname = (char *)"Sandbox";
     Mat matRotation;
     float distancePlan;
 
@@ -19,10 +18,18 @@ public:
     Point2i rotatePixel(Point2i pixel);
     void transformationFrame(Mat &src, Mat &dst, Camera camera, Point3f beamer);
     void transformationFrame(Mat &depth, Mat &src, Mat &dst, Camera camera, Point3f beamer);
+    Mat getMatrixRotation()
+    {
+        return matRotation;
+    }
     void setMatrixRotation(Mat matrix)
     {
         matRotation = matrix.clone();
     }
+    float getDistancePlan()
+    {
+        return distancePlan;
+    }
     void setDistancePlan(float distance)
     {
         distancePlan = distance;
diff --git a/sandbox/camera.cpp b/sandbox/camera.cpp
index fb8fd539c1b9ac7e271bc160b1d095adc897e0c9..a4e241eecdf67b99a3b2eadf35a245d766592df2 100644
--- a/sandbox/camera.cpp
+++ b/sandbox/camera.cpp
@@ -2,6 +2,10 @@
 
 Camera::Camera() {}
 
+Camera::~Camera() {
+
+}
+
 // Capture 30 frames to give autoexposure, etc. a chance to settle
 void Camera::warmingUp()
 {
diff --git a/sandbox/camera.h b/sandbox/camera.h
index 577d3b1522ce02492ea076053cbef63fb6783ce2..9c871f9178bedf94ae0fcd2fcb370c5b0295d7b2 100644
--- a/sandbox/camera.h
+++ b/sandbox/camera.h
@@ -33,6 +33,7 @@ private:
 
 public:
     Camera();
+    ~Camera();
     void start();
     void stop();
     // Capture 30 frames to give autoexposure, etc. a chance to settle
diff --git a/sandbox/sandbox.cpp b/sandbox/sandbox.cpp
index 37f273701fcca7bd77c9afbc21252a9a548b2850..b4372cd591469567c6ec995184b60afb28c6e779 100644
--- a/sandbox/sandbox.cpp
+++ b/sandbox/sandbox.cpp
@@ -12,6 +12,11 @@ Sandbox::Sandbox()
     }
 }
 
+Sandbox::~Sandbox()
+{
+    delete realSenseDeviceSerialNumber;
+}
+
 /*!
  * \brief Sandbox::getListRealSenseDevices
  * \return list of Intel RealSense devices
@@ -58,6 +63,15 @@ void Sandbox::serialize(ostream& stream)
 {
     // Serialize ID for the Intel RealSense Camera
     stream << realSenseDevice.get_info(RS2_CAMERA_INFO_SERIAL_NUMBER);
+
+    // Serialize calibrate
+    stream << calibrate.getDistancePlan();
+    Mat matRotation = calibrate.getMatrixRotation();
+    stream << matRotation.cols << matRotation.rows << matRotation.type();
+
+    // Serialize beamer
+    stream << beamer.getPosition().x << beamer.getPosition().y << beamer.getPosition().z;
+
 }
 
 /*!
@@ -79,9 +93,31 @@ string Sandbox::deserialize(istream& stream)
         }
     }
 
+    // Serialize calibrate
+    int cols, rows, type;
+    stream >> type >> rows >> cols;
+    Mat matRotation(cols, rows, type);
+    calibrate.setMatrixRotation(matRotation);
+
+    float distancePlan;
+    stream >> distancePlan;
+    calibrate.setDistancePlan(distancePlan);
+
+    // Serialize beamer
+    int x, y, z;
+    stream >> z >> y >> x;
+    Point3f beamPosition(x, y, z);
+    beamer.setPosition(beamPosition);
+
     return "Problem to load";
 }
 
+/*!
+ * \brief Sandbox::generateBorder
+ * \return the colored frame with a rectangle to place the border
+ * Set a rectangle used to define the border of the image of the beamer
+ * inside the colored frame of the Intel RealSense Camera to generate the deformation matrix for the beamer
+ */
 Mat Sandbox::generateBorder() {
     // Start the Intel RealSense Camera
     camera.startAlign(); // 1 seconde of warming up
@@ -96,42 +132,79 @@ Mat Sandbox::generateBorder() {
     center.y = s.height / 2;
     float distancePlan = static_cast<float>(mean(frameData(Rect(center, Size(10, 10))))[0]); // get sandbox distance from center of camera
     calibrate.setDistancePlan(distancePlan);
-    //destroyAllWindows();
-
 
+    // original rectangle to draw to define the deformation matrix
     float y = coloredFrame.size().height;
     float x = coloredFrame.size().width;
-    rectPoints.push_back(Point(1.0/4*x, 1.0/4*y));
-    rectPoints.push_back(Point(1.0/4*x, 3.0/4*y));
-    rectPoints.push_back(Point(3.0/4*x, 3.0/4*y));
-    rectPoints.push_back(Point(3.0/4*x, 1.0/4*y));
+    border.push_back(Point(1.0/4*x, 1.0/4*y));
+    border.push_back(Point(1.0/4*x, 3.0/4*y));
+    border.push_back(Point(3.0/4*x, 3.0/4*y));
+    border.push_back(Point(3.0/4*x, 1.0/4*y));
 
-    coloredFrame = BorderEdit::initBorder(coloredFrame, &rectPoints); // edit projected frame
+    coloredFrame = BorderEdit::initBorder(coloredFrame, &border); // edit projected frame
 
     return coloredFrame;
 }
 
+/*!
+ * \brief Sandbox::toDegrees
+ * \param radians
+ * \return degrees
+ */
+double Sandbox::toDegrees(double radians)
+{
+    return radians * (180.0 / M_PI);
+}
+
+/*!
+ * \brief Sandbox::findEdgeBorder
+ * \param x position of the mouse
+ * \param y position of the mouse
+ * \return index of edge of border to move
+ */
+int Sandbox::findEdgeBorder(int x, int y) {
+    return BorderEdit::findPoints(x, y, &border);
+}
+
+/*!
+ * \brief Sandbox::editEdgeBorder
+ * \param selectedPoint selected edge of border
+ * \param x position of the mouse
+ * \param y position of the mouse
+ * \return the frame updated with the new border
+ */
+Mat Sandbox::editEdgeBorder(int selectedPoint, int x, int y) {
+    return BorderEdit::edit(selectedPoint, x, y, &border);
+}
+
+/*!
+ * \brief Sandbox::applyBorder
+ * Generate the deformation matrix with the border
+ */
 void Sandbox::applyBorder() {
-    // adjust model matrixe to forme a rectangle in sandbox
-    int widthTop = rectPoints[3].x - rectPoints[0].x;
-    double angle1 = atan((double)(rectPoints[3].y - rectPoints[0].y) / widthTop);
+    // adjust model matrix to forme a rectangle in sandbox
+    int widthTop = border[3].x - border[0].x;
+    double angle1 = atan((double)(border[3].y - border[0].y) / widthTop);
     Mat matRotation = getRotationMatrix2D(center, toDegrees(angle1), 1);
     calibrate.setMatrixRotation(matRotation);
 
     Size rectSize = Size(widthTop, cvRound(widthTop / 1.33333) + 5);
-    Point p = calibrate.rotatePixel(rectPoints[0]);
+    Point p = calibrate.rotatePixel(border[0]);
     rectSandbox = Rect(p, rectSize);
 }
 
-double Sandbox::toDegrees(double radians)
-{
-    return radians * (180.0 / M_PI);
+tuple<Mat, vector<int>> Sandbox::detectPointToDetectBeamer(int indexPoint) {
+    return beamer.findPoint(camera, indexPoint);
 }
 
-int Sandbox::findEdgeBorder(int x, int y) {
-    return BorderEdit::findPoints(x, y, &rectPoints);
+void Sandbox::capturePointToDetectBeamer(vector<int> crc) {
+    beamer.capturePoint(camera, crc);
 }
 
-Mat Sandbox::editEdgeBorder(int selectedPoint, int x, int y) {
-    return BorderEdit::edit(selectedPoint, x, y, &rectPoints);
+void Sandbox::findBeamerPosition() {
+    beamer.findBeamerPosition();
+}
+
+void Sandbox::stopCamera() {
+    camera.stop();
 }
diff --git a/sandbox/sandbox.h b/sandbox/sandbox.h
index 901021bf4931b10085b8e8fd863f62a8936ca7d1..844d093799fde3b764aae7d787ffefd9e427a3f1 100644
--- a/sandbox/sandbox.h
+++ b/sandbox/sandbox.h
@@ -13,7 +13,6 @@
 #include "beamer.h"
 #include "calibrate.h"
 #include "borderedit.h"
-#include "borderfinder.h"
 #include <QPixmap>
 #include <QLabel>
 #include <QImage>
@@ -23,7 +22,6 @@ using namespace std;
 
 class Sandbox : Serializable
 {
-public:
 private:
     context ctx;
     device_list listRealSenseDevices;
@@ -32,11 +30,13 @@ private:
     Camera camera;
     Calibrate calibrate;
     Rect rectSandbox;
-    vector<Point> rectPoints;
+    vector<Point> border;
     Point center;
+    Beamer beamer;
 
 public:
     Sandbox();
+    ~Sandbox();
     device_list getListRealSenseDevices();
     void setRealSenseDevices(device device);
     device getRealSenseDevice();
@@ -50,6 +50,10 @@ public:
     Mat generateBorder();
     int findEdgeBorder(int x, int y);
     Mat editEdgeBorder(int selectedPoint, int x, int y);
+    tuple<Mat, vector<int>> detectPointToDetectBeamer(int indexPoint);
+    void capturePointToDetectBeamer(vector<int> crc);
+    void findBeamerPosition();
+    void stopCamera();
 };
 
 #endif // SANDBOX_H
diff --git a/sandbox/sandbox.pro b/sandbox/sandbox.pro
index f6002099499060b0cc098a2f7c827108ba65fde8..2e4f76fdd6499365589d9853d2ea8053b01e768a 100644
--- a/sandbox/sandbox.pro
+++ b/sandbox/sandbox.pro
@@ -21,8 +21,7 @@ SOURCES += \
     calibrate.cpp \
     camera.cpp \
     sandbox.cpp \
-    borderedit.cpp \
-    borderfinder.cpp
+    borderedit.cpp
 
 HEADERS += \
     beamer.h \
@@ -30,8 +29,7 @@ HEADERS += \
     camera.h \
     sandbox.h \
     serializable.h \
-    borderedit.h \
-    borderfinder.h
+    borderedit.h
 
 # Default rules for deployment.
 unix {