diff --git a/pages/application/DecisionTree/DecisionTreeComponent.py b/pages/application/DecisionTree/DecisionTreeComponent.py
index 9f681bff56465035278eb70d42de08914a5a43f4..2612aef11c971b2cf4876134904064d2e97bafd1 100644
--- a/pages/application/DecisionTree/DecisionTreeComponent.py
+++ b/pages/application/DecisionTree/DecisionTreeComponent.py
@@ -25,9 +25,7 @@ class DecisionTreeComponent():
         self.uploaded_dt = UploadedDecisionTree(tree, 'SKL', filename_tree, maxdepth=tree.get_depth(), feature_names=feature_names, nb_classes=tree.n_classes_)
 
         #need a function that takes as input UploadedDecisionTree and gives DecisionTree
-        #self.dt = DecisionTree(from_dt=)
-        dt = open("pages/application/DecisionTree/meteo.dt", "r").read()
-        self.dt = DecisionTree(from_dt=dt)
+        self.dt = DecisionTree(from_dt=self.uploaded_dt.dump())
 
         dot_source = visualize(self.dt)
         self.network = [dbc.Row(dash_interactive_graphviz.DashInteractiveGraphviz(dot_source=dot_source, style = {"width": "60%",
diff --git a/pages/application/DecisionTree/utils/dtree.py b/pages/application/DecisionTree/utils/dtree.py
index d3bd0582ed1da896f96aaa8626d482cae0418343..5d52a233c4300ecb230b3e896b0c53893a2d8d1c 100644
--- a/pages/application/DecisionTree/utils/dtree.py
+++ b/pages/application/DecisionTree/utils/dtree.py
@@ -265,7 +265,6 @@ class DecisionTree():
 
         # computing the sets to hit
         to_hit = self.prepare_sets(inst, term)
-
         for type in xtype :
             if type == "AXp":
                 explanation_dic.update(self.enumerate_abductive(to_hit, enum, solver, htype, term))
diff --git a/pages/application/DecisionTree/utils/upload_tree.py b/pages/application/DecisionTree/utils/upload_tree.py
index 86c9430436ddd5a1fa96b2b9d45b32dd31dea34c..99ffa7a2fda20fd0460951c3233dbcb44861a5fa 100644
--- a/pages/application/DecisionTree/utils/upload_tree.py
+++ b/pages/application/DecisionTree/utils/upload_tree.py
@@ -221,86 +221,34 @@ class UploadedDecisionTree:
         
         domains = {f:[j for j in fvmap[f] if((fvmap[f][j][1]))] for f in fvmap}
         internal, terminal = walk_tree(self.tree, domains, [], [])
-        
-        if filename and maxdepth:
-            fname = os.path.splitext(os.path.basename(filename))[0]
-            dir_name = os.path.join(output, 'tree', fname)
-            dir_name = os.path.join(dir_name, f"{self.tool}{maxdepth}")
-        
-            if self.tool == 'ITI':
-                dir_name = os.path.join(dir_name, self.tool)
-        elif filename:
-            fname = os.path.splitext(os.path.basename(filename))[0]
-            dir_name = os.path.join(output, f'tree/{fname}/{self.tool}')
-        else:
-            fname = "tree"
-            dir_name = os.path.join(output)
-            
-        try:
-            os.stat(dir_name)
-        except:
-            os.makedirs(dir_name)         
+        #.dt
+        dt=""
+        dt += f"{self.n_nodes}\n{self.tree.id}\n"
+        dt += f"I {' '.join(dict.fromkeys([str(i) for i,_,_,_ in internal]))}\n"
+        dt += f"T {' '.join([str(i) for i,_ in terminal ])}\n"
+        for i,c in terminal:
+            dt += f"{i} T {c}\n"           
+        for i,f, j, n in internal: 
+            dt += f"{i} {f} {j} {n}\n"
 
-        fname = os.path.join(dir_name, fname+'.dt')
-        print("saving dtree to ", fname)
-        
-        with open(fname, 'w') as fp:
-            fp.write(f"{self.n_nodes}\n{self.tree.id}\n")
-            fp.write(f"I {' '.join(dict.fromkeys([str(i) for i,_,_,_ in internal]))}\n")
-            fp.write(f"T {' '.join([str(i) for i,_ in terminal ])}\n")
-            for i,c in terminal:
-                fp.write(f"{i} T {c}\n")            
-            for i,f, j, n in internal: 
-                fp.write(f"{i} {f} {j} {n}\n")
-
-        if filename and maxdepth:        
-            fname = os.path.splitext(os.path.basename(filename))[0]        
-            dir_name = os.path.join(output, 'map', fname)
-            if self.tool == "ITI": 
-                dir_name = os.path.join(dir_name, self.tool)
-            else:
-                dir_name = os.path.join(dir_name, f'{self.tool}{maxdepth}')
-        elif filename:
-            fname = os.path.splitext(os.path.basename(filename))[0]
-            dir_name = os.path.join(output, f'map/{fname}/{self.tool}')
-        else:
-            fname = "tree"
-            dir_name = os.path.join(output)
-            
-        try:
-            os.stat(dir_name)
-        except:
-            os.makedirs(dir_name)              
-            
-        fname = os.path.join(dir_name, fname+'.map')
-        print("saving dtree map to ", fname)
-        
-        with open(fname, 'w') as fp:    
-            fp.write("Categorical\n")
-            fp.write(f"{len(fvmap)}\n")
-            for f in fvmap:
-                for v in fvmap[f]:
-                    if (fvmap[f][v][1] == True):
-                        fp.write(f"{f} {v} ={fvmap[f][v][2]}\n")
-                    if (fvmap[f][v][1] == False) and self.tool == "ITI":
-                        fp.write(f"{f} {v} !={fvmap[f][v][2]}\n")
+        #.map
+        map=""
+        map+="Categorical\n"
+        map+=f"{len(fvmap)}\n"
+        for f in fvmap:
+            for v in fvmap[f]:
+                if (fvmap[f][v][1] == True):
+                    map+=f"{f} {v} ={fvmap[f][v][2]}\n"
+                if (fvmap[f][v][1] == False) and self.tool == "ITI":
+                    map+=f"{f} {v} !={fvmap[f][v][2]}\n"
         
-        if feat_names is not None:
-            if filename:
-                fname = os.path.splitext(os.path.basename(filename))[0]
-                fname = os.path.join(dir_name, fname+'.txt')
-            else:
-                fname = os.path.join(dir_name, 'map.txt')
-                
-            print("saving feature map to ", fname)
-            
-            with open(fname, 'w') as fp:
-                for i,fid in enumerate(feat_names):
-                    f=f'f{i}'
-                    fp.write(f'{fid}:{f},'+",".join([f'{fvmap[f][v][2]}:{v}' for v in fvmap[f] if(fvmap[f][v][1])])+'\n')
-        #            
-        print('Done')
-        # end dump fct
+            for i,fid in enumerate(feat_names):
+                f=f'f{i}'
+                map+f'{fid}:{f},'+",".join([f'{fvmap[f][v][2]}:{v}' for v in fvmap[f] if(fvmap[f][v][1])])+'\n'
+        #
+        print(dt)
+        print(map)            
+        return dt, map
 
     def build_tree(self, json_tree=None, feature_names=None):