diff --git a/Calibration/Calibration.pro b/Calibration/Calibration.pro
index bc64bd5bb81319418684d5343306ead350904dbf..4434e8bfef1e9227ab7caf099bc61dc9a76b2af5 100644
--- a/Calibration/Calibration.pro
+++ b/Calibration/Calibration.pro
@@ -20,7 +20,7 @@ SOURCES += \
     mainwindow.cpp
 
 HEADERS += \
-    ../libsandbox/libsandbox.h \
+    ../sandbox/sandbox.h \
     mainwindow.h
 
 FORMS += \
@@ -31,6 +31,6 @@ qnx: target.path = /tmp/$${TARGET}/bin
 else: unix:!android: target.path = /opt/$${TARGET}/bin
 !isEmpty(target.path): INSTALLS += target
 
-INCLUDEPATH += ../libsandbox/
-LIBS += ../build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/liblibsandbox.a \
+INCLUDEPATH += ../sandbox/
+LIBS += ../build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/libsandbox.a \
         -L/usr/lib/x86_64-linux-gnu -lrealsense2 \
diff --git a/Calibration/mainwindow.cpp b/Calibration/mainwindow.cpp
index 7ec526fd140a0db07a6f7df066c36f8e26b7fb9d..265d8a094a5246c16cd5083bace6278459fe2cb1 100644
--- a/Calibration/mainwindow.cpp
+++ b/Calibration/mainwindow.cpp
@@ -13,12 +13,14 @@ MainWindow::MainWindow(QWidget *parent)
     parent->connect(ui->btnQuit, SIGNAL (released()),this, SLOT(quitApplication()));
     parent->connect(ui->listDevices, SIGNAL(itemClicked(QListWidgetItem*)),
                 this, SLOT(selectRealSenseCamera(QListWidgetItem*)));
+    parent->connect(ui->btnReload, SIGNAL (released()),this, SLOT(reloadListRealSenseDevices()));
+    parent->connect(ui->btnConfig, SIGNAL (released()),this, SLOT(saveConfiguration()));
 
     // init cursor for console
     pteConsole_cursor = QTextCursor(ui->pteConsole->document());
     pteConsole_cursor.movePosition(QTextCursor::End);
 
-    sandbox = Libsandbox();
+    sandbox = Sandbox();
 
     searchRealSenseDevices();
 }
@@ -41,9 +43,9 @@ void MainWindow::quitApplication()
  * @brief MainWindow::listRealSenseDevices
  * List Intel RealSense devices in the widget
  */
-void MainWindow::showListRealSenseCameras() {
-    for (uint32_t i = 0;i < listRealSenseCameras.size(); ++i) {
-        rs2::device device = listRealSenseCameras[i];
+void MainWindow::showListRealSenseDevices() {
+    for (uint32_t i = 0;i < listRealSenseDevices.size(); ++i) {
+        rs2::device device = listRealSenseDevices[i];
 
         QString textDevice = device.get_info(RS2_CAMERA_INFO_NAME);
         textDevice += "-";
@@ -60,8 +62,8 @@ void MainWindow::showListRealSenseCameras() {
  * @brief MainWindow::selectRealSenseCamera
  * Select the RealSense Camera
  */
-void MainWindow::selectRealSenseCamera(QListWidgetItem* item) {
-    sandbox.setRealSenseDevices(listRealSenseCameras[ui->listDevices->row(item)]);
+void MainWindow::selectRealSenseDevice(QListWidgetItem* item) {
+    sandbox.setRealSenseDevices(listRealSenseDevices[ui->listDevices->row(item)]);
 }
 
 /**
@@ -69,13 +71,21 @@ void MainWindow::selectRealSenseCamera(QListWidgetItem* item) {
  * Search list or RealSense devices connected
  */
 void MainWindow::searchRealSenseDevices() {
-    listRealSenseCameras = sandbox.getListRealSenseDevices(); // Get a snapshot of currently connected devices
-    if (listRealSenseCameras.size() == 0){
+    listRealSenseDevices = sandbox.getListRealSenseDevices(); // Get a snapshot of currently connected devices
+    if (listRealSenseDevices.size() == 0){
         pteConsole_cursor.insertText("No device detected. Is it plugged in?");
     } else {
       pteConsole_cursor.insertText("Device detected\n");
-      showListRealSenseCameras();
+      showListRealSenseDevices();
     }
 }
 
+void MainWindow::reloadListRealSenseDevices() {
+    sandbox.loadListRealSenseDevices();
+    ui->listDevices->clear();
+    searchRealSenseDevices();
+}
 
+void MainWindow::saveConfiguration() {
+    sandbox.saveConfiguration();
+}
diff --git a/Calibration/mainwindow.h b/Calibration/mainwindow.h
index 3a604fbb225add7c34796bb2fa664a0f9f0f966a..27d61da471d98c59f56467ae536bb07f96d2186e 100644
--- a/Calibration/mainwindow.h
+++ b/Calibration/mainwindow.h
@@ -7,7 +7,7 @@
 #include <QDebug>
 #include <QTextCursor>
 #include <QListWidgetItem>
-#include "libsandbox.h"
+#include "sandbox.h"
 
 using namespace std;
 
@@ -28,15 +28,17 @@ private:
     Ui::MainWindow *ui;
     QTextCursor pteConsole_cursor;
     rs2::context ctx;
-    rs2::device_list listRealSenseCameras;
-    Libsandbox sandbox;
+    rs2::device_list listRealSenseDevices;
+    Sandbox sandbox;
 
     // Methods
-    void showListRealSenseCameras();
+    void showListRealSenseDevices();
     void searchRealSenseDevices();
+    void saveConfiguration();
 
 private slots:
     void quitApplication();
-    void selectRealSenseCamera(QListWidgetItem*);
+    void selectRealSenseDevice(QListWidgetItem*);
+    void reloadListRealSenseDevices();
 };
 #endif // MAINWINDOW_H
diff --git a/Calibration/mainwindow.ui b/Calibration/mainwindow.ui
index 48cefa7f5f0a5a104f8e16bf03ed82b62021431a..b37c5638aaecb5445cde1c66cacfaedef73d8dd1 100644
--- a/Calibration/mainwindow.ui
+++ b/Calibration/mainwindow.ui
@@ -65,6 +65,13 @@
        <item>
         <widget class="QListWidget" name="listDevices"/>
        </item>
+       <item>
+        <widget class="QPushButton" name="btnReload">
+         <property name="text">
+          <string>Reload</string>
+         </property>
+        </widget>
+       </item>
        <item>
         <spacer name="bottomSpacer">
          <property name="orientation">
@@ -96,6 +103,13 @@
          </property>
         </widget>
        </item>
+       <item>
+        <widget class="QPushButton" name="btnConfig">
+         <property name="text">
+          <string>Save Configuration</string>
+         </property>
+        </widget>
+       </item>
        <item>
         <widget class="QPushButton" name="btnQuit">
          <property name="text">
diff --git a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/Calibration b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/Calibration
index 123de46907bf5584d93d79ea68084f673d3c4347..62e70126c5c5c05c810d57599141cd44acd5cc67 100755
Binary files a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/Calibration and b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/Calibration differ
diff --git a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile
index cf3acd641cfe90f7c2b745bb6430d959e692ae80..58ac5a560b5e0980ab9a42bdbe9fbe1eb12896bf 100644
--- a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile
+++ b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile
@@ -17,7 +17,7 @@ CXX           = g++
 DEFINES       = -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
 CFLAGS        = -pipe -g -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
 CXXFLAGS      = -pipe -g -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
-INCPATH       = -I../Calibration -I. -I../libsandbox -I../../../../Qt/5.14.1/gcc_64/include -I../../../../Qt/5.14.1/gcc_64/include/QtWidgets -I../../../../Qt/5.14.1/gcc_64/include/QtGui -I../../../../Qt/5.14.1/gcc_64/include/QtCore -I. -isystem /usr/include/libdrm -I. -I../../../../Qt/5.14.1/gcc_64/mkspecs/linux-g++
+INCPATH       = -I../Calibration -I. -I../sandbox -I../../../../Qt/5.14.1/gcc_64/include -I../../../../Qt/5.14.1/gcc_64/include/QtWidgets -I../../../../Qt/5.14.1/gcc_64/include/QtGui -I../../../../Qt/5.14.1/gcc_64/include/QtCore -I. -isystem /usr/include/libdrm -I. -I../../../../Qt/5.14.1/gcc_64/mkspecs/linux-g++
 QMAKE         = /home/fabien/Qt/5.14.1/gcc_64/bin/qmake
 DEL_FILE      = rm -f
 CHK_DIR_EXISTS= test -d
@@ -40,7 +40,7 @@ DISTNAME      = Calibration1.0.0
 DISTDIR = /home/fabien/Desktop/pa/sandboxrefactorconfig/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/.tmp/Calibration1.0.0
 LINK          = g++
 LFLAGS        = -Wl,-rpath,/home/fabien/Qt/5.14.1/gcc_64/lib
-LIBS          = $(SUBLIBS) ../build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/liblibsandbox.a -L/usr/lib/x86_64-linux-gnu -lrealsense2 /home/fabien/Qt/5.14.1/gcc_64/lib/libQt5Widgets.so /home/fabien/Qt/5.14.1/gcc_64/lib/libQt5Gui.so /home/fabien/Qt/5.14.1/gcc_64/lib/libQt5Core.so -lGL -lpthread   
+LIBS          = $(SUBLIBS) ../build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/libsandbox.a -L/usr/lib/x86_64-linux-gnu -lrealsense2 /home/fabien/Qt/5.14.1/gcc_64/lib/libQt5Widgets.so /home/fabien/Qt/5.14.1/gcc_64/lib/libQt5Gui.so /home/fabien/Qt/5.14.1/gcc_64/lib/libQt5Core.so -lGL -lpthread   
 AR            = ar cqs
 RANLIB        = 
 SED           = sed
@@ -268,7 +268,7 @@ DIST          = ../../../../Qt/5.14.1/gcc_64/mkspecs/features/spec_pre.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/exceptions.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/yacc.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/lex.prf \
-		../Calibration/Calibration.pro ../libsandbox/libsandbox.h \
+		../Calibration/Calibration.pro ../sandbox/sandbox.h \
 		../Calibration/mainwindow.h ../Calibration/main.cpp \
 		../Calibration/mainwindow.cpp
 QMAKE_TARGET  = Calibration
@@ -722,7 +722,7 @@ distdir: FORCE
 	@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
 	$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
 	$(COPY_FILE) --parents ../../../../Qt/5.14.1/gcc_64/mkspecs/features/data/dummy.cpp $(DISTDIR)/
-	$(COPY_FILE) --parents ../libsandbox/libsandbox.h ../Calibration/mainwindow.h $(DISTDIR)/
+	$(COPY_FILE) --parents ../sandbox/sandbox.h ../Calibration/mainwindow.h $(DISTDIR)/
 	$(COPY_FILE) --parents ../Calibration/main.cpp ../Calibration/mainwindow.cpp $(DISTDIR)/
 	$(COPY_FILE) --parents ../Calibration/mainwindow.ui $(DISTDIR)/
 
@@ -891,10 +891,10 @@ moc_mainwindow.cpp: ../Calibration/mainwindow.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qstyle.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qtabbar.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qrubberband.h \
-		../libsandbox/libsandbox.h \
+		../sandbox/sandbox.h \
 		moc_predefs.h \
 		../../../../Qt/5.14.1/gcc_64/bin/moc
-	/home/fabien/Qt/5.14.1/gcc_64/bin/moc $(DEFINES) --include /home/fabien/Desktop/pa/sandboxrefactorconfig/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_predefs.h -I/home/fabien/Qt/5.14.1/gcc_64/mkspecs/linux-g++ -I/home/fabien/Desktop/pa/sandboxrefactorconfig/Calibration -I/home/fabien/Desktop/pa/sandboxrefactorconfig/libsandbox -I/home/fabien/Qt/5.14.1/gcc_64/include -I/home/fabien/Qt/5.14.1/gcc_64/include/QtWidgets -I/home/fabien/Qt/5.14.1/gcc_64/include/QtGui -I/home/fabien/Qt/5.14.1/gcc_64/include/QtCore -I. -I/usr/include/c++/5 -I/usr/include/x86_64-linux-gnu/c++/5 -I/usr/include/c++/5/backward -I/usr/lib/gcc/x86_64-linux-gnu/5/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include ../Calibration/mainwindow.h -o moc_mainwindow.cpp
+	/home/fabien/Qt/5.14.1/gcc_64/bin/moc $(DEFINES) --include /home/fabien/Desktop/pa/sandboxrefactorconfig/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_predefs.h -I/home/fabien/Qt/5.14.1/gcc_64/mkspecs/linux-g++ -I/home/fabien/Desktop/pa/sandboxrefactorconfig/Calibration -I/home/fabien/Desktop/pa/sandboxrefactorconfig/sandbox -I/home/fabien/Qt/5.14.1/gcc_64/include -I/home/fabien/Qt/5.14.1/gcc_64/include/QtWidgets -I/home/fabien/Qt/5.14.1/gcc_64/include/QtGui -I/home/fabien/Qt/5.14.1/gcc_64/include/QtCore -I. -I/usr/include/c++/5 -I/usr/include/x86_64-linux-gnu/c++/5 -I/usr/include/c++/5/backward -I/usr/lib/gcc/x86_64-linux-gnu/5/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include ../Calibration/mainwindow.h -o moc_mainwindow.cpp
 
 compiler_moc_objc_header_make_all:
 compiler_moc_objc_header_clean:
@@ -1049,7 +1049,7 @@ main.o: ../Calibration/main.cpp ../Calibration/mainwindow.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qstyle.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qtabbar.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qrubberband.h \
-		../libsandbox/libsandbox.h \
+		../sandbox/sandbox.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/QApplication \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qapplication.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtCore/qcoreapplication.h \
@@ -1191,7 +1191,7 @@ mainwindow.o: ../Calibration/mainwindow.cpp ../Calibration/mainwindow.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qstyle.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qtabbar.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/qrubberband.h \
-		../libsandbox/libsandbox.h \
+		../sandbox/sandbox.h \
 		ui_mainwindow.h \
 		../../../../Qt/5.14.1/gcc_64/include/QtCore/QVariant \
 		../../../../Qt/5.14.1/gcc_64/include/QtWidgets/QApplication \
diff --git a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/main.o b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/main.o
index 2c19271a58c76cdae62a620e234929d1ce442b7a..69d82601b10f0cedfb9ceffe7980491335340697 100644
Binary files a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/main.o and b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/main.o differ
diff --git a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/mainwindow.o b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/mainwindow.o
index 20a878af689b199c3a3731f0d312417b8dff94a6..a24b426bf24cb637f45512fdf843f55d19727990 100644
Binary files a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/mainwindow.o and b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/mainwindow.o differ
diff --git a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_mainwindow.cpp b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_mainwindow.cpp
index 8142654861da55bed44c564b98da9582a726ab85..54e3d5a8d1ef3719134d3b0847c16c7d50d34d99 100644
--- a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_mainwindow.cpp
+++ b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_mainwindow.cpp
@@ -22,8 +22,8 @@ QT_BEGIN_MOC_NAMESPACE
 QT_WARNING_PUSH
 QT_WARNING_DISABLE_DEPRECATED
 struct qt_meta_stringdata_MainWindow_t {
-    QByteArrayData data[5];
-    char stringdata0[67];
+    QByteArrayData data[6];
+    char stringdata0[94];
 };
 #define QT_MOC_LITERAL(idx, ofs, len) \
     Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
@@ -35,12 +35,14 @@ static const qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = {
 QT_MOC_LITERAL(0, 0, 10), // "MainWindow"
 QT_MOC_LITERAL(1, 11, 15), // "quitApplication"
 QT_MOC_LITERAL(2, 27, 0), // ""
-QT_MOC_LITERAL(3, 28, 21), // "selectRealSenseCamera"
-QT_MOC_LITERAL(4, 50, 16) // "QListWidgetItem*"
+QT_MOC_LITERAL(3, 28, 21), // "selectRealSenseDevice"
+QT_MOC_LITERAL(4, 50, 16), // "QListWidgetItem*"
+QT_MOC_LITERAL(5, 67, 26) // "reloadListRealSenseDevices"
 
     },
     "MainWindow\0quitApplication\0\0"
-    "selectRealSenseCamera\0QListWidgetItem*"
+    "selectRealSenseDevice\0QListWidgetItem*\0"
+    "reloadListRealSenseDevices"
 };
 #undef QT_MOC_LITERAL
 
@@ -50,7 +52,7 @@ static const uint qt_meta_data_MainWindow[] = {
        8,       // revision
        0,       // classname
        0,    0, // classinfo
-       2,   14, // methods
+       3,   14, // methods
        0,    0, // properties
        0,    0, // enums/sets
        0,    0, // constructors
@@ -58,12 +60,14 @@ static const uint qt_meta_data_MainWindow[] = {
        0,       // signalCount
 
  // slots: name, argc, parameters, tag, flags
-       1,    0,   24,    2, 0x08 /* Private */,
-       3,    1,   25,    2, 0x08 /* Private */,
+       1,    0,   29,    2, 0x08 /* Private */,
+       3,    1,   30,    2, 0x08 /* Private */,
+       5,    0,   33,    2, 0x08 /* Private */,
 
  // slots: parameters
     QMetaType::Void,
     QMetaType::Void, 0x80000000 | 4,    2,
+    QMetaType::Void,
 
        0        // eod
 };
@@ -75,7 +79,8 @@ void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id,
         Q_UNUSED(_t)
         switch (_id) {
         case 0: _t->quitApplication(); break;
-        case 1: _t->selectRealSenseCamera((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break;
+        case 1: _t->selectRealSenseDevice((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break;
+        case 2: _t->reloadListRealSenseDevices(); break;
         default: ;
         }
     }
@@ -110,13 +115,13 @@ int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
     if (_id < 0)
         return _id;
     if (_c == QMetaObject::InvokeMetaMethod) {
-        if (_id < 2)
+        if (_id < 3)
             qt_static_metacall(this, _c, _id, _a);
-        _id -= 2;
+        _id -= 3;
     } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
-        if (_id < 2)
+        if (_id < 3)
             *reinterpret_cast<int*>(_a[0]) = -1;
-        _id -= 2;
+        _id -= 3;
     }
     return _id;
 }
diff --git a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_mainwindow.o b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_mainwindow.o
index 7c6f7f398a230b662cd7b51633a00150307238c3..eaf44988a0be101b89b25f4ccf484e3e8652d9ea 100644
Binary files a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_mainwindow.o and b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/moc_mainwindow.o differ
diff --git a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/ui_mainwindow.h b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/ui_mainwindow.h
index a5f1f2d30e1271d7210f9d074d032300c9926b37..a2792e697c29f0aad98d6fe1a0d5ebb49f96a6e6 100644
--- a/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/ui_mainwindow.h
+++ b/build-Calibration-Desktop_Qt_5_14_1_GCC_64bit-Debug/ui_mainwindow.h
@@ -36,10 +36,12 @@ public:
     QSpacerItem *topSpacer;
     QLabel *lblDevices;
     QListWidget *listDevices;
+    QPushButton *btnReload;
     QSpacerItem *bottomSpacer;
     QVBoxLayout *verticalLayout1;
     QLabel *lblConsole;
     QPlainTextEdit *pteConsole;
+    QPushButton *btnConfig;
     QPushButton *btnQuit;
     QMenuBar *menubar;
     QStatusBar *statusbar;
@@ -78,6 +80,11 @@ public:
 
         verticalLayout->addWidget(listDevices);
 
+        btnReload = new QPushButton(verticalLayoutWidget);
+        btnReload->setObjectName(QString::fromUtf8("btnReload"));
+
+        verticalLayout->addWidget(btnReload);
+
         bottomSpacer = new QSpacerItem(40, 20, QSizePolicy::Minimum, QSizePolicy::Expanding);
 
         verticalLayout->addItem(bottomSpacer);
@@ -98,6 +105,11 @@ public:
 
         verticalLayout1->addWidget(pteConsole);
 
+        btnConfig = new QPushButton(verticalLayoutWidget);
+        btnConfig->setObjectName(QString::fromUtf8("btnConfig"));
+
+        verticalLayout1->addWidget(btnConfig);
+
         btnQuit = new QPushButton(verticalLayoutWidget);
         btnQuit->setObjectName(QString::fromUtf8("btnQuit"));
 
@@ -124,7 +136,9 @@ public:
     {
         MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "MainWindow", nullptr));
         lblDevices->setText(QCoreApplication::translate("MainWindow", "list of Intel RealSense Cameras", nullptr));
+        btnReload->setText(QCoreApplication::translate("MainWindow", "Reload", nullptr));
         lblConsole->setText(QCoreApplication::translate("MainWindow", "Console", nullptr));
+        btnConfig->setText(QCoreApplication::translate("MainWindow", "Save Configuration", nullptr));
         btnQuit->setText(QCoreApplication::translate("MainWindow", "Quit", nullptr));
     } // retranslateUi
 
diff --git a/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/liblibsandbox.a b/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/liblibsandbox.a
deleted file mode 100644
index b0d33aba70ddfa255902c3ef420e03649afa66d8..0000000000000000000000000000000000000000
Binary files a/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/liblibsandbox.a and /dev/null differ
diff --git a/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/libsandbox.o b/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/libsandbox.o
deleted file mode 100644
index 0070130db5e53a630d5bdfbdff0ba949ddcbb062..0000000000000000000000000000000000000000
Binary files a/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/libsandbox.o and /dev/null differ
diff --git a/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/.qmake.stash b/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/.qmake.stash
similarity index 100%
rename from build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/.qmake.stash
rename to build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/.qmake.stash
diff --git a/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile b/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile
similarity index 97%
rename from build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile
rename to build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile
index 73b222fea0f74019b63f6b7a7b927398ce078661..0269aa990d94d9c391b0bb88eeb869753b5c1ef2 100644
--- a/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile
+++ b/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/Makefile
@@ -1,9 +1,9 @@
 #############################################################################
-# Makefile for building: liblibsandbox.a
+# Makefile for building: libsandbox.a
 # Generated by qmake (3.1) (Qt 5.14.1)
-# Project:  ../libsandbox/libsandbox.pro
+# Project:  ../sandbox/sandbox.pro
 # Template: lib
-# Command: /home/fabien/Qt/5.14.1/gcc_64/bin/qmake -o Makefile ../libsandbox/libsandbox.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
+# Command: /home/fabien/Qt/5.14.1/gcc_64/bin/qmake -o Makefile ../sandbox/sandbox.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
 #############################################################################
 
 MAKEFILE      = Makefile
@@ -17,7 +17,7 @@ CXX           = g++
 DEFINES       = -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB
 CFLAGS        = -pipe -g -fPIC -Wall -Wextra -D_REENTRANT $(DEFINES)
 CXXFLAGS      = -pipe -g -fPIC -std=gnu++11 -Wall -Wextra -D_REENTRANT $(DEFINES)
-INCPATH       = -I../libsandbox -I. -I../../../../Qt/5.14.1/gcc_64/include -I../../../../Qt/5.14.1/gcc_64/include/QtCore -I. -I../../../../Qt/5.14.1/gcc_64/mkspecs/linux-g++
+INCPATH       = -I../sandbox -I. -I../../../../Qt/5.14.1/gcc_64/include -I../../../../Qt/5.14.1/gcc_64/include/QtCore -I. -I../../../../Qt/5.14.1/gcc_64/mkspecs/linux-g++
 QMAKE         = /home/fabien/Qt/5.14.1/gcc_64/bin/qmake
 DEL_FILE      = rm -f
 CHK_DIR_EXISTS= test -d
@@ -36,8 +36,8 @@ DEL_DIR       = rmdir
 MOVE          = mv -f
 TAR           = tar -cf
 COMPRESS      = gzip -9f
-DISTNAME      = libsandbox1.0.0
-DISTDIR = /home/fabien/Desktop/pa/sandboxrefactorconfig/build-libsandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/.tmp/libsandbox1.0.0
+DISTNAME      = sandbox1.0.0
+DISTDIR = /home/fabien/Desktop/pa/sandboxrefactorconfig/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/.tmp/sandbox1.0.0
 AR            = ar cqs
 RANLIB        = 
 SED           = sed
@@ -49,8 +49,8 @@ OBJECTS_DIR   = ./
 
 ####### Files
 
-SOURCES       = ../libsandbox/libsandbox.cpp 
-OBJECTS       = libsandbox.o
+SOURCES       = ../sandbox/sandbox.cpp 
+OBJECTS       = sandbox.o
 DIST          = ../../../../Qt/5.14.1/gcc_64/mkspecs/features/spec_pre.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/common/unix.conf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/common/linux.conf \
@@ -259,10 +259,10 @@ DIST          = ../../../../Qt/5.14.1/gcc_64/mkspecs/features/spec_pre.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/exceptions.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/yacc.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/lex.prf \
-		../libsandbox/libsandbox.pro ../libsandbox/libsandbox.h ../libsandbox/libsandbox.cpp
-QMAKE_TARGET  = libsandbox
+		../sandbox/sandbox.pro ../sandbox/sandbox.h ../sandbox/sandbox.cpp
+QMAKE_TARGET  = sandbox
 DESTDIR       = 
-TARGET        = liblibsandbox.a
+TARGET        = libsandbox.a
 
 
 first: all
@@ -270,12 +270,12 @@ first: all
 
 staticlib: $(TARGET)
 
-liblibsandbox.a:  $(OBJECTS) $(OBJCOMP) 
+libsandbox.a:  $(OBJECTS) $(OBJCOMP) 
 	-$(DEL_FILE) $(TARGET)
 	$(AR) $(DESTDIR)$(TARGET) $(OBJECTS)
 
 
-Makefile: ../libsandbox/libsandbox.pro ../../../../Qt/5.14.1/gcc_64/mkspecs/linux-g++/qmake.conf ../../../../Qt/5.14.1/gcc_64/mkspecs/features/spec_pre.prf \
+Makefile: ../sandbox/sandbox.pro ../../../../Qt/5.14.1/gcc_64/mkspecs/linux-g++/qmake.conf ../../../../Qt/5.14.1/gcc_64/mkspecs/features/spec_pre.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/common/unix.conf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/common/linux.conf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/common/sanitize.conf \
@@ -483,8 +483,8 @@ Makefile: ../libsandbox/libsandbox.pro ../../../../Qt/5.14.1/gcc_64/mkspecs/linu
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/exceptions.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/yacc.prf \
 		../../../../Qt/5.14.1/gcc_64/mkspecs/features/lex.prf \
-		../libsandbox/libsandbox.pro
-	$(QMAKE) -o Makefile ../libsandbox/libsandbox.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
+		../sandbox/sandbox.pro
+	$(QMAKE) -o Makefile ../sandbox/sandbox.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
 ../../../../Qt/5.14.1/gcc_64/mkspecs/features/spec_pre.prf:
 ../../../../Qt/5.14.1/gcc_64/mkspecs/common/unix.conf:
 ../../../../Qt/5.14.1/gcc_64/mkspecs/common/linux.conf:
@@ -693,14 +693,14 @@ Makefile: ../libsandbox/libsandbox.pro ../../../../Qt/5.14.1/gcc_64/mkspecs/linu
 ../../../../Qt/5.14.1/gcc_64/mkspecs/features/exceptions.prf:
 ../../../../Qt/5.14.1/gcc_64/mkspecs/features/yacc.prf:
 ../../../../Qt/5.14.1/gcc_64/mkspecs/features/lex.prf:
-../libsandbox/libsandbox.pro:
+../sandbox/sandbox.pro:
 qmake: FORCE
-	@$(QMAKE) -o Makefile ../libsandbox/libsandbox.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
+	@$(QMAKE) -o Makefile ../sandbox/sandbox.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
 
 qmake_all: FORCE
 
 
-all: Makefile liblibsandbox.a
+all: Makefile libsandbox.a
 
 dist: distdir FORCE
 	(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
@@ -709,8 +709,8 @@ distdir: FORCE
 	@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
 	$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
 	$(COPY_FILE) --parents ../../../../Qt/5.14.1/gcc_64/mkspecs/features/data/dummy.cpp $(DISTDIR)/
-	$(COPY_FILE) --parents ../libsandbox/libsandbox.h $(DISTDIR)/
-	$(COPY_FILE) --parents ../libsandbox/libsandbox.cpp $(DISTDIR)/
+	$(COPY_FILE) --parents ../sandbox/sandbox.h $(DISTDIR)/
+	$(COPY_FILE) --parents ../sandbox/sandbox.cpp $(DISTDIR)/
 
 
 clean: compiler_clean 
@@ -758,8 +758,8 @@ compiler_clean: compiler_moc_predefs_clean
 
 ####### Compile
 
-libsandbox.o: ../libsandbox/libsandbox.cpp ../libsandbox/libsandbox.h
-	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o libsandbox.o ../libsandbox/libsandbox.cpp
+sandbox.o: ../sandbox/sandbox.cpp ../sandbox/sandbox.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sandbox.o ../sandbox/sandbox.cpp
 
 ####### Install
 
diff --git a/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/libsandbox.a b/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/libsandbox.a
new file mode 100644
index 0000000000000000000000000000000000000000..7b07dfcedd59402b8909fd014bfcdb1d5b88481a
Binary files /dev/null and b/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/libsandbox.a differ
diff --git a/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/sandbox.o b/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/sandbox.o
new file mode 100644
index 0000000000000000000000000000000000000000..aa229a4e36ebac4a75c6a12e81bac1b34323e06f
Binary files /dev/null and b/build-sandbox-Desktop_Qt_5_14_1_GCC_64bit-Debug/sandbox.o differ
diff --git a/libsandbox/libsandbox.cpp b/libsandbox/libsandbox.cpp
deleted file mode 100644
index 45e2f24a289c6e1256956fefa6968f86f313a7df..0000000000000000000000000000000000000000
--- a/libsandbox/libsandbox.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "libsandbox.h"
-
-Libsandbox::Libsandbox()
-{
-    listRealSenseDevices = ctx.query_devices();
-    if (listRealSenseDevices.size() > 0) {
-        realSenseDevice = listRealSenseDevices[0];
-    }
-}
-
-rs2::device_list Libsandbox::getListRealSenseDevices()
-{
-    return listRealSenseDevices;
-}
-
-void Libsandbox::setRealSenseDevices(rs2::device device){
-    realSenseDevice = device;
-}
-rs2::device Libsandbox::getRealSenseDevice(){
-    return realSenseDevice;
-}
diff --git a/libsandbox/libsandbox.h b/libsandbox/libsandbox.h
deleted file mode 100644
index d23de09331dd0d788ff27dc35ac07f440bdd56d3..0000000000000000000000000000000000000000
--- a/libsandbox/libsandbox.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef LIBSANDBOX_H
-#define LIBSANDBOX_H
-
-#include <librealsense2/rs.hpp>
-#include <librealsense2/rsutil.h>
-
-class Libsandbox
-{
-private:
-    rs2::context ctx;
-    rs2::device_list listRealSenseDevices;
-    rs2::device realSenseDevice;
-
-public:
-    Libsandbox();
-    rs2::device_list getListRealSenseDevices();
-    void setRealSenseDevices(rs2::device device);
-    rs2::device getRealSenseDevice();
-};
-
-#endif // LIBSANDBOX_H
diff --git a/notesperso b/notesperso
new file mode 100644
index 0000000000000000000000000000000000000000..0661c9582049df92fc45fe5f36bee004656d4ebc
--- /dev/null
+++ b/notesperso
@@ -0,0 +1,2 @@
+for serialization:
+    sudo apt-get install libboost-all-dev
\ No newline at end of file
diff --git a/libsandbox/.gitignore b/sandbox/.gitignore
similarity index 100%
rename from libsandbox/.gitignore
rename to sandbox/.gitignore
diff --git a/sandbox/sandbox.cpp b/sandbox/sandbox.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..78bdb3d62857633030ac3c88a5247f5eb51b0be7
--- /dev/null
+++ b/sandbox/sandbox.cpp
@@ -0,0 +1,66 @@
+#include "sandbox.h"
+
+Sandbox::Sandbox()
+{
+    loadListRealSenseDevices();
+    if (listRealSenseDevices.size() > 0) {
+        realSenseDevice = listRealSenseDevices[0];
+    }
+}
+
+rs2::device_list Sandbox::getListRealSenseDevices()
+{
+    return listRealSenseDevices;
+}
+
+void Sandbox::setRealSenseDevices(rs2::device device){
+    realSenseDevice = device;
+}
+rs2::device Sandbox::getRealSenseDevice(){
+    return realSenseDevice;
+}
+
+void Sandbox::loadListRealSenseDevices()
+{
+    listRealSenseDevices = ctx.query_devices();
+}
+
+bool Sandbox::saveConfiguration() {
+
+    // Folder config
+    char* dirname = "./config";
+    struct stat info;
+
+    if( stat( dirname, &info ) != 0 ) {
+        printf( "cannot access %s\n", dirname );
+        mkdir(dirname, 0777);
+    } else if( info.st_mode & S_IFDIR )  // S_ISDIR() doesn't exist on my windows
+        printf( "%s is a directory\n", dirname );
+    else {
+        printf( "%s is no directory\n", dirname );
+        return false;
+    }
+
+    // File device
+    char* filenameDevice = "./config/device";
+    if( stat( filenameDevice, &info ) != 0 ) {
+        printf( "cannot access %s\n", filenameDevice );
+    } else if( info.st_mode & S_IFDIR )  // S_ISDIR() doesn't exist on my windows
+        printf( "%s is a directory\n", filenameDevice );
+    else {
+        printf( "%s is no directory\n", filenameDevice );
+        return false;
+    }
+}
+
+void Sandbox::serialize(std::ostream& stream)
+{
+    // Serialization code
+    stream << realSenseDevice.get_info(RS2_CAMERA_INFO_SERIAL_NUMBER);
+}
+
+void Sandbox::deserialize(std::istream& stream)
+{
+    // Deserialization code
+    stream >> realSenseDeviceSerialNumber;
+}
diff --git a/sandbox/sandbox.h b/sandbox/sandbox.h
new file mode 100644
index 0000000000000000000000000000000000000000..cfcf5f5fc816271923b5840d354b13ec32c08d45
--- /dev/null
+++ b/sandbox/sandbox.h
@@ -0,0 +1,32 @@
+#ifndef SANDBOX_H
+#define SANDBOX_H
+
+#include <librealsense2/rs.hpp>
+#include <librealsense2/rsutil.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <bits/stdc++.h>
+#include <iostream>
+#include "serializable.h"
+
+class Sandbox : Serializable
+{
+public:
+private:
+    rs2::context ctx;
+    rs2::device_list listRealSenseDevices;
+    rs2::device realSenseDevice;
+    char* realSenseDeviceSerialNumber;
+
+public:
+    Sandbox();
+    rs2::device_list getListRealSenseDevices();
+    void setRealSenseDevices(rs2::device device);
+    rs2::device getRealSenseDevice();
+    void loadListRealSenseDevices();
+    bool saveConfiguration();
+    void serialize(std::ostream& stream);
+    void deserialize(std::istream& stream);
+};
+
+#endif // SANDBOX_H
diff --git a/libsandbox/libsandbox.pro b/sandbox/sandbox.pro
similarity index 90%
rename from libsandbox/libsandbox.pro
rename to sandbox/sandbox.pro
index 0b1adf4bb4a4a3c659a189c775d3337cb82454a3..0902da10c7270b86dbdb1cbd0d1a89bb65830f51 100644
--- a/libsandbox/libsandbox.pro
+++ b/sandbox/sandbox.pro
@@ -17,15 +17,16 @@ DEFINES += QT_DEPRECATED_WARNINGS
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 SOURCES += \
-    libsandbox.cpp
+    sandbox.cpp
 
 HEADERS += \
-    libsandbox.h
-
-LIBS += -L/usr/lib/x86_64-linux-gnu -lrealsense2 \
+    sandbox.h \
+    serializable.h
 
 # Default rules for deployment.
 unix {
     target.path = $$[QT_INSTALL_PLUGINS]/generic
 }
 !isEmpty(target.path): INSTALLS += target
+
+LIBS += \ -lboost_system \
diff --git a/sandbox/serializable.cpp b/sandbox/serializable.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..debb16ab6c0b9bbd6c3e120cd42af695b0720b84
--- /dev/null
+++ b/sandbox/serializable.cpp
@@ -0,0 +1,6 @@
+#include "serializable.h"
+
+Serializable::Serializable()
+{
+
+}
diff --git a/sandbox/serializable.h b/sandbox/serializable.h
new file mode 100644
index 0000000000000000000000000000000000000000..daedfd37ad1f80584e38460d2a37b00649af2f44
--- /dev/null
+++ b/sandbox/serializable.h
@@ -0,0 +1,16 @@
+#ifndef SERIALIZABLE_H
+#define SERIALIZABLE_H
+
+#include <bits/stdc++.h>
+
+class Serializable
+{
+public:
+    Serializable(){}
+    virtual ~Serializable(){}
+
+    virtual void serialize(std::ostream& stream) = 0;
+    virtual void deserialize(std::istream& stream) = 0;
+};
+
+#endif // SERIALIZABLE_H