diff --git a/src/feature_creation/feature_space/FeatureSpace.cpp b/src/feature_creation/feature_space/FeatureSpace.cpp
index b9c7717080ad29864ac56edd005691c5ee40dc22..c89598eeddc65ddc5b6a59b6060b27272b99d1a2 100644
--- a/src/feature_creation/feature_space/FeatureSpace.cpp
+++ b/src/feature_creation/feature_space/FeatureSpace.cpp
@@ -983,9 +983,9 @@ void FeatureSpace::project_generated(std::shared_ptr<LossFunction> loss, std::ve
     int worst_score_ind = std::max_element(scores_sel.begin(), scores_sel.end()) - scores_sel.begin();
     double worst_score = scores_sel[worst_score_ind];
 
-    #pragma omp parallel firstprivate(worst_score, worst_score_ind, loss, scores_sel_all)
+    #pragma omp parallel firstprivate(worst_score, worst_score_ind, scores_sel_all)
     {
-        loss = loss_function_util::copy(loss);
+        std::shared_ptr<LossFunction> loss_copy = loss_function_util::copy(loss);
         std::vector<node_ptr> phi_sel_private(phi_sel);
         std::vector<double> scores_sel_private(scores_sel);
         int index_base = _phi.size() + _n_sis_select * (omp_get_thread_num() + _mpi_comm->size());
@@ -995,7 +995,7 @@ void FeatureSpace::project_generated(std::shared_ptr<LossFunction> loss, std::ve
         std::shared_ptr<NLOptimizer> reparam_optimizer;
         if(_reparam_residual)
         {
-            std::vector<double> prop_vec(loss->prop_project());
+            std::vector<double> prop_vec(loss_copy->prop_project());
             reparam_optimizer = nlopt_wrapper::get_optimizer(_project_type, _task_sizes, prop_vec, _max_phi, _max_param_depth);
         }
         else
@@ -1037,7 +1037,7 @@ void FeatureSpace::project_generated(std::shared_ptr<LossFunction> loss, std::ve
 
             node_value_arrs::clear_temp_reg_thread();
             std::vector<double> scores(generated_phi.size());
-            project_funcs::project_loss_no_omp(loss, generated_phi, scores.data());
+            project_funcs::project_loss_no_omp(loss_copy, generated_phi, scores.data());
 
             std::vector<int> inds = util_funcs::argsort<double>(scores);