diff --git a/src/libaevol/ae_replication_report.cpp b/src/libaevol/ae_replication_report.cpp
index 9811a5f670f67264cacce753f9cdd7912c1521bf..720468effa4a95b4784b1994e7582049edc13491 100644
--- a/src/libaevol/ae_replication_report.cpp
+++ b/src/libaevol/ae_replication_report.cpp
@@ -150,30 +150,22 @@ ae_replication_report::ae_replication_report( gzFile tree_file, ae_individual *
   int32_t mydnareport, myevent;
   int32_t nb_rears, nb_muts, nb_HT;
   DnaReplicReport * dnareport = NULL;
-  ae_mutation * event = NULL;
 
   for ( mydnareport = 0 ; mydnareport < nb_dna_replic_reports ; mydnareport++ )
   {
     dnareport = new DnaReplicReport();
     
     gzread( tree_file, &nb_HT, sizeof(nb_HT) );
-    // TODO vld fix memory leaks with news
     for ( myevent  = 0 ; myevent < nb_HT ; myevent++ )
-    {
-      event = new ae_mutation( tree_file );
-      dnareport->add_HT(*event);
-    }
-    
+      dnareport->add_HT(ae_mutation(tree_file));
+
     gzread( tree_file, &nb_rears, sizeof(nb_rears) );
     for ( myevent  = 0 ; myevent < nb_rears ; myevent++ )
-      dnareport->add_rear(*new ae_mutation(tree_file));
+      dnareport->add_rear(ae_mutation(tree_file));
 
     gzread( tree_file, &nb_muts, sizeof(nb_muts) );
     for(myevent  = 0 ; myevent < nb_muts ; myevent++ )
-    {
-      event = new ae_mutation( tree_file );
-      dnareport->add_mut(*event);
-    }
+      dnareport->add_mut(ae_mutation( tree_file ));
 
     dnareport->compute_stats();
     _dna_replic_reports.push_back(dnareport);