diff --git a/src/dm_bf_base.cpp b/src/dm_bf_base.cpp
index 21543fa989c0eaca4edf254b9c8d0cbd46fe0b9b..946f455176b336eb33ee5e35f45d76ef6177a422 100644
--- a/src/dm_bf_base.cpp
+++ b/src/dm_bf_base.cpp
@@ -2,5 +2,8 @@
 #include "tadah/models/functions/basis_functions/bf_base.h"
 #include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h>
 DM_BF_Base::DM_BF_Base() {}
-DM_BF_Base::DM_BF_Base(const Config &c): BF_Base(c), DM_Function_Base(c) {}
+DM_BF_Base::DM_BF_Base(const Config &c):
+  Function_Base(c), 
+  BF_Base(c),
+  DM_Function_Base(c) {}
 DM_BF_Base::~DM_BF_Base() {}
diff --git a/src/dm_bf_linear.cpp b/src/dm_bf_linear.cpp
index 9bb9846ec32f02097ebfdaac07aec19e229d9a75..3aea01bc904b638311720baf844a6178756e10cf 100644
--- a/src/dm_bf_linear.cpp
+++ b/src/dm_bf_linear.cpp
@@ -4,7 +4,10 @@
 //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_BF_Linear> DM_BF_Linear_2( "BF_Linear" );
 
 DM_BF_Linear::DM_BF_Linear() {}
-DM_BF_Linear::DM_BF_Linear(const Config &c): DM_BF_Base(c), BF_Linear(c)
+DM_BF_Linear::DM_BF_Linear(const Config &c): 
+  Function_Base(c), 
+  DM_BF_Base(c),
+  BF_Linear(c)
 {}
 size_t DM_BF_Linear::get_phi_cols(const Config &config)
 {
diff --git a/src/dm_bf_polynomial2.cpp b/src/dm_bf_polynomial2.cpp
index 9ef36d3e5279be8049b8c78e755a73e26078b018..9c4862463531fa0a2087d94d57da79b80728a008 100644
--- a/src/dm_bf_polynomial2.cpp
+++ b/src/dm_bf_polynomial2.cpp
@@ -1,11 +1,15 @@
 #include "tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h"
+#include "tadah/models/functions/function_base.h"
 #include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h>
 
 //CONFIG::Registry<DM_Function_Base>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_1( "BF_Polynomial2" );
 //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_2( "BF_Polynomial2" );
 
 DM_BF_Polynomial2::DM_BF_Polynomial2() {}
-DM_BF_Polynomial2::DM_BF_Polynomial2(const Config &c): DM_BF_Base(c), BF_Polynomial2(c)
+DM_BF_Polynomial2::DM_BF_Polynomial2(const Config &c): 
+  Function_Base(c),
+  DM_BF_Base(c),
+  BF_Polynomial2(c)
 {}
 size_t DM_BF_Polynomial2::get_phi_cols(const Config &config)
 {
diff --git a/src/dm_kern_base.cpp b/src/dm_kern_base.cpp
index e36fa6be28172741b6d297f2b6a0f1f6e01d60df..9e569e08eb6d6894a6866eb21fc393c9096252ed 100644
--- a/src/dm_kern_base.cpp
+++ b/src/dm_kern_base.cpp
@@ -5,7 +5,10 @@
 
 DM_Kern_Base::~DM_Kern_Base() {}
 DM_Kern_Base::DM_Kern_Base() {}
-DM_Kern_Base::DM_Kern_Base(const Config &c): Kern_Base(c), DM_Function_Base(c) {}
+DM_Kern_Base::DM_Kern_Base(const Config &c): 
+  Function_Base(c), 
+  Kern_Base(c), 
+  DM_Function_Base(c) {}
 size_t DM_Kern_Base::get_phi_cols(const Config &)
 {
   return basis.cols();
diff --git a/src/dm_kern_linear.cpp b/src/dm_kern_linear.cpp
index 27886568a4c8e31d4ddb9f7b5592de2c1fd8004c..df6126a8ec8e9e6a3a7e6c0b9906e675733031e7 100644
--- a/src/dm_kern_linear.cpp
+++ b/src/dm_kern_linear.cpp
@@ -5,7 +5,10 @@
 //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_Kern_Linear> DM_Kern_Linear_2( "Kern_Linear" );
 
 DM_Kern_Linear::DM_Kern_Linear() {}
-DM_Kern_Linear::DM_Kern_Linear (const Config &c): DM_Kern_Base(c), Kern_Linear(c)
+DM_Kern_Linear::DM_Kern_Linear (const Config &c): 
+  Function_Base(c),
+  DM_Kern_Base(c),
+  Kern_Linear(c)
 {}
 size_t DM_Kern_Linear::get_phi_cols(const Config &config)
 {
diff --git a/src/dm_kern_lq.cpp b/src/dm_kern_lq.cpp
index 40fdb4d8bc78b8ca41d41380d28fd62e4a9e8856..dbef59e32ef1d37e7899c0f43994a076948f3374 100644
--- a/src/dm_kern_lq.cpp
+++ b/src/dm_kern_lq.cpp
@@ -1,4 +1,5 @@
 #include "tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h"
+#include "tadah/models/functions/function_base.h"
 #include <tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h>
 
 //CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_LQ> DM_Kern_LQ_1( "Kern_LQ" );
@@ -7,6 +8,7 @@
 DM_Kern_LQ::DM_Kern_LQ()
 {}
 DM_Kern_LQ::DM_Kern_LQ(const Config &c):
+  Function_Base(c), 
   DM_Kern_Base(c),
   Kern_LQ(c)
 {}
diff --git a/src/dm_kern_polynomial.cpp b/src/dm_kern_polynomial.cpp
index 5227ca7ee806958b8043acb786e64a414e57d4a7..e8637b1625d9647309ae46496f0f63263a464b3e 100644
--- a/src/dm_kern_polynomial.cpp
+++ b/src/dm_kern_polynomial.cpp
@@ -6,6 +6,7 @@
 DM_Kern_Polynomial::DM_Kern_Polynomial()
 {}
 DM_Kern_Polynomial::DM_Kern_Polynomial(const Config &c):
+  Function_Base(c), 
   DM_Kern_Base(c),
   Kern_Polynomial(c)
 {}
diff --git a/src/dm_kern_quadratic.cpp b/src/dm_kern_quadratic.cpp
index 9c4ecb2b9219851f2ad07175e03306bcabcdcaab..72ab0d47e6ca382c31204f4c2baaf54e837b09d0 100644
--- a/src/dm_kern_quadratic.cpp
+++ b/src/dm_kern_quadratic.cpp
@@ -1,3 +1,4 @@
+#include "tadah/models/functions/function_base.h"
 #include <tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h>
 
 //CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_1( "Kern_Quadratic" );
@@ -6,6 +7,7 @@
 DM_Kern_Quadratic::DM_Kern_Quadratic()
 {}
 DM_Kern_Quadratic::DM_Kern_Quadratic(const Config &c):
+  Function_Base(c),
   DM_Kern_Base(c),
   Kern_Quadratic(c)
 {}
diff --git a/src/dm_kern_rbf.cpp b/src/dm_kern_rbf.cpp
index 2c9b9e04969ab34dc1fe60fa8a13b1880d358901..41d57bea8461d633b3241263b4ccc5905fb00bfe 100644
--- a/src/dm_kern_rbf.cpp
+++ b/src/dm_kern_rbf.cpp
@@ -6,6 +6,7 @@
 DM_Kern_RBF::DM_Kern_RBF()
 {}
 DM_Kern_RBF::DM_Kern_RBF(const Config &c):
+  Function_Base(c), 
   DM_Kern_Base(c),
   Kern_RBF(c)
 {}
diff --git a/src/dm_kern_sigmoid.cpp b/src/dm_kern_sigmoid.cpp
index 7b547b06af0bf9e1f2dcb23ddc7a9a3b1047f25e..1c3d25bfc432591378a3c4948d76ac3ea6965ecd 100644
--- a/src/dm_kern_sigmoid.cpp
+++ b/src/dm_kern_sigmoid.cpp
@@ -6,6 +6,7 @@
 DM_Kern_Sigmoid::DM_Kern_Sigmoid()
 {}
 DM_Kern_Sigmoid::DM_Kern_Sigmoid(const Config &c):
+  Function_Base(c), 
   DM_Kern_Base(c),
   Kern_Sigmoid(c)
 {}