diff --git a/src/Model/Results/Results.py b/src/Model/Results/Results.py
index 7c9ed54c9a1028d61a1ab0c22012cd69b26e3114..b8dff0ccd496da6e5d514fbb7db0269094fffb47 100644
--- a/src/Model/Results/Results.py
+++ b/src/Model/Results/Results.py
@@ -26,8 +26,13 @@ logger = logging.getLogger()
 
 
 class Results(object):
-    def __init__(self, study=None):
+    def __init__(self, study=None, solver=None,
+                 repertory="", name="0"):
         self._study = study
+        self._solver = solver
+        self._repertory = repertory
+        self._name = name
+
         self._river = River(self._study)
 
         self._meta_data = {
@@ -53,3 +58,10 @@ class Results(object):
 
     def get(self, key):
         return self._meta_data[key]
+
+    def reload(self):
+        return self._solver.results(
+            self._study,
+            self._repertory,
+            qlog=None,
+        )
diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py
index f6346b66bf64a3b0d31cbb8ea77d59869a0632e1..f0df6e951fce5f29ce357aa328d7a2018bc8fd08 100644
--- a/src/Solver/Mage.py
+++ b/src/Solver/Mage.py
@@ -438,8 +438,12 @@ class Mage(AbstractSolver):
 
     @timer
     def results(self, study, repertory, qlog=None, name="0"):
-        results = Results(study=study)
-
+        results = Results(
+            study=study,
+            solver=self,
+            repertory=repertory,
+            name=name,
+        )
         self.read_bin(study, repertory, results, qlog, name=name)
 
         return results
diff --git a/src/View/Results/PlotAC.py b/src/View/Results/PlotAC.py
index 075e879f9126aaf4ce33b2bed592649d05078fd0..345b5824afdf21a46703197dbefebbf205949a19 100644
--- a/src/View/Results/PlotAC.py
+++ b/src/View/Results/PlotAC.py
@@ -46,6 +46,11 @@ class PlotAC(PamhyrPlot):
     def results(self):
         return self.data
 
+    @results.setter
+    def results(self, results):
+        self.data = results
+        self._current_timestamp = max(results.get("timestamps"))
+
     @timer
     def draw(self, highlight=None):
         self.canvas.axes.cla()
diff --git a/src/View/Results/PlotH.py b/src/View/Results/PlotH.py
index dd5a332b9cadf377f73cd5a25625735b760a4b06..f4f38e7c1d583b55eda4c9c7c7721c3376fef039 100644
--- a/src/View/Results/PlotH.py
+++ b/src/View/Results/PlotH.py
@@ -55,6 +55,11 @@ class PlotH(PamhyrPlot):
     def results(self):
         return self.data
 
+    @results.setter
+    def results(self, results):
+        self.data = results
+        self._current_timestamp = max(results.get("timestamps"))
+
     @timer
     def draw(self, highlight=None):
         self.canvas.axes.cla()
diff --git a/src/View/Results/PlotKPC.py b/src/View/Results/PlotKPC.py
index 3dd789a2f1ef79707f3e61748b864ddd5d8812cf..827ca104e1905503afc4024cbb0ba411cd66f660 100644
--- a/src/View/Results/PlotKPC.py
+++ b/src/View/Results/PlotKPC.py
@@ -46,6 +46,11 @@ class PlotKPC(PamhyrPlot):
     def results(self):
         return self.data
 
+    @results.setter
+    def results(self, results):
+        self.data = results
+        self._current_timestamp = max(results.get("timestamps"))
+
     @timer
     def draw(self, highlight=None):
         self.canvas.axes.cla()
diff --git a/src/View/Results/PlotSedProfile.py b/src/View/Results/PlotSedProfile.py
index d16fb0b87a039ec43b9235874e55866e784f1ff8..8d8f7b9137f3b915b439aab34e8d6293a11e54e5 100644
--- a/src/View/Results/PlotSedProfile.py
+++ b/src/View/Results/PlotSedProfile.py
@@ -34,6 +34,16 @@ class PlotSedProfile(PamhyrPlot):
         self._current_reach_id = reach_id
         self._current_profile_id = profile_id
 
+    @property
+    def results(self):
+        return self.data
+
+    @results.setter
+    def results(self, results):
+        self.data = results
+        self._results = results
+        self._current_timestamp = max(results.get("timestamps"))
+
     def get_zsl(self, profile):
         x = profile.geometry.get_station()
         z = profile.geometry.z()
diff --git a/src/View/Results/PlotSedReach.py b/src/View/Results/PlotSedReach.py
index 5cdc4ad7b0221dc4e4e8c51df93d02351e5e2783..e404f09cd5ac1059e1ae1446c6ec5d7ce4088227 100644
--- a/src/View/Results/PlotSedReach.py
+++ b/src/View/Results/PlotSedReach.py
@@ -34,6 +34,16 @@ class PlotSedReach(PamhyrPlot):
         self._current_reach_id = reach_id
         self._current_profile_id = profile_id
 
+    @property
+    def results(self):
+        return self.data
+
+    @results.setter
+    def results(self, results):
+        self.data = results
+        self._results = results
+        self._current_timestamp = max(results.get("timestamps"))
+
     # DEPRECATED version of sediment layser display
     # def _get_zsl(self, reach):
     #     kp = reach.geometry.get_kp()
diff --git a/src/View/Results/PlotXY.py b/src/View/Results/PlotXY.py
index 5a513322f0f8b23bcb2863ac35fbbb12344aab01..78d4c66b47582f71d9da8ad21f7580a492a07cdd 100644
--- a/src/View/Results/PlotXY.py
+++ b/src/View/Results/PlotXY.py
@@ -57,6 +57,11 @@ class PlotXY(PamhyrPlot):
     def results(self):
         return self.data
 
+    @results.setter
+    def results(self, results):
+        self.data = results
+        self._current_timestamp = max(results.get("timestamps"))
+
     @timer
     def draw(self, highlight=None):
         self.canvas.axes.cla()
diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py
index 15167fd351a05463882ab26a8d54a76418c6b566..d076fd42b0760da6e4091355a6919ee9da29221f 100644
--- a/src/View/Results/Window.py
+++ b/src/View/Results/Window.py
@@ -75,8 +75,7 @@ class ResultsWindow(PamhyrWindow):
         name = (
             self._pamhyr_name + " - "
             + study.name + " - "
-            + self._solver.name + " - "
-            + self._results.date
+            + self._solver.name
         )
 
         super(ResultsWindow, self).__init__(
@@ -272,6 +271,16 @@ class ResultsWindow(PamhyrWindow):
         self._status_label.setText(txt)
 
     def setup_connections(self):
+        # Action
+        actions = {
+            "action_reload": self._reload,
+        }
+
+        for action in actions:
+            self.find(QAction, action).triggered.connect(
+                actions[action]
+            )
+
         fun = {
             "reach": self._set_current_reach,
             "profile": self._set_current_profile,
@@ -384,12 +393,43 @@ class ResultsWindow(PamhyrWindow):
         pid = self._slider_profile.value()
         self.update(profile_id=pid)
 
-        return
-
     def _set_current_timestamp(self):
         timestamp = self._timestamps[self._slider_time.value()]
         self.update(timestamp=timestamp)
 
+    def _reload_plots(self):
+        self.plot_xy.results = self._results
+        self.plot_ac.results = self._results
+        self.plot_kpc.results = self._results
+        self.plot_h.results = self._results
+
+        if self._study.river.has_sediment():
+            self.plot_sed_reach.results = self._results
+            self.plot_sed_profile.results = self._results
+
+        self.plot_xy.draw()
+        self.plot_ac.draw()
+        self.plot_kpc.draw()
+        self.plot_h.draw()
+
+        if self._study.river.has_sediment():
+            self.plot_sed_reach.draw()
+            self.plot_sed_profile.draw()
+
+    def _reload_slider(self):
+        self._slider_time = self.find(QSlider, f"horizontalSlider_time")
+        self._slider_time.setMaximum(len(self._timestamps) - 1)
+        self._slider_time.setValue(len(self._timestamps) - 1)
+
+    def _reload(self):
+        logger.debug("Reload results...")
+        self._results = self._results.reload()
+
+        self._timestamps = sorted(list(self._results.get("timestamps")))
+
+        self._reload_plots()
+        self._reload_slider()
+
     def _copy(self):
         logger.info("TODO: copy")
 
diff --git a/src/View/Tools/Plot/APlot.py b/src/View/Tools/Plot/APlot.py
index 3fe98fbc5bfa9561b3cac0ed53dfa6019c76774f..439ae2e9b03a741dc6407a5ec35e4e675de1b6f5 100644
--- a/src/View/Tools/Plot/APlot.py
+++ b/src/View/Tools/Plot/APlot.py
@@ -30,6 +30,10 @@ class APlot(object):
     def data(self):
         return self._data
 
+    @data.setter
+    def data(self, data):
+        self._data = data
+
     def draw(self):
         """Draw plot
 
diff --git a/src/View/ui/Results.ui b/src/View/ui/Results.ui
index 5b7977242bbdeaec70fa2548687695f6ad45e888..bb8aaae66b4ca6adef85cb922eac1ec107e2471f 100644
--- a/src/View/ui/Results.ui
+++ b/src/View/ui/Results.ui
@@ -140,6 +140,36 @@
    </property>
   </widget>
   <widget class="QStatusBar" name="statusbar"/>
+  <widget class="QToolBar" name="toolBar">
+   <property name="windowTitle">
+    <string>toolBar</string>
+   </property>
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
+   </attribute>
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+   <addaction name="action_add"/>
+   <addaction name="action_reload"/>
+  </widget>
+  <action name="action_add">
+   <property name="icon">
+    <iconset>
+     <normaloff>ressources/gtk-add.png</normaloff>ressources/gtk-add.png</iconset>
+   </property>
+   <property name="text">
+    <string>Add</string>
+   </property>
+   <property name="toolTip">
+    <string>Add custom visualization</string>
+   </property>
+  </action>
+  <action name="action_reload">
+   <property name="text">
+    <string>Reload</string>
+   </property>
+  </action>
  </widget>
  <resources/>
  <connections/>