diff --git a/include/tadah/mlip/descriptors_calc.hpp b/include/tadah/mlip/descriptors_calc.hpp
index 7f334d870c150b72dd3395fc5bb8ad29d99606b6..2f1ab7febb4a1bb11c9e51f9b8bbea85aea5ebb4 100644
--- a/include/tadah/mlip/descriptors_calc.hpp
+++ b/include/tadah/mlip/descriptors_calc.hpp
@@ -272,18 +272,7 @@ void DescriptorsCalc<D2,D3,DM,C2,C3,CM>::calc(const Structure &st, StDescriptors
         // CALCULATE MANY-BODY TERM
         if (rij_sq <= rcut_mb_sq && initmb) {
           rho_type& rhoi = st_d.get_rho(i);
-          int mode = dm.calc_dXijdri(Zj,rij,rij_sq,delij,rhoi,fd_ij);
-          if (mode==0) {
-            // some dm compute x-dir only, similarly to d2 above
-            for (size_t n=size2b+bias; n<size2b+sizemb+bias; ++n) {
-              fd_ij(n,0) *= rij_inv;
-              fd_ij(n,1) = fd_ij(n,0);
-              fd_ij(n,2) = fd_ij(n,0);
-              fd_ij(n,0) *= delij[0];
-              fd_ij(n,1) *= delij[1];
-              fd_ij(n,2) *= delij[2];
-            }
-          }
+          dm.calc_dXijdri(Zj,rij,rij_sq,delij,rhoi,fd_ij);
         }
       }
       else {