diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py
index 186abbbbd9c93a05ceaa748d1a119e130c854f31..a87dad973a5bb6da078f1671481587049872a85b 100644
--- a/src/Solver/ASolver.py
+++ b/src/Solver/ASolver.py
@@ -67,6 +67,9 @@ class AbstractSolver(object):
         self._process = None
         self._output = None
 
+        # Last study running
+        self._study = None
+
     def __str__(self):
         return f"{self._name} : {self._type} : {self._description}"
 
diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py
index c53d5f754eadffc349b7f8897fb628d65fe54b60..61c8b26f5bd1b4935221b13d1cee48570252fd3e 100644
--- a/src/Solver/Mage.py
+++ b/src/Solver/Mage.py
@@ -105,18 +105,23 @@ class Mage(AbstractSolver):
         return l
 
     def input_param(self):
-        return "0.REP"
+        name = self._study.name
+        return f"{name}.REP"
 
     def log_file(self):
-        return "0.TRA"
+        name = self._study.name
+        return f"{name}.TRA"
 
     @timer
-    def _export_ST(self, study, repertory, qlog):
+    def _export_ST(self, study, repertory, qlog, name="0"):
         files = []
 
         if qlog is not None:
             qlog.put("Export ST file")
 
+        os.makedirs(os.path.join(repertory, "net"), exist_ok=True)
+        gra_file = f"{name}.GRA"
+
         # Write header
         edges = study.river.edges()
         edges = list(
@@ -131,8 +136,8 @@ class Mage(AbstractSolver):
             if edge._name == "":
                 name = f"Reach_{edge.id}"
 
-            with mage_file_open(os.path.join(repertory, f"{name}.ST"), "w+") as f:
-                files.append(f"{name}.ST")
+            with mage_file_open(os.path.join(repertory, "net", f"{name}.ST"), "w+") as f:
+                files.append(str(os.path.join("net", f"{name}.ST")))
 
                 cnt_num = 1
                 for profile in edge.reach.profiles:
@@ -149,7 +154,7 @@ class Mage(AbstractSolver):
                     sediment = ""
                     if profile.sl is not None:
                         if not any(filter(lambda f: ".GRA" in f, files)):
-                            files.append("0.GRA")
+                            files.append(gra_file)
 
                         nl = len(profile.sl)
                         sediment = f" {nl:>3}"
@@ -181,7 +186,7 @@ class Mage(AbstractSolver):
         return files
 
     @timer
-    def _export_BC(self, t, bounds, repertory, qlog):
+    def _export_BC(self, t, bounds, repertory, qlog, name="0"):
         files = []
 
         if len(bounds) == 0:
@@ -190,8 +195,8 @@ class Mage(AbstractSolver):
         if qlog is not None:
             qlog.put(f"Export {t} file")
 
-        with mage_file_open(os.path.join(repertory, f"0.{t}"), "w+") as f:
-            files.append(f"0.{t}")
+        with mage_file_open(os.path.join(repertory, f"{name}.{t}"), "w+") as f:
+            files.append(f"{name}.{t}")
 
             for bound in bounds:
                 name = f"{bound.node.id:3}".replace(" ", "x")
@@ -204,7 +209,7 @@ class Mage(AbstractSolver):
                     v0 = d[0]
                     v1 = d[1]
 
-                    if t in ["HYD", "QSO"]:
+                    if t in ["HYD", "QSO", "LIM"]:
                         v0 /= 60 # Convert first column to minute
 
                     f.write(f"{v0:10}{v1:10}\n")
@@ -212,7 +217,7 @@ class Mage(AbstractSolver):
         return files
 
     @timer
-    def _export_bound_cond(self, study, repertory, qlog):
+    def _export_bound_cond(self, study, repertory, qlog, name="0"):
         files = []
         lst = study.river.boundary_condition
 
@@ -232,22 +237,22 @@ class Mage(AbstractSolver):
                 elif bound.bctype == "SL":
                     QSO.append(bound)
 
-        files = files + self._export_BC("AVA", AVA, repertory,  qlog)
-        files = files + self._export_BC("HYD", HYD, repertory,  qlog)
-        files = files + self._export_BC("LIM", LIM, repertory,  qlog)
-        files = files + self._export_QSO(QSO, repertory,  qlog)
+        files = files + self._export_BC("AVA", AVA, repertory, qlog, name=name)
+        files = files + self._export_BC("HYD", HYD, repertory, qlog, name=name)
+        files = files + self._export_BC("LIM", LIM, repertory, qlog, name=name)
+        files = files + self._export_QSO(QSO, repertory, qlog, name=name)
 
         return files
 
     # @timer
-    # def _export_LC(self, lateral, repertory, qlog):
+    # def _export_LC(self, lateral, repertory, qlog, name="0"):
     #     files = []
 
     #     if qlog is not None:
     #         qlog.put(f"Export LAT file")
 
-    #     with mage_file_open(os.path.join(repertory, f"0.LAT"), "w+") as f:
-    #         files.append(f"0.LAT")
+    #     with mage_file_open(os.path.join(repertory, f"{name}.LAT"), "w+") as f:
+    #         files.append(f"{name}.LAT")
 
     #         name = f"{lateral.node.id:3}".replace(" ", "x")
     #         f.write(f"* {lateral.node.name} ({name}) {lateral.bctype}\n")
@@ -256,12 +261,12 @@ class Mage(AbstractSolver):
     #         f.write(f"*{header[0]:>9}|{header[1]:>10}\n")
 
     #         for d in lateral.data:
-    #             f.write(f"{d[0]:10.3f}{d[1]:10.3f}\n")
+    #             f.write(f"{d[0]:1{name}.3f}{d[1]:10.3f}\n")
 
     #     return files
 
     # @timer
-    # def _export_lateral_contrib(self, study, repertory, qlog):
+    # def _export_lateral_contrib(self, study, repertory, qlog, name="0"):
     #     files = []
     #     lst = study.river.lateral_contribution
 
@@ -272,15 +277,15 @@ class Mage(AbstractSolver):
     #     return files
 
     @timer
-    def _export_RUG(self, study, repertory, qlog):
+    def _export_RUG(self, study, repertory, qlog, name="0"):
         files = []
 
         if qlog is not None:
             qlog.put("Export RUG file")
 
         # Write header
-        with mage_file_open(os.path.join(repertory, "0.RUG"), "w+") as f:
-            files.append("0.RUG")
+        with mage_file_open(os.path.join(repertory, f"{name}.RUG"), "w+") as f:
+            files.append(f"{name}.RUG")
 
             edges = study.river.edges()
             edges = list(
@@ -313,14 +318,14 @@ class Mage(AbstractSolver):
         return files
 
     @timer
-    def _export_INI(self, study, repertory, qlog):
+    def _export_INI(self, study, repertory, qlog, name="0"):
         files = []
 
         if qlog is not None:
             qlog.put("Export INI file")
 
         # Write header
-        with mage_file_open(os.path.join(repertory, "0.INI"), "w+") as f:
+        with mage_file_open(os.path.join(repertory, f"{name}.INI"), "w+") as f:
             has_ini = False
             id = 1
             reachs = study.river.edges()
@@ -358,16 +363,16 @@ class Mage(AbstractSolver):
                 id += 1
 
         if has_ini:
-            files.append("0.INI")
+            files.append(f"{name}.INI")
         return files
 
     @timer
-    def _export_REP(self, study, repertory, files, qlog):
+    def _export_REP(self, study, repertory, files, qlog, name="0"):
         if qlog is not None:
             qlog.put("Export REP file")
 
         # Write header
-        with mage_file_open(os.path.join(repertory, f"0.REP"), "w+") as f:
+        with mage_file_open(os.path.join(repertory, f"{name}.REP"), "w+") as f:
             f.write("confirmation=non\n")
 
             for file in files:
@@ -377,8 +382,8 @@ class Mage(AbstractSolver):
                     f.write(f"{EXT} {file}\n")
 
             f.write("* OUTPUT\n")
-            f.write(f"TRA 0.TRA\n")
-            f.write(f"BIN 0.BIN\n")
+            f.write(f"TRA {name}.TRA\n")
+            f.write(f"BIN {name}.BIN\n")
 
             for file in files:
                 EXT = file.split('.')[1]
@@ -389,7 +394,10 @@ class Mage(AbstractSolver):
 
     @timer
     def export(self, study, repertory, qlog = None):
-        self._export_ST(study, repertory, qlog)
+        self._study = study
+        name = study.name.replace(" ", "_")
+
+        self._export_ST(study, repertory, qlog, name = name)
 
         return True
 
@@ -397,11 +405,11 @@ class Mage(AbstractSolver):
     # RESULTS #
     ###########
 
-    def read_bin(self, study, repertory, results, qlog = None):
+    def read_bin(self, study, repertory, results, qlog = None, name="0"):
         return
 
     @timer
-    def results(self, study, repertory, qlog = None):
+    def results(self, study, repertory, qlog = None, name="0"):
         results = Results(study = study)
 
         self.read_bin(study, repertory, results, qlog)
@@ -462,14 +470,14 @@ class Mage8(Mage):
         return l
 
     @timer
-    def _export_PAR(self, study, repertory, qlog = None):
+    def _export_PAR(self, study, repertory, qlog = None, name = "0"):
         files = []
 
         if qlog is not None:
             qlog.put("Export PAR file")
 
-        with mage_file_open(os.path.join(repertory, "0.PAR"), "w+") as f:
-            files.append("0.PAR")
+        with mage_file_open(os.path.join(repertory, f"{name}.PAR"), "w+") as f:
+            files.append(f"{name}.PAR")
 
             params = study.river.get_params(self.type).parameters
             for p in params:
@@ -486,14 +494,14 @@ class Mage8(Mage):
         return files
 
     @timer
-    def _export_NET(self, study, repertory, qlog = None):
+    def _export_NET(self, study, repertory, qlog = None, name="0"):
         files = []
 
         if qlog is not None:
             qlog.put("Export NET file")
 
-        with mage_file_open(os.path.join(repertory, "0.NET"), "w+") as f:
-            files.append("0.NET")
+        with mage_file_open(os.path.join(repertory, f"{name}.NET"), "w+") as f:
+            files.append(f"{name}.NET")
 
             edges = study.river.edges()
             edges = list(
@@ -512,14 +520,14 @@ class Mage8(Mage):
 
                 n1 = f"{e.node1.id:3}".replace(" ", "x")
                 n2 = f"{e.node2.id:3}".replace(" ", "x")
-                file = name + ".ST"
+                file = os.path.join("net", name + ".ST")
 
                 f.write(f"{id} {n1} {n2} {file}\n")
 
         return files
 
     @timer
-    def _export_QSO(self, bounds, repertory, qlog):
+    def _export_QSO(self, bounds, repertory, qlog, name="0"):
         files = []
 
         if len(bounds) == 0:
@@ -528,8 +536,8 @@ class Mage8(Mage):
         if qlog is not None:
             qlog.put(f"Export QSO file")
 
-        with mage_file_open(os.path.join(repertory, f"0.QSO"), "w+") as f:
-            files.append(f"0.QSO")
+        with mage_file_open(os.path.join(repertory, f"{name}.QSO"), "w+") as f:
+            files.append(f"{name}.QSO")
 
             for bound in bounds:
                 name = f"{bound.node.id:3}".replace(" ", "x")
@@ -545,16 +553,19 @@ class Mage8(Mage):
 
 
     @timer
-    def export(self, study, repertory, qlog = None):
+    def export(self, study, repertory, qlog = None, name="0"):
+        self._study = study
+        name = study.name.replace(" ", "_")
+
         files = []
 
-        files = self._export_ST(study, repertory, qlog)
-        files = files + self._export_PAR(study, repertory, qlog)
-        files = files + self._export_NET(study, repertory, qlog)
-        files = files + self._export_bound_cond(study, repertory, qlog)
-        files = files + self._export_RUG(study, repertory, qlog)
-        files = files + self._export_INI(study, repertory, qlog)
-        self._export_REP(study, repertory, files, qlog)
+        files = self._export_ST(study, repertory, qlog, name=name)
+        files = files + self._export_PAR(study, repertory, qlog, name=name)
+        files = files + self._export_NET(study, repertory, qlog, name=name)
+        files = files + self._export_bound_cond(study, repertory, qlog, name=name)
+        files = files + self._export_RUG(study, repertory, qlog, name=name)
+        files = files + self._export_INI(study, repertory, qlog, name=name)
+        self._export_REP(study, repertory, files, qlog, name=name)
 
         return True
 
@@ -563,10 +574,10 @@ class Mage8(Mage):
     ###########
 
     @timer
-    def read_bin(self, study, repertory, results, qlog = None):
+    def read_bin(self, study, repertory, results, qlog = None, name="0"):
         logger.info(f"read_bin: Start ...")
 
-        with mage_file_open(os.path.join(repertory, f"0.BIN"), "r") as f:
+        with mage_file_open(os.path.join(repertory, f"{name}.BIN"), "r") as f:
             newline = lambda: np.fromfile(f, dtype=np.int32, count=1)
             endline = lambda: np.fromfile(f, dtype=np.int32, count=1)
 
@@ -685,13 +696,13 @@ class Mage8(Mage):
             logger.info(f"read_bin: ... end with {len(ts)} timestamp read")
 
     @timer
-    def read_gra(self, study, repertory, results, qlog = None):
+    def read_gra(self, study, repertory, results, qlog = None, name="0"):
         if not study.river.has_sediment():
             return
 
         logger.info(f"read_gra: Start ...")
 
-        with mage_file_open(os.path.join(repertory, f"0.GRA"), "r") as f:
+        with mage_file_open(os.path.join(repertory, f"{name}.GRA"), "r") as f:
             newline = lambda: np.fromfile(f, dtype=np.int32, count=1)
             endline = lambda: np.fromfile(f, dtype=np.int32, count=1)
 
@@ -838,7 +849,10 @@ class Mage8(Mage):
 
     @timer
     def results(self, study, repertory, qlog = None):
-        results = super(Mage8, self).results(study, repertory, qlog)
-        self.read_gra(study, repertory, results, qlog)
+        self._study = study
+        name = study.name.replace(" ", "_")
+
+        results = super(Mage8, self).results(study, repertory, qlog, name = name)
+        self.read_gra(study, repertory, results, qlog, name = name)
 
         return results