diff --git a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py
index d8bab3263ec224fc82a1fae8585d2cb116049ea3..f21d1591ddf0b156c3c8072efdf569d8cd93b5b6 100644
--- a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py
+++ b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py
@@ -62,7 +62,7 @@ class InitialConditionsAdisTS(SQLSubModel):
     @classmethod
     def _db_create(cls, execute):
         execute("""
-                  CREATE TABLE initial_conditions(
+                  CREATE TABLE initial_conditions_adists(
                     id INTEGER NOT NULL PRIMARY KEY,
                     pollutant INTEGER NOT NULL,
                     name TEXT NOT NULL,
@@ -93,9 +93,11 @@ class InitialConditionsAdisTS(SQLSubModel):
         table = execute(
             "SELECT id, pollutant, name, concentration, eg, em, ed, " +
             "enabled " +
-            "FROM initial_conditions"
+            "FROM initial_conditions_adists"
         )
 
+        print("db load ic adists : ", table)
+
         if table is not None:
             for row in table:
                 IC_id = row[0]
@@ -113,6 +115,7 @@ class InitialConditionsAdisTS(SQLSubModel):
                     status=data['status']
                 )
 
+                IC.pollutant = pollutant
                 IC.concentration = concentration
                 IC.eg = eg
                 IC.em = em
@@ -127,31 +130,31 @@ class InitialConditionsAdisTS(SQLSubModel):
         return new
 
     def _db_save(self, execute, data=None):
-        execute(f"DELETE FROM initial_conditions WHERE id = {self.id}")
+        execute(f"DELETE FROM initial_conditions_adists WHERE id = {self.id}")
 
         pollutant = -1
         if self.pollutant is not None:
             pollutant = self.pollutant
 
-        concentration = -1
+        concentration = -1.
         if self.concentration is not None:
             concentration = self.concentration
 
-        eg = -1
+        eg = -1.
         if self.eg is not None:
             eg = self.eg
 
-        em = -1
+        em = -1.
         if self.em is not None:
             em = self.em
 
-        ed = -1
+        ed = -1.
         if self.ed is not None:
             ed = self.ed
 
         sql = (
             "INSERT INTO " +
-            "initial_conditions(" +
+            "initial_conditions_adists(" +
             "id, pollutant, name, concentration, " +
             "eg, em, ed, enabled" +
             ") " +
@@ -160,6 +163,7 @@ class InitialConditionsAdisTS(SQLSubModel):
             f"{concentration}, {eg}, {em}, {ed}, {self._enabled}" +
             ")"
         )
+
         execute(sql)
 
         data['ic_default_id'] = self.id
diff --git a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSList.py b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSList.py
index e45aba048da24c1e082d114572a5a148532c68fc..6430f738e6534cb73612e5559712f545e02c7c4e 100644
--- a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSList.py
+++ b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSList.py
@@ -41,6 +41,7 @@ class InitialConditionsAdisTSList(PamhyrModelList):
         return new
 
     def _db_save(self, execute, data=None):
+        print("db save ic adists")
         execute("DELETE FROM initial_conditions")
 
         if data is None:
diff --git a/src/Model/River.py b/src/Model/River.py
index 420a8c709617030a439e370efbc9ad238e9b944c..96dfb6b01260977e40c9749ebe53a3a8df051986 100644
--- a/src/Model/River.py
+++ b/src/Model/River.py
@@ -234,6 +234,7 @@ class River(Graph, SQLSubModel):
         REPLineList,
         OutputKpAdistsList,
         PollutantsList,
+        InitialConditionsAdisTSList,
     ]
 
     def __init__(self, status=None):
diff --git a/src/View/InitialConditions/UndoCommand.py b/src/View/InitialConditions/UndoCommand.py
index fecb6c6d4a0c2f7341047889ee424e4b61876e39..4a87c87932d2f8c17048ba2aea247d30665a67ce 100644
--- a/src/View/InitialConditions/UndoCommand.py
+++ b/src/View/InitialConditions/UndoCommand.py
@@ -138,7 +138,6 @@ class MoveCommand(QUndoCommand):
         else:
             self._ics.move_down(self._i)
 
-
 class InsertCommand(QUndoCommand):
     def __init__(self, ics, row, ic):
         QUndoCommand.__init__(self)
@@ -155,7 +154,6 @@ class InsertCommand(QUndoCommand):
         for ic in self._ic:
             self._ics.insert(self._row, ic)
 
-
 class DuplicateCommand(QUndoCommand):
     def __init__(self, ics, rows, ic):
         QUndoCommand.__init__(self)
diff --git a/src/View/InitialConditionsAdisTS/TableDefault.py b/src/View/InitialConditionsAdisTS/TableDefault.py
index 03c90b09cf9d46c36e634817cfaaa19ea37172d1..67363647d1faceecf3e063c96f17bf1d857527c3 100644
--- a/src/View/InitialConditionsAdisTS/TableDefault.py
+++ b/src/View/InitialConditionsAdisTS/TableDefault.py
@@ -36,9 +36,7 @@ from PyQt5.QtWidgets import (
 from View.Tools.PamhyrTable import PamhyrTableModel
 
 from View.InitialConditionsAdisTS.UndoCommand import (
-    SetCommand, AddCommand, DelCommand,
-    SortCommand, MoveCommand, InsertCommand,
-    DuplicateCommand, GenerateCommand,
+    SetCommand,
 )
 
 logger = logging.getLogger()
@@ -92,7 +90,7 @@ class InitialConditionTableDefaultModel(PamhyrTableModel):
             if self._headers[column] is not None:
                 self._undo.push(
                     SetCommand(
-                        self._lst, row, self._headers[column], value
+                        self._data, row, self._headers[column], value
                     )
                 )
         except Exception as e:
@@ -102,36 +100,6 @@ class InitialConditionTableDefaultModel(PamhyrTableModel):
         self.dataChanged.emit(index, index)
         return True
 
-    def paste(self, index, header, data):
-        if len(header) != 0:
-            logger.error("Unexpected header in IC past data")
-            return
-
-        if len(data) == 0:
-            logger.error("Empty data")
-            return
-
-        if len(data[0]) != 3:
-            logger.error(f"Unexpected data size: [{data[0]}, ...]")
-            return
-
-        self.layoutAboutToBeChanged.emit()
-
-        self._undo.push(
-            InsertCommand(
-                self._lst, index,
-                list(
-                    map(
-                        lambda d: self._lst.new_from_data(*d),
-                        data
-                    )
-                )
-            )
-        )
-
-        self.layoutAboutToBeChanged.emit()
-        self.layoutChanged.emit()
-
     def undo(self):
         self._undo.undo()
         self.layoutChanged.emit()
@@ -140,10 +108,3 @@ class InitialConditionTableDefaultModel(PamhyrTableModel):
         self._undo.redo()
         self.layoutChanged.emit()
 
-    def generate(self, generator, param):
-        self._undo.push(
-            GenerateCommand(
-                self._lst, generator, param
-            )
-        )
-        self.layoutChanged.emit()
diff --git a/src/View/InitialConditionsAdisTS/UndoCommand.py b/src/View/InitialConditionsAdisTS/UndoCommand.py
index fecb6c6d4a0c2f7341047889ee424e4b61876e39..444a199565db1cca2207a9fd37e35c8a38aa330b 100644
--- a/src/View/InitialConditionsAdisTS/UndoCommand.py
+++ b/src/View/InitialConditionsAdisTS/UndoCommand.py
@@ -23,170 +23,57 @@ from PyQt5.QtWidgets import (
     QMessageBox, QUndoCommand, QUndoStack,
 )
 
-from Model.InitialConditions.InitialConditions import InitialConditions
-from Model.InitialConditions.InitialConditionsDict import InitialConditionsDict
+from Model.InitialConditionsAdisTS.InitialConditionsAdisTS import InitialConditionsAdisTS
+from Model.InitialConditionsAdisTS.InitialConditionsAdisTSList import InitialConditionsAdisTSList
 
 
 class SetCommand(QUndoCommand):
-    def __init__(self, ics, row, column, new_value):
+    def __init__(self, data, row, column, new_value):
         QUndoCommand.__init__(self)
 
-        self._ics = ics
+        self._data = data
         self._row = row
         self._column = column
-        self._old = self._ics.get(self._row)[column]
+
+        if self._column == "name":
+            self._old = self._data[self._row].name
+        elif self._column == "concentration":
+            print(self._column, self._data[self._row].concentration, new_value)
+            self._old = self._data[self._row].concentration
+        elif self._column == "eg":
+            self._old = self._data[self._row].eg
+        elif self._column == "em":
+            self._old = self._data[self._row].em
+        elif self._column == "ed":
+            self._old = self._data[self._row].ed
 
         _type = float
-        if column == "name" or column == "comment":
+        if column == "name":
             _type = str
 
         self._new = _type(new_value)
 
     def undo(self):
-        self._ics.get(self._row)[self._column] = self._old
-
-    def redo(self):
-        self._ics.get(self._row)[self._column] = self._new
-
-
-class AddCommand(QUndoCommand):
-    def __init__(self, ics, index):
-        QUndoCommand.__init__(self)
-
-        self._ics = ics
-        self._index = index
-        self._new = None
-
-    def undo(self):
-        self._ics.delete_i([self._index])
-
-    def redo(self):
-        if self._new is None:
-            self._new = self._ics.new(self._index)
-        else:
-            self._ics.insert(self._index, self._new)
-
-
-class DelCommand(QUndoCommand):
-    def __init__(self, ics, rows):
-        QUndoCommand.__init__(self)
-
-        self._ics = ics
-        self._rows = rows
-
-        self._ic = []
-        for row in rows:
-            self._ic.append((row, self._ics.get(row)))
-        self._ic.sort()
-
-    def undo(self):
-        for row, el in self._ic:
-            self._ics.insert(row, el)
+        if self._column == "name":
+            self._data[self._row].name = self._old
+        elif self._column == "concentration":
+            self._data[self._row].concentration = self._old
+        elif self._column == "eg":
+            self._data[self._row].eg = self._old
+        elif self._column == "em":
+            self._data[self._row].em = self._old
+        elif self._column == "ed":
+            self._data[self._row].ed = self._old
 
     def redo(self):
-        self._ics.delete_i(self._rows)
-
-
-class SortCommand(QUndoCommand):
-    def __init__(self, ics, _reverse):
-        QUndoCommand.__init__(self)
-
-        self._ics = ics
-        self._reverse = _reverse
-
-        self._old = self._ics.data
-        self._indexes = None
-
-    def undo(self):
-        ll = self._ics.data
-        self._ics.sort(
-            key=lambda x: self._indexes[ll.index(x)]
-        )
-
-    def redo(self):
-        self._ics.sort(
-            reverse=self._reverse,
-            key=lambda x: x["kp"]
-        )
-        if self._indexes is None:
-            self._indexes = list(
-                map(
-                    lambda p: self._old.index(p),
-                    self._ics.data
-                )
-            )
-            self._old = None
-
-
-class MoveCommand(QUndoCommand):
-    def __init__(self, ics, up, i):
-        QUndoCommand.__init__(self)
+        if self._column == "name":
+            self._data[self._row].name = self._new
+        elif self._column == "concentration":
+            self._data[self._row].concentration = self._new
+        elif self._column == "eg":
+            self._data[self._row].eg = self._new
+        elif self._column == "em":
+            self._data[self._row].em = self._new
+        elif self._column == "ed":
+            self._data[self._row].ed = self._new
 
-        self._ics = ics
-        self._up = up == "up"
-        self._i = i
-
-    def undo(self):
-        if self._up:
-            self._ics.move_up(self._i)
-        else:
-            self._ics.move_down(self._i)
-
-    def redo(self):
-        if self._up:
-            self._ics.move_up(self._i)
-        else:
-            self._ics.move_down(self._i)
-
-
-class InsertCommand(QUndoCommand):
-    def __init__(self, ics, row, ic):
-        QUndoCommand.__init__(self)
-
-        self._ics = ics
-        self._row = row
-        self._ic = deepcopy(ic)
-        self._ic.reverse()
-
-    def undo(self):
-        self._ics.delete(self._ic)
-
-    def redo(self):
-        for ic in self._ic:
-            self._ics.insert(self._row, ic)
-
-
-class DuplicateCommand(QUndoCommand):
-    def __init__(self, ics, rows, ic):
-        QUndoCommand.__init__(self)
-
-        self._ics = ics
-        self._rows = rows
-        self._ic = deepcopy(ic)
-        self._ic.reverse()
-
-    def undo(self):
-        self._ics.delete(self._ic)
-
-    def redo(self):
-        for ic in self._ics:
-            self._ics.insert(self._rows[0], ic)
-
-
-class GenerateCommand(QUndoCommand):
-    def __init__(self, ics, generator, param):
-        QUndoCommand.__init__(self)
-
-        self._ics = ics
-        self._param = param
-        self._copy = self._ics.data
-        self._generator = generator
-
-    def undo(self):
-        self._ics.data = self._copy
-
-    def redo(self):
-        if self._generator == "growing":
-            self._ics.generate_growing_constante_height(self._param)
-        elif self._generator == "discharge":
-            self._ics.generate_discharge(self._param)
diff --git a/src/View/InitialConditionsAdisTS/Window.py b/src/View/InitialConditionsAdisTS/Window.py
index 93630c45e17ce9680a51994434ad2dae95f7f4de..2880915a8108ae3ab6bd98586eb3261430bc71c7 100644
--- a/src/View/InitialConditionsAdisTS/Window.py
+++ b/src/View/InitialConditionsAdisTS/Window.py
@@ -43,9 +43,7 @@ from PyQt5.QtWidgets import (
 from Modules import Modules
 
 from View.InitialConditionsAdisTS.UndoCommand import (
-    SetCommand, AddCommand, DelCommand,
-    SortCommand, MoveCommand, InsertCommand,
-    DuplicateCommand,
+    SetCommand,
 )
 
 from View.InitialConditionsAdisTS.TableDefault import (
@@ -68,7 +66,6 @@ class InitialConditionsAdisTSWindow(PamhyrWindow):
     def __init__(self, data=None, study=None, config=None, parent=None):
         self._data = []
         self._data.append(data)
-        #print(self._data.name, self._data.concentration, self._data.eg, self._data.em, self._data.ed)
         trad = IcAdisTSTranslate()
 
         name = (
@@ -108,7 +105,6 @@ class InitialConditionsAdisTSWindow(PamhyrWindow):
         table.setModel(self._table)
         table.setSelectionBehavior(QAbstractItemView.SelectRows)
         table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
-        #table.verticalHeader()
         table.setAlternatingRowColors(True)
 
     def index_selected_row(self):
diff --git a/src/View/Pollutants/Window.py b/src/View/Pollutants/Window.py
index 8ad0deb11f3325dfff413222f8467708e3f01d17..93b091474dfcb411655d67b22d713af58599f473 100644
--- a/src/View/Pollutants/Window.py
+++ b/src/View/Pollutants/Window.py
@@ -194,6 +194,7 @@ class PollutantsWindow(PamhyrWindow):
 
         for row in rows:
             pollutant_id = self._pollutants_lst.get(row).id
+
             ics_adists = next(filter(lambda x: x.pollutant == pollutant_id,
                                      self._study.river.initial_conditions_adists.lst))
 
diff --git a/tests_cases/Enlargement/Enlargement.pamhyr b/tests_cases/Enlargement/Enlargement.pamhyr
index 8a4f35c6a2cdb182b55fbfeb16d26ec8cf662e67..23c74b0ec7ff7612c35329d1b7d396a763c65546 100644
Binary files a/tests_cases/Enlargement/Enlargement.pamhyr and b/tests_cases/Enlargement/Enlargement.pamhyr differ