diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py
index 478e49a6bb04a5cb5ac6c8d72cd2ebd9d81842b7..e39152f4a3b5d4090373b84860cc1de34a99e853 100644
--- a/src/Solver/ASolver.py
+++ b/src/Solver/ASolver.py
@@ -33,6 +33,16 @@ class AbstractSolver(object):
     def __str__(self):
         return f"{self._name} : {self._type} : {self._description}"
 
+    def __getitem__(self, key):
+        ret = None
+        if key == "name":
+            ret = self._name
+        elif key == "description":
+            ret = self._description
+        elif key == "type":
+            ret = self._type
+        return ret
+
     @classmethod
     def default_parameters(cls):
         return []
diff --git a/src/Solver/Solvers.py b/src/Solver/Solvers.py
index b5f30476fb9bb5c15e0a008443e605fd5e469072..25cb95e31551691013f530b9b7ce903f27236959 100644
--- a/src/Solver/Solvers.py
+++ b/src/Solver/Solvers.py
@@ -1,3 +1,10 @@
 # -*- coding: utf-8 -*-
 
-solver_type_list = ["generic"]
+from Solver.GenericSolver import GenericSolver
+from Solver.Mage import Mage7, Mage8
+
+solver_type_list = {
+    "generic": GenericSolver,
+    "mage7": Mage7,
+    "mage8": Mage8,
+}
diff --git a/src/View/Configure/Solver/Window.py b/src/View/Configure/Solver/Window.py
index cc98fd6590ef0b23531b3799c31f29ffce90d775..64faf8da183dc816100116695ff2655d867276a0 100644
--- a/src/View/Configure/Solver/Window.py
+++ b/src/View/Configure/Solver/Window.py
@@ -64,8 +64,11 @@ class ConfigureSolverWindow(ASubWindow):
                 "Please give a name to your solver"
             )
         else:
-            self.data = GenericSolver(self.get_line_edit_text("lineEdit_name"))
-            self.data.set_description(self.get_line_edit_text("lineEdit_description"))
+            # Build new solver from selected type
+            stype = self.get_combobox_text("comboBox_solver")
+            self.data = solver_type_list[stype](self.get_line_edit_text("lineEdit_name"))
+
+            self.data.description = self.get_line_edit_text("lineEdit_description")
             self.data.set_input(
                 self.get_line_edit_text("lineEdit_input"),
                 self.get_line_edit_text("lineEdit_input_cmd")