diff --git a/src/config.py b/src/config.py
index f665a6aecc99f154df4d1704228547e4a2ac0807..599289229f485a51680e62349710f4bf8e57ab00 100644
--- a/src/config.py
+++ b/src/config.py
@@ -22,17 +22,15 @@ class Config(SQL):
         super(Config, self).__init__(db = self.filename)
 
     def _create(self):
-        cur = self._db.cursor()
-
         # Info (meta data)
-        cur.execute("CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)")
-        cur.execute(f"INSERT INTO info VALUES ('version', '{self._version}')")
+        self.execute("CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)")
+        self.execute(f"INSERT INTO info VALUES ('version', '{self._version}')")
 
         # Key / Value (data)
-        cur.execute("CREATE TABLE data(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)")
+        self.execute("CREATE TABLE data(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)")
 
         # Solver
-        cur.execute("""
+        self.execute("""
            CREATE TABLE solver(
              type TEXT NOT NULL,
              name TEXT NOT NULL UNIQUE,
@@ -49,7 +47,7 @@ class Config(SQL):
            """)
 
         # Stricklers
-        cur.execute("""
+        self.execute("""
            CREATE TABLE stricklers(
              name TEXT NOT NULL UNIQUE,
              comment TEXT NOT NULL,
@@ -58,20 +56,18 @@ class Config(SQL):
            )
            """)
 
-        self._db.commit()
+        self.commit()
 
     def _update(self):
-        cur = self._db.cursor()
-        version = cur.execute(f"SELECT value FROM info WHERE key='version'")
+        version = self.execute(f"SELECT value FROM info WHERE key='version'")
 
         if version.fetchone()[0] != self._version:
             print("update")
 
     def _load_solver(self):
-        cur = self._db.cursor()
         self._solvers = []
 
-        solvers = cur.execute("SELECT * FROM solver")
+        solvers = self.execute("SELECT * FROM solver")
         for solver in solvers.fetchall():
             solver_type = solver[0]
             ctor = solver_type_list[solver_type]
@@ -88,11 +84,10 @@ class Config(SQL):
             self._solvers.append(new)
 
     def _load_stricklers(self):
-        cur = self._db.cursor()
         self.stricklers = StricklersList()
 
         id = 0
-        stricklers = cur.execute("SELECT * FROM stricklers")
+        stricklers = self.execute("SELECT * FROM stricklers")
         for strickler in stricklers.fetchall():
             new = Stricklers()
             new._name = strickler[0]
@@ -104,45 +99,42 @@ class Config(SQL):
             id += 1
 
     def _load(self):
-        cur = self._db.cursor()
-
         # Meshing tool
-        v = cur.execute("SELECT value FROM data WHERE key='meshing_tool'")
+        v = self.execute("SELECT value FROM data WHERE key='meshing_tool'")
         self.meshing_tool = v.fetchone()[0]
 
         # Const
-        v = cur.execute("SELECT value FROM data WHERE key='segment'")
+        v = self.execute("SELECT value FROM data WHERE key='segment'")
         self.segment = int(v.fetchone()[0])
-        v = cur.execute("SELECT value FROM data WHERE key='max_listing'")
+        v = self.execute("SELECT value FROM data WHERE key='max_listing'")
         self.max_listing = int(v.fetchone()[0])
 
         # Backup
-        v = cur.execute("SELECT value FROM data WHERE key='backup_enable'")
+        v = self.execute("SELECT value FROM data WHERE key='backup_enable'")
         self.backup_enable = v.fetchone()[0] == "True"
-        v = cur.execute("SELECT value FROM data WHERE key='backup_path'")
+        v = self.execute("SELECT value FROM data WHERE key='backup_path'")
         self.backup_path = v.fetchone()[0]
-        v = cur.execute("SELECT value FROM data WHERE key='backup_frequence'")
+        v = self.execute("SELECT value FROM data WHERE key='backup_frequence'")
         self.backup_frequence = v.fetchone()[0]
-        v = cur.execute("SELECT value FROM data WHERE key='backup_max'")
+        v = self.execute("SELECT value FROM data WHERE key='backup_max'")
         self.backup_max = int(v.fetchone()[0])
 
         # Editor
-        v = cur.execute("SELECT value FROM data WHERE key='editor'")
+        v = self.execute("SELECT value FROM data WHERE key='editor'")
         self.editor = v.fetchone()[0]
 
         # Languages
-        v = cur.execute("SELECT value FROM data WHERE key='lang'")
+        v = self.execute("SELECT value FROM data WHERE key='lang'")
         self.lang = v.fetchone()[0]
 
         self._load_solver()
         self._load_stricklers()
 
     def _save_solver(self):
-        cur = self._db.cursor()
-        cur.execute(f"DELETE FROM solver")
+        self.execute(f"DELETE FROM solver")
 
         for solver in self.solvers:
-            cur.execute(f"""
+            self.execute(f"""
               INSERT INTO solver VALUES (
                 '{solver._type}',
                 '{solver._name}',
@@ -156,14 +148,13 @@ class Config(SQL):
               )
             """)
 
-        self._db.commit()
+        self.commit()
 
     def _save_stricklers(self):
-        cur = self._db.cursor()
-        cur.execute(f"DELETE FROM stricklers")
+        self.execute(f"DELETE FROM stricklers")
 
         for stricklers in self.stricklers.stricklers:
-            cur.execute(f"""
+            self.execute(f"""
               INSERT INTO stricklers VALUES (
                 '{stricklers._name}',
                 '{stricklers._comment}',
@@ -172,10 +163,9 @@ class Config(SQL):
               )
             """)
 
-        self._db.commit()
+        self.commit()
 
     def _save(self):
-        cur = self._db.cursor()
         data = {
             "segment": self.segment,
             "meshing_tool": self.meshing_tool,
@@ -189,10 +179,10 @@ class Config(SQL):
         }
 
         for key in data:
-            cur.execute(f"INSERT OR IGNORE INTO data VALUES ('{key}', '{data[key]}')")
-            cur.execute(f"UPDATE data SET value='{data[key]}' WHERE key='{key}'")
+            self.execute(f"INSERT OR IGNORE INTO data VALUES ('{key}', '{data[key]}')")
+            self.execute(f"UPDATE data SET value='{data[key]}' WHERE key='{key}'")
 
-        self._db.commit()
+        self.commit()
         self._save_solver()
         self._save_stricklers()
 
diff --git a/src/tools.py b/src/tools.py
index 858779fb7f8db998c914b42eca814a3bde9d4705..83a147aaf1087a79f3ec8fd9d6d9954ef0996254 100644
--- a/src/tools.py
+++ b/src/tools.py
@@ -167,7 +167,10 @@ def old_pamhyr_date_to_timestamp(date:str):
 class SQL(object):
     def __init__(self, db = "db.sqlite3"):
         exists = Path(db).exists()
+
         self._db = sqlite3.connect(db)
+        self._cur = self._db.cursor()
+
         if not exists:
             self._create()      # Create db
             self._save()        # Save
@@ -175,14 +178,23 @@ class SQL(object):
             self._update()      # Update db scheme if necessary
             self._load()        # Load data
 
+    def commit(self):
+        self._db.commit()
+
+    def execute(self, cmd, commit = False):
+        value = self._cur.execute(cmd)
+        if commit:
+            self._db.commit()
+        return value
+
     def _create(self):
-        print("Create")
+        print("TODO: Create")
 
     def _update(self):
-        print("Update")
+        print("TODO: Update")
 
     def _save(self):
-        print("Save")
+        print("TODO: Save")
 
     def _load(self):
-        print("Load")
+        print("TODO: Load")