diff --git a/src/Model/River.py b/src/Model/River.py
index 35bf7ab711b529c300199bbcee665014b1790693..580d2b8fa59999ef85e38cb29ca59aa3b0bff60e 100644
--- a/src/Model/River.py
+++ b/src/Model/River.py
@@ -14,6 +14,8 @@ from Model.Stricklers.StricklersList import StricklersList
 from Model.Section.SectionList import SectionList
 from Model.SolverParameters.SolverParametersList import SolverParametersList
 
+from Solver.Solvers import solver_type_list
+
 class RiverNode(Node):
     def __init__(self, id:str, name:str,
                  x:float, y:float,
@@ -110,7 +112,10 @@ class River(Graph):
         if solver in self._parameters:
             return self._parameters[solver]
 
-        new = SolverParametersList(status = self._status)
+        new = SolverParametersList(
+            solver_type = solver_type_list[solver],
+            status = self._status
+        )
         self._parameters[solver] = new
         self._status.modified()
         return self._parameters[solver]
diff --git a/src/Model/SolverParameters/SolverParametersList.py b/src/Model/SolverParameters/SolverParametersList.py
index 0d656d0dc71a03176a0dad2c1c0bc509c54b9d68..ee3b9b4076640c274127884315b97f7ff0f16967 100644
--- a/src/Model/SolverParameters/SolverParametersList.py
+++ b/src/Model/SolverParameters/SolverParametersList.py
@@ -34,13 +34,25 @@ class Parameter(object):
 
         self._status.modified()
 
+    @classmethod
+    def from_tuple(cls, data, status):
+        new = cls(status = status)
+        new["name"] = data[0]
+        new["value"] = data[1]
+
+        return new
 
 class SolverParametersList(object):
-    def __init__(self, status = None):
+    def __init__(self, solver_type = None, status = None):
         super(SolverParametersList, self).__init__()
 
         self._status = status
-        self._parameters = []
+        self._parameters = list(
+            map(
+                lambda t: Parameter.from_tuple(t, self._status),
+                solver_type.default_parameters()
+            )
+        )
 
     def __len__(self):
         return len(self._parameters)
diff --git a/src/Solver/GenericSolver.py b/src/Solver/GenericSolver.py
index 53bc6f0d3c446878a05950a3459c0ffed4c18048..8f5b0afb31885863669c5ff9cf85a5d7181fd3f7 100644
--- a/src/Solver/GenericSolver.py
+++ b/src/Solver/GenericSolver.py
@@ -12,6 +12,6 @@ class GenericSolver(AbstractSolver):
 
     @classmethod
     def default_parameters(cls):
-        lst = super(Mage, cls).default_parameters()
+        lst = super(GenericSolver, cls).default_parameters()
 
         return lst
diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py
index 61d8a316eba5eebc1df8b937cba019a5021e0701..94c1e7a0079db94a62b717e4680d4d9a2ed93bc0 100644
--- a/src/Solver/Mage.py
+++ b/src/Solver/Mage.py
@@ -17,7 +17,7 @@ class Mage(GenericSolver):
         lst = super(Mage, cls).default_parameters()
 
         lst += [
-            ("time_step", "300"),
+            ("mage_time_step", "300"),
         ]
 
         return lst
diff --git a/src/View/SolverParameters/Table.py b/src/View/SolverParameters/Table.py
index b46281318d558ebfc7a7e149ba7fd7d5e968cc84..5d84ed6f82c1d7aa5d496691ee7f9c11cb918178 100644
--- a/src/View/SolverParameters/Table.py
+++ b/src/View/SolverParameters/Table.py
@@ -18,6 +18,8 @@ from PyQt5.QtWidgets import (
 from View.SolverParameters.UndoCommand import *
 from View.SolverParameters.translate import *
 
+from Solver.Solvers import solver_long_name, solver_type_list
+
 _translate = QCoreApplication.translate
 
 class TableModel(QAbstractTableModel):
@@ -32,7 +34,9 @@ class TableModel(QAbstractTableModel):
     def flags(self, index):
         options = Qt.ItemIsEnabled | Qt.ItemIsSelectable
 
-        if self._headers[self._column] == "value":
+        column = index.column()
+
+        if self._headers[column] == "value":
             options |= Qt.ItemIsEditable
 
         return options
@@ -49,9 +53,15 @@ class TableModel(QAbstractTableModel):
 
         row = index.row()
         column = index.column()
+        cname = self._headers[column]
 
-        if 0 <= column < len(self._headers):
-            return self._params.get(row)[self._headers[column]]
+        if cname == "name":
+            value = self._params.get(row)[cname]
+            if value in names:
+                value = names[value]
+            return value
+        elif cname == "value":
+            return self._params.get(row)[cname]
 
         return QVariant()
 
@@ -71,7 +81,8 @@ class TableModel(QAbstractTableModel):
         if self._headers[column] == "value":
             self._undo.push(
                 SetCommand(
-                    self._params, row, "value", value
+                    self._params, row,
+                    "value", value
                 )
             )
 
diff --git a/src/View/SolverParameters/UndoCommand.py b/src/View/SolverParameters/UndoCommand.py
index d5d2f3a3ee5b11120bdcdf5e3bc2401fa58a2678..6a8dc1eb211c5183479ec51b03def2e4b5bf6e24 100644
--- a/src/View/SolverParameters/UndoCommand.py
+++ b/src/View/SolverParameters/UndoCommand.py
@@ -20,7 +20,7 @@ class SetCommand(QUndoCommand):
         self._new = new_value
 
     def undo(self):
-        self._data.get(self._index)[column] = self._old
+        self._data.get(self._index)[self._column] = self._old
 
     def redo(self):
-        self._data.get(self._index)[column] = self._new
+        self._data.get(self._index)[self._column] = self._new
diff --git a/src/View/SolverParameters/Window.py b/src/View/SolverParameters/Window.py
index c98e3e1a3cb6700f1be3aa5f47f18013c0299550..c5aa264af62aa658dfc7c667dcd7a6e67f5591db 100644
--- a/src/View/SolverParameters/Window.py
+++ b/src/View/SolverParameters/Window.py
@@ -20,12 +20,15 @@ from PyQt5.QtWidgets import (
     QFileDialog, QTableView, QAbstractItemView,
     QUndoStack, QShortcut, QAction, QItemDelegate,
     QComboBox, QVBoxLayout, QHeaderView, QTabWidget,
+    QWidget, QGridLayout,
 )
 
 from View.SolverParameters.UndoCommand import *
 from View.SolverParameters.Table import TableModel
 from View.SolverParameters.translate import *
 
+from Solver.Solvers import solver_long_name, solver_type_list
+
 _translate = QCoreApplication.translate
 
 
@@ -47,7 +50,10 @@ class SolverParametersWindow(ASubMainWindow, ListedSubWindow):
         self.ui.setWindowTitle(title)
 
     def setup_sc(self):
-        self._undo_stack = QUndoStack()
+        self._undo_stack = {}
+
+        for st in solver_type_list:
+            self._undo_stack[st] = QUndoStack()
 
         self.undo_sc = QShortcut(QKeySequence.Undo, self)
         self.redo_sc = QShortcut(QKeySequence.Redo, self)
@@ -56,20 +62,38 @@ class SolverParametersWindow(ASubMainWindow, ListedSubWindow):
 
     def setup_table(self):
         self._table = {}
+        self._tab_widget = self.find(QTabWidget, f"tabWidget")
+
+        for st in solver_type_list:
+            # Create table
+            widget = QWidget()
+            widget.setObjectName(f"tab_{st}")
+
+            grid = QGridLayout()
 
-        for t in ["mage"]:
-            table = self.find(QTableView, f"tableView_{t}")
-            self._table[t] = TableModel(
+            table = QTableView()
+            table.setObjectName(f"tableView_{st}")
+
+            self._table[st] = TableModel(
                 data = self._study.river,
-                undo = self._undo_stack,
-                tab = t,
+                undo = self._undo_stack[st],
+                tab = st,
             )
-            table.setModel(self._table[t])
 
+            table.setModel(self._table[st])
             table.setSelectionBehavior(QAbstractItemView.SelectRows)
             table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
             table.setAlternatingRowColors(True)
 
+            # Add table to tab
+            grid.addWidget(table, 0, 0)
+            widget.setLayout(grid)
+            table.setParent(widget)
+
+            # Create tab
+            self._tab_widget.addTab(widget, f"{solver_long_name[st]}")
+
+
     def setup_connections(self):
         self.undo_sc.activated.connect(self.undo)
         self.redo_sc.activated.connect(self.redo)
diff --git a/src/View/SolverParameters/translate.py b/src/View/SolverParameters/translate.py
index 3103dcb99a612723efa99f5ac6b98a3b9cba0a37..5d8a3a7d3d299abcb75a7a04c51fa2d474a2fbc2 100644
--- a/src/View/SolverParameters/translate.py
+++ b/src/View/SolverParameters/translate.py
@@ -20,7 +20,6 @@ yes_no = {
     _translate("SolverParameters", "No"): "No",
     _translate("SolverParameters", "Y"): "y",
     _translate("SolverParameters", "N"): "n",
-
 }
 
 names = {
diff --git a/src/View/ui/SolverParameters.ui b/src/View/ui/SolverParameters.ui
index abfb658d6b59deb486f831d2a2048c9b2fd1572d..2cffbcc589f77052f4fa2aee5eb9a0c6f07f8594 100644
--- a/src/View/ui/SolverParameters.ui
+++ b/src/View/ui/SolverParameters.ui
@@ -21,32 +21,8 @@
     <item row="0" column="0">
      <widget class="QTabWidget" name="tabWidget">
       <property name="currentIndex">
-       <number>0</number>
+       <number>-1</number>
       </property>
-      <widget class="QWidget" name="tab_mage">
-       <attribute name="title">
-        <string>Mage</string>
-       </attribute>
-       <layout class="QGridLayout" name="gridLayout_2">
-        <item row="0" column="0">
-         <widget class="QTableView" name="tableView_mage"/>
-        </item>
-       </layout>
-      </widget>
-      <widget class="QWidget" name="tab_rubarbe">
-       <attribute name="title">
-        <string>Rubarbe</string>
-       </attribute>
-       <layout class="QGridLayout" name="gridLayout_3">
-        <item row="0" column="0">
-         <widget class="QLabel" name="label">
-          <property name="text">
-           <string>Not implemented yet !</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
      </widget>
     </item>
    </layout>