diff --git a/orthofinder/scripts/get_orthologues.py b/orthofinder/scripts/get_orthologues.py
index 310033f2084c8b44e8802ed287a2f3dc4e6107a5..a12b2b3510120e7e0ea16ad62d3fc7ca5c6a3920 100755
--- a/orthofinder/scripts/get_orthologues.py
+++ b/orthofinder/scripts/get_orthologues.py
@@ -352,19 +352,6 @@ class DendroBLASTTrees(object):
             nTaxa = len(ogs[iog])
             cmds.append([" ".join(["fastme", "-i", self.distPat % iog, "-o", self.treesPatIDs % iog, "-w", "O"] + (["-s"] if nTaxa < 1000 else []))])
         return cmds
-
-    def RenameTreeTaxa(self, treeFN, newTreeFilename, idsMap, qFixNegatives=False):     
-#        with open(treeFN, "rb") as inputTree: treeString = inputTree.next()
-        try:
-            t = tree.Tree(treeFN)
-            for node in t.get_leaves():
-                node.name = idsMap[node.name]
-            if qFixNegatives:
-                for n in t.traverse():
-                    if n.dist < 0.0: n.dist = 0.0
-            t.write(outfile = newTreeFilename, format=4)  
-        except:
-            pass
         
     def RunAnalysis(self):
         ogs, ogMatrices_partial = self.GetOGMatrices()
@@ -378,10 +365,8 @@ class DendroBLASTTrees(object):
         util.RunParallelOrderedCommandLists(self.nProcesses, [[cmd_spTree]] + cmds_geneTrees, qHideStdout = True)
         seqDict = self.ogSet.Spec_SeqDict()
         for iog in xrange(len(self.ogSet.OGs())):
-            self.RenameTreeTaxa(self.treesPatIDs % iog, self.treesPat % iog, seqDict, qFixNegatives=True)
-        self.RenameTreeTaxa(spTreeFN_ids, self.workingDir + "SpeciesTree_unrooted.txt", self.ogSet.SpeciesDict(), qFixNegatives=True)       
-        #spTreeFN_ids = RunAstral(self.ogSet, self.treesPatIDs, self.workingDir)   
-        #self.RenameTreeTaxa(spTreeFN_ids, self.workingDir + "SpeciesTree_astral_unrooted.txt", self.ogSet.SpeciesDict(), qFixNegatives=True)     
+            util.RenameTreeTaxa(self.treesPatIDs % iog, self.treesPat % iog, seqDict, qFixNegatives=True)
+#        util.RenameTreeTaxa(spTreeFN_ids, self.workingDir + "SpeciesTree_unrooted.txt", self.ogSet.SpeciesDict(), qFixNegatives=True)        
         return len(ogs), D, spPairs, spTreeFN_ids
 
 # ==============================================================================================================================      
@@ -535,14 +520,11 @@ def GetResultsFilesString(rootedSpeciesTreeFN):
 
 def CleanWorkingDir(dendroBlast):
     dendroBlast.DeleteBlastMatrices()
-    dirs = ['Distances/', "matrices_orthologues/", "Trees_ids_arbitraryRoot/", "SpeciesTree_unrooted.txt"]
+    dirs = ['Distances/', "matrices_orthologues/", "Trees_ids_arbitraryRoot/"]
     for d in dirs:
         dFull = dendroBlast.workingDir + d
         if os.path.exists(dFull): 
-            if dFull[-1] == "/":
-                shutil.rmtree(dFull)
-            else:
-                os.remove(dFull)
+            shutil.rmtree(dFull)
             
 def GetOrthologues(orthofinderWorkingDir, orthofinderResultsDir, clustersFilename_pairs, nProcesses):
     ogSet = OrthoGroupsSet(orthofinderWorkingDir, clustersFilename_pairs, idExtractor = util.FirstWordExtractor)
@@ -588,12 +570,16 @@ def GetOrthologues(orthofinderWorkingDir, orthofinderResultsDir, clustersFilenam
             resultsDir_new = resultsDir + "Orthologues/"
             resultsSpeciesTrees.append(resultsDir + "SpeciesTree_rooted.txt")
         os.mkdir(resultsDir_new)
-        db.RenameTreeTaxa(speciesTree_fn, resultsSpeciesTrees[-1], db.ogSet.SpeciesDict(), qFixNegatives=True)
+        util.RenameTreeTaxa(speciesTree_fn, resultsSpeciesTrees[-1], db.ogSet.SpeciesDict(), qFixNegatives=True)
 
         print("\n5%s. Reconciling gene and species trees" % ("-%d"%i if qMultiple else "")) 
         print(  "-------------------------------------" + ("--" if qMultiple else ""))   
         print("Outgroup: " + (", ".join([spDict[s] for s in r])))
         dlcparResultsDir = RunDlcpar(db.treesPatIDs, ogSet, nOGs, speciesTree_fn, db.workingDir)
+        reconTreesRenamedDir = db.workingDir + "Recon_Gene_Trees/"
+        os.mkdir(reconTreesRenamedDir)
+        for iog in xrange(len(db.ogSet.OGs())):
+            util.RenameTreeTaxa(dlcparResultsDir + "OG%07d_tree_id.locus.tree" % iog, reconTreesRenamedDir + "OG%07d_tree.txt" % iog, db.ogSet.Spec_SeqDict(), qFixNegatives=False, inFormat=8)
 
         # Orthologue lists
         print("\n6%s. Inferring orthologues from gene trees" % ("-%d"%i if qMultiple else ""))
diff --git a/orthofinder/scripts/util.py b/orthofinder/scripts/util.py
index e8001564932b1e0739e54181d1f966e93b0573b6..798c5c017e4098e5519e6698d25ebe4dcb582d8d 100644
--- a/orthofinder/scripts/util.py
+++ b/orthofinder/scripts/util.py
@@ -37,6 +37,7 @@ import Queue
 import multiprocessing as mp
 from collections import namedtuple
 
+import tree
 
 """
 Utilities
@@ -307,6 +308,23 @@ class FirstWordExtractor(IDExtractor):
     def GetNameToIDDict(self):
         return self.nameToIDDict    
 
+
+def RenameTreeTaxa(treeFN, newTreeFilename, idsMap, qFixNegatives=False, inFormat=None):     
+#        with open(treeFN, "rb") as inputTree: treeString = inputTree.next()
+    try:
+        if inFormat == None:
+            t = tree.Tree(treeFN)
+        else:
+            t = tree.Tree(treeFN, format=inFormat)
+        for node in t.get_leaves():
+            node.name = idsMap[node.name]
+        if qFixNegatives:
+            for n in t.traverse():
+                if n.dist < 0.0: n.dist = 0.0
+        t.write(outfile = newTreeFilename, format=4)  
+    except:
+        pass
+
 def IsWorkingDirectory(orthofinderWorkingDir):
     ok = True
     ok = ok and len(glob.glob(orthofinderWorkingDir + "clusters_OrthoFinder_*.txt_id_pairs.txt")) > 0