diff --git a/include/scalfmm/tools/fma_loader.hpp b/include/scalfmm/tools/fma_loader.hpp
index fe47e5b931a9b2251bf4681e3fa7403b7c9c832e..653df05c7b6aee3cc46ca2bbaa7835835240b3c5 100644
--- a/include/scalfmm/tools/fma_loader.hpp
+++ b/include/scalfmm/tools/fma_loader.hpp
@@ -999,22 +999,8 @@ namespace scalfmm::io
 #pragma omp parallel for shared(particles, values)
                 for(std::size_t i = 0; i < values.size(); ++i)
                 {
-                    particle_type& p = values[i];
-                    particles_t& a = particles[i];
-                    int k{0};
-
-                    for(auto e: p.position())
-                    {
-                        a[k++] = e;
-                    }
-                    for(auto& e: p.inputs())
-                    {
-                        a[k++] = e;
-                    }
-                    for(auto& e: p.outputs())
-                    {
-                        a[k++] = e;
-                    }
+                    auto ptr_data = &(values[i].position()[0]);
+                    std::copy(ptr_data, ptr_data + nb_elt_per_par, particles[i].data());
                 }
                 //  write the particles
                 // Here we need to separate input from output variables - no tools yet