diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8a88da894bb70232879156050379eba442dd6ca0..d2081fd391b2f1ba5d657479b50a7c9746cb16d0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,6 +68,8 @@ endif()
       message("${TADAH} Develop build: Directory not found.")
     endif()
   endfunction()
+  find_directory_case_insensitive("core" "$ENV{TADAH_PATH}" DEVELOP_CORE_DIR)
+  set(FETCHCONTENT_SOURCE_DIR_TADAH.CORE "${DEVELOP_CORE_DIR}")
   find_directory_case_insensitive("models" "$ENV{TADAH_PATH}" DEVELOP_MODELS_DIR)
   set(FETCHCONTENT_SOURCE_DIR_TADAH.MODELS "${DEVELOP_MODELS_DIR}")
 endif()
diff --git a/include/tadah/mlip/descriptors_calc.h b/include/tadah/mlip/descriptors_calc.h
index ef8df5c5681367a833f05073170e4f8b23d25a90..f9968f02ed41b21f66d4a9e87c30faa1ea1a69dc 100644
--- a/include/tadah/mlip/descriptors_calc.h
+++ b/include/tadah/mlip/descriptors_calc.h
@@ -47,7 +47,7 @@ namespace mlip {
  *  @tparam C3 Cut_Base child, three-body cutoff function.
  *  @tparam CM Cut_Base child, many-body cutoff function.
  */
-template <typename D2=D2_Base&, typename D3=D3_Base&, typename DM=DM_Base&, typename C2=Cut_Base&, typename C3=Cut_Base&, typename CM=Cut_Base&>
+template <typename D2=tadah::models::D2_Base&, typename D3=tadah::models::D3_Base&, typename DM=tadah::models::DM_Base&, typename C2=tadah::models::Cut_Base&, typename C3=tadah::models::Cut_Base&, typename CM=tadah::models::Cut_Base&>
 class DescriptorsCalc: public DC_Base {
 
     public:
diff --git a/include/tadah/mlip/descriptors_calc.hpp b/include/tadah/mlip/descriptors_calc.hpp
index 4f32e0e989cd372a09ab20b98a83e96a4b681547..b21a587081afb68517b6712e756fc46ce36a553d 100644
--- a/include/tadah/mlip/descriptors_calc.hpp
+++ b/include/tadah/mlip/descriptors_calc.hpp
@@ -162,7 +162,7 @@ void DescriptorsCalc<D2,D3,DM,C2,C3,CM>::common_constructor() {
 template <typename D2, typename D3, typename DM, typename C2, typename C3, typename CM>
 void DescriptorsCalc<D2,D3,DM,C2,C3,CM>::calc_rho(const Structure &st, StDescriptors &st_d) {
   double rcut_mb_sq = pow(config.get<double>("RCUTMBMAX"),2);
-  tadah::core::tadah::core::rhos_type &rhos = st_d.rhos;
+  tadah::core::rhos_type &rhos = st_d.rhos;
   size_t s = dm.rhoi_size()+dm.rhoip_size();
   rhos.resize(s,st.natoms());
   rhos.set_zero();
@@ -336,7 +336,7 @@ void DescriptorsCalc<D2,D3,DM,C2,C3,CM>::calc_dimer(const Structure &st, StDescr
 
   // Not that this differ to how lammps implements this
   // TODO make it consistent between those two
-  Mat6R3C delM;  //i1-j1,i2-j1,i1-j2,i2-j2,i1-i2,j1-j2
+  tadah::core::Mat6R3C delM;  //i1-j1,i2-j1,i1-j2,i2-j2,i1-i2,j1-j2
   double r_sq[6];
   double r[6];
 
diff --git a/include/tadah/mlip/design_matrix/design_matrix.h b/include/tadah/mlip/design_matrix/design_matrix.h
index f88648223a8406714f9ec2814e0be0b3d4b21402..425ccbffa5d1eefab7398e4636f57af29db97866 100644
--- a/include/tadah/mlip/design_matrix/design_matrix.h
+++ b/include/tadah/mlip/design_matrix/design_matrix.h
@@ -65,7 +65,7 @@ public:
  *  - Stresses are scaled by 1/6.
  *  - Energies are scaled by 1/N_i
  *
- * @tparam F Function_Base child -> BF_Base or Kern_Base
+ * @tparam F tadah::models::Function_Base child -> tadah::models::BF_Base or tadah::models::Kern_Base
  *
  */
 template <typename F>
@@ -88,7 +88,7 @@ public:
      * Usage example:
      * \code{.cpp}
      * tadah::core::Config config("tadah::core::Config");
-     * BF_Linear bf(config);
+     * tadah::models::BF_Linear bf(config);
      * DesignMatrix<LinearKernel> desmat(bf, config);
      *
      * \endcode
diff --git a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h
index 56d0ef73d12eb7abd84e5e29185d71a6fd00102b..d5fb15bad81d138b179317b839f83ef7fcf8e221 100644
--- a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h
+++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h
@@ -11,7 +11,7 @@
 namespace tadah {
 namespace mlip {
 
-struct DM_BF_Base: public DM_Function_Base, public virtual BF_Base {
+struct DM_BF_Base: public DM_Function_Base, public virtual tadah::models::BF_Base {
    
     DM_BF_Base();
     DM_BF_Base(const tadah::core::Config &c);
diff --git a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h
index 63cdeea291a943d724fed183a3ec02c4c7b237da..871bcc0c62984eb4c141b3b03be96f7eb98ecc4e 100644
--- a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h
+++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h
@@ -6,7 +6,7 @@
 namespace tadah {
 namespace mlip {
 
-struct DM_BF_Linear: public DM_BF_Base, public BF_Linear
+struct DM_BF_Linear: public DM_BF_Base, public tadah::models::BF_Linear
 {
     DM_BF_Linear();
     DM_BF_Linear(const tadah::core::Config &c);
diff --git a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h
index 510dcfdeb57d3de61d2861a0f20d72393d9ffa9d..48f41a804dd264ea7c7b67156cbc334e2069fc21 100644
--- a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h
+++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h
@@ -6,7 +6,7 @@
 namespace tadah {
 namespace mlip {
 
-struct DM_BF_Polynomial2: public DM_BF_Base, public BF_Polynomial2
+struct DM_BF_Polynomial2: public DM_BF_Base, public tadah::models::BF_Polynomial2
 {
     DM_BF_Polynomial2();
     DM_BF_Polynomial2(const tadah::core::Config &c);
diff --git a/include/tadah/mlip/design_matrix/functions/dm_function_base.h b/include/tadah/mlip/design_matrix/functions/dm_function_base.h
index 49b25814aa8a225da7a823da1486b275f87652eb..37efe686e9b6bee15aca3bf6575e63b86fcf8fad 100644
--- a/include/tadah/mlip/design_matrix/functions/dm_function_base.h
+++ b/include/tadah/mlip/design_matrix/functions/dm_function_base.h
@@ -16,7 +16,7 @@ namespace tadah {
 namespace mlip {
 
 /** Base class for Kernels and Basis Functions */
-struct DM_Function_Base: public virtual Function_Base {
+struct DM_Function_Base: public virtual tadah::models::Function_Base {
 
   // Derived classes must implement Derived() and Derived(tadah::core::Config)
   DM_Function_Base();
diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h
index aa9607961801fd88e114616c1582ff77985412d8..ac384088adb141ccf03191825e598ff03941531c 100644
--- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h
+++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h
@@ -7,3 +7,5 @@
 #include <tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h>
 namespace tadah {
 namespace mlip {
+} // namespace mlip
+} // namespace tadah
diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h
index 4f73e759a2adbb369943dd1b267d83fc3d7c3d06..0fc6729057ad41a12ebb61d364b8f87794bd31c4 100644
--- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h
+++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h
@@ -19,7 +19,7 @@ namespace mlip {
  *  - ff = force descriptor
  *  - all derivatives are defined wrt to the second argument
  */
-class DM_Kern_Base: public DM_Function_Base, public virtual Kern_Base  {
+class DM_Kern_Base: public DM_Function_Base, public virtual tadah::models::Kern_Base  {
     public:
 
         DM_Kern_Base();
diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h
index e54041ff0b312877ba254a80bfbb1227565b957d..b3f6d7101aa56a2c28a893ff681ec05d0ad8eb34 100644
--- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h
+++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h
@@ -14,9 +14,9 @@ namespace mlip {
  * K(\mathbf{x}, \mathbf{y}) = \mathbf{x}^T \mathbf{y} = \sum_i x^{(i)} y^{(i)}
  * \f]
  *
- *  @see Kern_Base BF_Linear
+ *  @see tadah::models::Kern_Base tadah::models::BF_Linear
  */
-class DM_Kern_Linear :  public DM_Kern_Base, public Kern_Linear {
+class DM_Kern_Linear :  public DM_Kern_Base, public tadah::models::Kern_Linear {
     public:
     DM_Kern_Linear ();
     DM_Kern_Linear (const tadah::core::Config &c);
diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h
index 0ad81aadc5b68c0ba2cfbea14dee795d96a07bce..2d0c2af693a046261d221918ad1ceba486816ce5 100644
--- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h
+++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h
@@ -6,7 +6,7 @@
 namespace tadah {
 namespace mlip {
 
-class DM_Kern_LQ :  public DM_Kern_Base, public Kern_LQ {
+class DM_Kern_LQ :  public DM_Kern_Base, public tadah::models::Kern_LQ {
     public:
         DM_Kern_LQ();
         DM_Kern_LQ(const tadah::core::Config &c);
diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h
index 13c78e6edc1eca5de8dddd9507b2a272921bfba4..05911bf30a228f56b1ab3bec7c57f461a4ad7697 100644
--- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h
+++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h
@@ -6,7 +6,7 @@
 namespace tadah {
 namespace mlip {
 
-class DM_Kern_Polynomial :  public DM_Kern_Base, public Kern_Polynomial {
+class DM_Kern_Polynomial :  public DM_Kern_Base, public tadah::models::Kern_Polynomial {
     public:
         DM_Kern_Polynomial();
         DM_Kern_Polynomial(const tadah::core::Config &c);
diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h
index de31022b613b7dcc18cd04b0caa69e642128d326..c0d9e68669eb7cde09ac78f4076842af35ee6495 100644
--- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h
+++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h
@@ -6,7 +6,7 @@
 namespace tadah {
 namespace mlip {
 
-class DM_Kern_Quadratic :  public DM_Kern_Base, public Kern_Quadratic {
+class DM_Kern_Quadratic :  public DM_Kern_Base, public tadah::models::Kern_Quadratic {
     public:
         DM_Kern_Quadratic();
         DM_Kern_Quadratic(const tadah::core::Config &c);
diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h
index 5d349e747b940662948cd176a3109d338794cf9f..6281e9785de971282940b9a27031db443fad929f 100644
--- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h
+++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h
@@ -6,7 +6,7 @@
 namespace tadah {
 namespace mlip {
 
-class DM_Kern_RBF :  public DM_Kern_Base, public Kern_RBF {
+class DM_Kern_RBF :  public DM_Kern_Base, public tadah::models::Kern_RBF {
     public:
         DM_Kern_RBF();
         DM_Kern_RBF(const tadah::core::Config &c);
diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h
index bf3cc1aea1620a100dc749f394cccd1bfc7e97b9..bd59f4502985f285c04f03fe50a303d10f8dd99b 100644
--- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h
+++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h
@@ -6,7 +6,7 @@
 namespace tadah {
 namespace mlip {
 
-class DM_Kern_Sigmoid :  public DM_Kern_Base, public Kern_Sigmoid {
+class DM_Kern_Sigmoid :  public DM_Kern_Base, public tadah::models::Kern_Sigmoid {
     public:
         DM_Kern_Sigmoid();
         DM_Kern_Sigmoid(const tadah::core::Config &c);
diff --git a/include/tadah/mlip/models/m_all.h b/include/tadah/mlip/models/m_all.h
index 2a2a34484411c2790c28ef426e7b9fcd86463a65..c3a0a0891fb5f703efc51a5a7f5c26630d35a97d 100644
--- a/include/tadah/mlip/models/m_all.h
+++ b/include/tadah/mlip/models/m_all.h
@@ -3,3 +3,5 @@
 #include <tadah/mlip/models/m_krr.h>
 namespace tadah {
 namespace mlip {
+} // namespace mlip
+} // namespace tadah
diff --git a/include/tadah/mlip/models/m_blr.h b/include/tadah/mlip/models/m_blr.h
index b02aabeb0ba4d3ad15e372d9c927f311db351c10..a290b128a74ef3cd02c8c13c392d51b7fd64f087 100644
--- a/include/tadah/mlip/models/m_blr.h
+++ b/include/tadah/mlip/models/m_blr.h
@@ -41,12 +41,12 @@ namespace mlip {
  */
 template
 <class BF=DM_Function_Base&>
-class M_BLR: public M_Tadah_Base, public M_BLR_Train<BF> {
+class M_BLR: public M_Tadah_Base, public tadah::models::M_BLR_Train<BF> {
 
 public:
 
-  using M_BLR_Train<BF>::config;
-  using M_BLR_Train<BF>::bf;
+  using tadah::models::M_BLR_Train<BF>::config;
+  using tadah::models::M_BLR_Train<BF>::bf;
 
   /** 
    * @brief Initializes for training or prediction using a configuration.
@@ -54,14 +54,14 @@ public:
    * **Example**:
    * \code{.cpp}
    * tadah::core::Config config("tadah::core::Config");
-   * M_BLR<BF_Linear> blr(config);
+   * M_BLR<tadah::models::BF_Linear> blr(config);
    * \endcode
    * 
    * @param c Configuration object.
    */
   M_BLR(tadah::core::Config &c):
-    M_BLR_Train<BF>(c),
-    desmat(M_BLR_Train<BF>::bf,c)
+    tadah::models::M_BLR_Train<BF>(c),
+    desmat(tadah::models::M_BLR_Train<BF>::bf,c)
   {
     norm = Normaliser(c);
   }
@@ -73,14 +73,14 @@ public:
    * @param c Configuration object.
    */
   M_BLR(BF &bf, tadah::core::Config &c):
-    M_BLR_Train<BF>(bf,c),
+    tadah::models::M_BLR_Train<BF>(bf,c),
     desmat(bf,c)
   {
     norm = Normaliser(c);
   }
 
   M_BLR(BF &bf, tadah::core::Config &c, tadah::mlip::memory::IMLIPWorkspaceManager& workspaceManager):
-    M_BLR_Train<BF>(bf,c,workspaceManager),
+    tadah::models::M_BLR_Train<BF>(bf,c,workspaceManager),
     desmat(bf,c,workspaceManager)
   {
     norm = Normaliser(c);
@@ -140,7 +140,7 @@ public:
   }
 
   Structure predict(const tadah::core::Config &c, StDescriptors &std, const Structure &st) {
-    if(config.template get<bool>("NORM") && !std.normalised && bf.get_label()!="BF_Linear")
+    if(config.template get<bool>("NORM") && !std.normalised && bf.get_label()!="tadah::models::BF_Linear")
       norm.normalise(std);
     return M_Tadah_Base::predict(c,std,st);
   }
@@ -181,7 +181,7 @@ public:
   StructureDB predict(tadah::core::Config config_pred, StructureDB &stdb, DC_Base &dc,
                       tadah::core::aed_type &predicted_error) {
 
-    LinearRegressor::read_sigma(config_pred,Sigma);
+    tadah::models::LinearRegressor::read_sigma(config_pred,Sigma);
     DesignMatrix<BF> dm(bf,config_pred);
     // dm.scale=false; // do not scale energy, forces and stresses
     bool wcopy=false;
@@ -273,7 +273,7 @@ private:
   // normalise weights such that when predict is called
   // we can supply it with a non-normalised descriptor
   tadah::core::t_type convert_to_nweights(const tadah::core::t_type &weights) const {
-    if(bf.get_label()!="BF_Linear") {
+    if(bf.get_label()!="tadah::models::BF_Linear") {
       throw std::runtime_error("Cannot convert weights to nweights for\n\
 non linear basis function\n");
     }
@@ -293,7 +293,7 @@ non linear basis function\n");
   }
   // The opposite of convert_to_nweights()
   tadah::core::t_type convert_to_weights(const tadah::core::t_type &nw) const {
-    if(bf.get_label()!="BF_Linear") {
+    if(bf.get_label()!="tadah::models::BF_Linear") {
       throw std::runtime_error("Cannot convert nweights to weights for\n\
 non linear basis function\n");
     }
@@ -321,21 +321,21 @@ non linear basis function\n");
     tadah::core::phi_type Phi = desmat.getPhi();
     tadah::core::t_type T = desmat.getT();
     //tadah::core::t_type &T = desmat.T;
-    M_BLR_Train<BF>::train(Phi,T);
+    tadah::models::M_BLR_Train<BF>::train(Phi,T);
 
     if (config.template get<bool>("NORM") &&
-      bf.get_label()=="BF_Linear") {
+      bf.get_label()=="tadah::models::BF_Linear") {
       weights = convert_to_nweights(weights);
     }
   }
 
   // Do we want to confuse user with those and make them public?
   // Either way they must be stated as below to silence clang warning
-  using M_BLR_Train<BF>::predict;
-  using M_BLR_Train<BF>::train;
-  using M_BLR_Train<BF>::trained;
-  using M_BLR_Train<BF>::weights;
-  using M_BLR_Train<BF>::Sigma;
+  using tadah::models::M_BLR_Train<BF>::predict;
+  using tadah::models::M_BLR_Train<BF>::train;
+  using tadah::models::M_BLR_Train<BF>::trained;
+  using tadah::models::M_BLR_Train<BF>::weights;
+  using tadah::models::M_BLR_Train<BF>::Sigma;
 };
 } // namespace mlip
 } // namespace tadah
diff --git a/include/tadah/mlip/models/m_krr.h b/include/tadah/mlip/models/m_krr.h
index d022e6804d775846876f05b6871cc870926d020c..baa4960313acef6e77e1d70032ee41467332dc7c 100644
--- a/include/tadah/mlip/models/m_krr.h
+++ b/include/tadah/mlip/models/m_krr.h
@@ -44,7 +44,7 @@ namespace mlip {
 template
 <class K=DM_Function_Base&>
 class M_KRR: public M_Tadah_Base,
-  public M_KRR_Train<K>
+  public tadah::models::M_KRR_Train<K>
 {
 
 public:
@@ -55,13 +55,13 @@ public:
    * **Example**:
    * \code{.cpp}
    * tadah::core::Config config("tadah::core::Config");
-   * M_KRR<Kern_Linear> krr(config);
+   * M_KRR<tadah::models::Kern_Linear> krr(config);
    * \endcode
    *
      * @param c Configuration object.
      */
   M_KRR(tadah::core::Config &c):
-    M_KRR_Train<K>(c),
+    tadah::models::M_KRR_Train<K>(c),
     basis(c),
     desmat(kernel,c)
   {
@@ -75,7 +75,7 @@ public:
    * @param c Configuration object.
    */
   M_KRR(K &kernel, tadah::core::Config &c):
-    M_KRR_Train<K>(kernel,c),
+    tadah::models::M_KRR_Train<K>(kernel,c),
     basis(c),
     desmat(kernel,c)
   {
@@ -83,7 +83,7 @@ public:
   }
 
   M_KRR(K &kernel, tadah::core::Config &c, tadah::mlip::memory::IMLIPWorkspaceManager& workspaceManager):
-    M_KRR_Train<K>(kernel,c,workspaceManager),
+    tadah::models::M_KRR_Train<K>(kernel,c,workspaceManager),
     basis(c),
     desmat(kernel,c)
   {
@@ -133,7 +133,7 @@ public:
   }
   void train1(StructureDB &stdb, DC_Base &dc) {
     // KRR implementation using EKM
-    if(config.template get<bool>("NORM") || kernel.get_label()!="Kern_Linear") {
+    if(config.template get<bool>("NORM") || kernel.get_label()!="tadah::models::Kern_Linear") {
       // either build basis or prep normaliser
       std::string force=config.template get<std::string>("FORCE");
       std::string stress=config.template get<std::string>("STRESS");
@@ -156,7 +156,7 @@ public:
       config.add("FORCE", force);
       config.add("STRESS", stress);
 
-      if (kernel.get_label()!="Kern_Linear") {
+      if (kernel.get_label()!="tadah::models::Kern_Linear") {
         basis.build_random_basis(config.template get<size_t>("SBASIS"),st_desc_db_temp);
         desmat.f.set_basis(basis.b);
         kernel.set_basis(basis.b);
@@ -190,11 +190,11 @@ public:
     config.add("STRESS", stress);
     basis.prep_basis_for_krr(st_desc_db_temp,stdb);
     kernel.set_basis(basis.b);
-    M_KRR_Train<K>::train2(basis.b, basis.T);
+    tadah::models::M_KRR_Train<K>::train2(basis.b, basis.T);
   }
 
   Structure predict(const tadah::core::Config &c, StDescriptors &std, const Structure &st) {
-    if(config.template get<bool>("NORM") && !std.normalised && kernel.get_label()!="Kern_Linear")
+    if(config.template get<bool>("NORM") && !std.normalised && kernel.get_label()!="tadah::models::Kern_Linear")
       norm.normalise(std);
     return M_Tadah_Base::predict(c,std,st);
   }
@@ -231,7 +231,7 @@ public:
         c.add("NSTDEV", norm.std_dev[i]);
       }
     }
-    if (kernel.get_label()!="Kern_Linear") {
+    if (kernel.get_label()!="tadah::models::Kern_Linear") {
       // dump basis to the config file file
       // make sure keys are not accidently assigned
       if (c.exist("SBASIS"))
@@ -251,7 +251,7 @@ public:
   StructureDB predict(tadah::core::Config config_pred, StructureDB &stdb, DC_Base &dc,
                       tadah::core::aed_type &predicted_error) {
 
-    LinearRegressor::read_sigma(config_pred,Sigma);
+    tadah::models::LinearRegressor::read_sigma(config_pred,Sigma);
     DesignMatrix<K> dm(kernel,config_pred);
     // dm.scale=false; // do not scale energy, forces and stresses
     bool wcopy=false;
@@ -343,12 +343,12 @@ private:
   DesignMatrix<K> desmat;
 
   tadah::core::t_type convert_to_nweights(const tadah::core::t_type &weights) const {
-    if(kernel.get_label()!="Kern_Linear") {
+    if(kernel.get_label()!="tadah::models::Kern_Linear") {
       throw std::runtime_error("Cannot convert weights to nweights for\n\
 non linear kernel\n");
     }
     tadah::core::t_type kw(weights.rows());
-    if(config.template get<bool>("NORM") && kernel.get_label()=="Kern_Linear") {
+    if(config.template get<bool>("NORM") && kernel.get_label()=="tadah::models::Kern_Linear") {
       // normalise weights such that when predict is called
       // we can supply it with a non-normalised descriptor
       kw.resize(weights.rows());
@@ -368,7 +368,7 @@ non linear kernel\n");
   }
   // The opposite of convert_to_nweights()
   tadah::core::t_type convert_to_weights(const tadah::core::t_type &kw) const {
-    if(kernel.get_label()!="Kern_Linear") {
+    if(kernel.get_label()!="tadah::models::Kern_Linear") {
       throw std::runtime_error("Cannot convert nweights to weights for\n\
 non linear kernel\n");
     }
@@ -391,24 +391,24 @@ non linear kernel\n");
     // TODO see comments in M_BLR
     tadah::core::phi_type Phi = desmat.getPhi();
     tadah::core::t_type T = desmat.getT();
-    M_KRR_Train<K>::train(Phi,T);
+    tadah::models::M_KRR_Train<K>::train(Phi,T);
 
     if (config.template get<bool>("NORM") &&
-      kernel.get_label()=="Kern_Linear") {
+      kernel.get_label()=="tadah::models::Kern_Linear") {
       weights = convert_to_nweights(weights);
     }
   }
 
   // Do we want to confuse user with those and make them public?
   // Either way they must be stated as below to silence clang warning
-  using M_KRR_Train<K>::predict;
-  using M_KRR_Train<K>::train;
-  using M_KRR_Train<K>::trained;
-  using M_KRR_Train<K>::weights;
-  using M_KRR_Train<K>::Sigma;
-  using M_KRR_Train<K>::config;
-  using M_KRR_Train<K>::kernel;
-  using M_KRR_Train<K>::ekm;
+  using tadah::models::M_KRR_Train<K>::predict;
+  using tadah::models::M_KRR_Train<K>::train;
+  using tadah::models::M_KRR_Train<K>::trained;
+  using tadah::models::M_KRR_Train<K>::weights;
+  using tadah::models::M_KRR_Train<K>::Sigma;
+  using tadah::models::M_KRR_Train<K>::config;
+  using tadah::models::M_KRR_Train<K>::kernel;
+  using tadah::models::M_KRR_Train<K>::ekm;
 };
 } // namespace mlip
 } // namespace tadah
diff --git a/include/tadah/mlip/models/m_tadah_base.h b/include/tadah/mlip/models/m_tadah_base.h
index 3c2b8840edbbb04714c05a489d235a56b5716d84..670dc8958599928e8bb32db2338ec05b66c8dfbd 100644
--- a/include/tadah/mlip/models/m_tadah_base.h
+++ b/include/tadah/mlip/models/m_tadah_base.h
@@ -16,8 +16,8 @@ namespace mlip {
 /** This interface provides functionality required from all models.
  */
 class M_Tadah_Base:
-    public virtual M_Core,
-    public virtual M_Predict
+    public virtual tadah::models::M_Core,
+    public virtual tadah::models::M_Predict
 {
 
 public:
@@ -26,9 +26,9 @@ public:
   virtual ~M_Tadah_Base() {};
 
   /** \brief Predict total energy for a set of atoms. */
-  using M_Predict::epredict;
-  using M_Predict::fpredict;
-  using M_Core::predict;
+  using tadah::models::M_Predict::epredict;
+  using tadah::models::M_Predict::fpredict;
+  using tadah::models::M_Core::predict;
   double epredict(const StDescriptors &std);
 
   ///** \brief Predict force between a pair of atoms in a k-direction. */
diff --git a/include/tadah/mlip/normaliser.h b/include/tadah/mlip/normaliser.h
index 508893521466efe783593c15bed8de4a1a3a54ec..c5631e7ca66f27da4df86aaf8040732bcc86a437 100644
--- a/include/tadah/mlip/normaliser.h
+++ b/include/tadah/mlip/normaliser.h
@@ -11,7 +11,9 @@
 namespace tadah {
 namespace mlip {
 
-class Normaliser: public Normaliser_Core {
+using tadah::core::operator<<;
+
+class Normaliser: public tadah::core::Normaliser_Core {
     public:
         using Normaliser_Core::normalise;
 
diff --git a/src/dm_bf_base.cpp b/src/dm_bf_base.cpp
index 11a65873063fbd144309dcf3cb8e75d5e0e92482..ab800c4daf34e2b9a5125f61020205cc2646c2ee 100644
--- a/src/dm_bf_base.cpp
+++ b/src/dm_bf_base.cpp
@@ -5,8 +5,8 @@ namespace tadah {
 namespace mlip {
 DM_BF_Base::DM_BF_Base() {}
 DM_BF_Base::DM_BF_Base(const tadah::core::Config &c):
-  Function_Base(c), 
-  BF_Base(c),
+  tadah::models::Function_Base(c), 
+  tadah::models::BF_Base(c),
   DM_Function_Base(c) {}
 DM_BF_Base::~DM_BF_Base() {}
 } // namespace mlip
diff --git a/src/dm_bf_linear.cpp b/src/dm_bf_linear.cpp
index 5fd5f139bdbd12b79b608ab3c06bd75fb981f1db..10e095e757d92e8462b4b911e75f754bdcc9acee 100644
--- a/src/dm_bf_linear.cpp
+++ b/src/dm_bf_linear.cpp
@@ -2,14 +2,14 @@
 namespace tadah {
 namespace mlip {
 
-//CONFIG::Registry<DM_Function_Base>::Register<DM_BF_Linear> DM_BF_Linear_1( "BF_Linear" );
-//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_BF_Linear> DM_BF_Linear_2( "BF_Linear" );
+//CONFIG::Registry<DM_Function_Base>::Register<DM_BF_Linear> DM_BF_Linear_1( "tadah::models::BF_Linear" );
+//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_BF_Linear> DM_BF_Linear_2( "tadah::models::BF_Linear" );
 
 DM_BF_Linear::DM_BF_Linear() {}
 DM_BF_Linear::DM_BF_Linear(const tadah::core::Config &c): 
-  Function_Base(c), 
+  tadah::models::Function_Base(c), 
   DM_BF_Base(c),
-  BF_Linear(c)
+  tadah::models::BF_Linear(c)
 {}
 size_t DM_BF_Linear::get_phi_cols(const tadah::core::Config &config)
 {
diff --git a/src/dm_bf_polynomial2.cpp b/src/dm_bf_polynomial2.cpp
index 0dfc14a7d0736e4b7e3e2f02b5de24f7e9601248..78af1906bd9eb096b197b0f7ef9d440b56feca49 100644
--- a/src/dm_bf_polynomial2.cpp
+++ b/src/dm_bf_polynomial2.cpp
@@ -4,14 +4,14 @@
 namespace tadah {
 namespace mlip {
 
-//CONFIG::Registry<DM_Function_Base>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_1( "BF_Polynomial2" );
-//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_2( "BF_Polynomial2" );
+//CONFIG::Registry<DM_Function_Base>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_1( "tadah::models::BF_Polynomial2" );
+//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_2( "tadah::models::BF_Polynomial2" );
 
 DM_BF_Polynomial2::DM_BF_Polynomial2() {}
 DM_BF_Polynomial2::DM_BF_Polynomial2(const tadah::core::Config &c): 
-  Function_Base(c),
+  tadah::models::Function_Base(c),
   DM_BF_Base(c),
-  BF_Polynomial2(c)
+  tadah::models::BF_Polynomial2(c)
 {}
 size_t DM_BF_Polynomial2::get_phi_cols(const tadah::core::Config &config)
 {
diff --git a/src/dm_f_all.cpp b/src/dm_f_all.cpp
index 6faeda68dff06e3dfcf7e20e8005f1ceadbe35b4..4730cd6f65aefd97d199db000335126616834d5e 100644
--- a/src/dm_f_all.cpp
+++ b/src/dm_f_all.cpp
@@ -6,22 +6,22 @@ template<> tadah::core::Registry<DM_Function_Base>::Map tadah::core::Registry<DM
 template<> tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Map tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::registry{};
 
 
-tadah::core::Registry<DM_Function_Base>::Register<DM_BF_Linear> DM_BF_Linear_1( "BF_Linear" );
-tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_BF_Linear> DM_BF_Linear_2( "BF_Linear" );
-tadah::core::Registry<DM_Function_Base>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_1( "BF_Polynomial2" );
-tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_2( "BF_Polynomial2" );
-tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_Linear> DM_Kern_Linear_1( "Kern_Linear" );
-tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Linear> DM_Kern_Linear_2( "Kern_Linear" );
-tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_LQ> DM_Kern_LQ_1( "Kern_LQ" );
-tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_LQ> DM_Kern_LQ_2( "Kern_LQ" );
-tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_1( "Kern_Polynomial" );
-tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_2( "Kern_Polynomial" );
-tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_1( "Kern_Quadratic" );
-tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_2( "Kern_Quadratic" );
-tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_RBF> DM_Kern_RBF_1( "Kern_RBF" );
-tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_RBF> DM_Kern_RBF_2( "Kern_RBF" );
-tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_1( "Kern_Sigmoid" );
-tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_2( "Kern_Sigmoid" );
+tadah::core::Registry<DM_Function_Base>::Register<DM_BF_Linear> DM_BF_Linear_1( "tadah::models::BF_Linear" );
+tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_BF_Linear> DM_BF_Linear_2( "tadah::models::BF_Linear" );
+tadah::core::Registry<DM_Function_Base>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_1( "tadah::models::BF_Polynomial2" );
+tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_2( "tadah::models::BF_Polynomial2" );
+tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_Linear> DM_Kern_Linear_1( "tadah::models::Kern_Linear" );
+tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Linear> DM_Kern_Linear_2( "tadah::models::Kern_Linear" );
+tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_LQ> DM_Kern_LQ_1( "tadah::models::Kern_LQ" );
+tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_LQ> DM_Kern_LQ_2( "tadah::models::Kern_LQ" );
+tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_1( "tadah::models::Kern_Polynomial" );
+tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_2( "tadah::models::Kern_Polynomial" );
+tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_1( "tadah::models::Kern_Quadratic" );
+tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_2( "tadah::models::Kern_Quadratic" );
+tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_RBF> DM_Kern_RBF_1( "tadah::models::Kern_RBF" );
+tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_RBF> DM_Kern_RBF_2( "tadah::models::Kern_RBF" );
+tadah::core::Registry<DM_Function_Base>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_1( "tadah::models::Kern_Sigmoid" );
+tadah::core::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_2( "tadah::models::Kern_Sigmoid" );
 
 } // namespace mlip
 } // namespace tadah
diff --git a/src/dm_function_base.cpp b/src/dm_function_base.cpp
index 72490e28bd797435beca005852a4db5e5691176a..0e03343024efc29f2b420b2d6a9262ed86c7b949 100644
--- a/src/dm_function_base.cpp
+++ b/src/dm_function_base.cpp
@@ -3,7 +3,7 @@
 namespace tadah {
 namespace mlip {
 DM_Function_Base::DM_Function_Base() {}
-DM_Function_Base::DM_Function_Base(const tadah::core::Config &c): Function_Base(c) {}
+DM_Function_Base::DM_Function_Base(const tadah::core::Config &c): tadah::models::Function_Base(c) {}
 DM_Function_Base::~DM_Function_Base() {}
 } // namespace mlip
 } // namespace tadah
diff --git a/src/dm_kern_base.cpp b/src/dm_kern_base.cpp
index 0c32977c640917ba818b7817df26924f8622e1cd..444a810a00c80a284e590418dd9bca87fb51fdbb 100644
--- a/src/dm_kern_base.cpp
+++ b/src/dm_kern_base.cpp
@@ -8,8 +8,8 @@ namespace mlip {
 DM_Kern_Base::~DM_Kern_Base() {}
 DM_Kern_Base::DM_Kern_Base() {}
 DM_Kern_Base::DM_Kern_Base(const tadah::core::Config &c): 
-  Function_Base(c), 
-  Kern_Base(c), 
+  tadah::models::Function_Base(c), 
+  tadah::models::Kern_Base(c), 
   DM_Function_Base(c) {}
 size_t DM_Kern_Base::get_phi_cols(const tadah::core::Config &)
 {
diff --git a/src/dm_kern_linear.cpp b/src/dm_kern_linear.cpp
index 339052673fe67a8c5cb5fe1ca27b86912dc71462..225803eafc54b54fadda7ce2e8c6892cb2d8722d 100644
--- a/src/dm_kern_linear.cpp
+++ b/src/dm_kern_linear.cpp
@@ -3,14 +3,14 @@
 namespace tadah {
 namespace mlip {
 
-//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Linear> DM_Kern_Linear_1( "Kern_Linear" );
-//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Linear> DM_Kern_Linear_2( "Kern_Linear" );
+//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Linear> DM_Kern_Linear_1( "tadah::models::Kern_Linear" );
+//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Linear> DM_Kern_Linear_2( "tadah::models::Kern_Linear" );
 
 DM_Kern_Linear::DM_Kern_Linear() {}
 DM_Kern_Linear::DM_Kern_Linear (const tadah::core::Config &c): 
-  Function_Base(c),
+  tadah::models::Function_Base(c),
   DM_Kern_Base(c),
-  Kern_Linear(c)
+  tadah::models::Kern_Linear(c)
 {}
 size_t DM_Kern_Linear::get_phi_cols(const tadah::core::Config &config)
 {
diff --git a/src/dm_kern_lq.cpp b/src/dm_kern_lq.cpp
index d9be6865493fbab7fc4872c93700116e36d4ce43..3006e460588a5f0a9d6dc4522eb739ca17431df9 100644
--- a/src/dm_kern_lq.cpp
+++ b/src/dm_kern_lq.cpp
@@ -4,15 +4,15 @@
 namespace tadah {
 namespace mlip {
 
-//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_LQ> DM_Kern_LQ_1( "Kern_LQ" );
-//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_LQ> DM_Kern_LQ_2( "Kern_LQ" );
+//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_LQ> DM_Kern_LQ_1( "tadah::models::Kern_LQ" );
+//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_LQ> DM_Kern_LQ_2( "tadah::models::Kern_LQ" );
 
 DM_Kern_LQ::DM_Kern_LQ()
 {}
 DM_Kern_LQ::DM_Kern_LQ(const tadah::core::Config &c):
-  Function_Base(c), 
+  tadah::models::Function_Base(c), 
   DM_Kern_Base(c),
-  Kern_LQ(c)
+  tadah::models::Kern_LQ(c)
 {}
 } // namespace mlip
 } // namespace tadah
diff --git a/src/dm_kern_polynomial.cpp b/src/dm_kern_polynomial.cpp
index b2d1c7d7155949f098b936f774e44d683ac01363..e79844d7def77d227fef7de440bde2c88ceedb70 100644
--- a/src/dm_kern_polynomial.cpp
+++ b/src/dm_kern_polynomial.cpp
@@ -2,15 +2,15 @@
 namespace tadah {
 namespace mlip {
 
-//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_1( "Kern_Polynomial" );
-//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_2( "Kern_Polynomial" );
+//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_1( "tadah::models::Kern_Polynomial" );
+//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_2( "tadah::models::Kern_Polynomial" );
 
 DM_Kern_Polynomial::DM_Kern_Polynomial()
 {}
 DM_Kern_Polynomial::DM_Kern_Polynomial(const tadah::core::Config &c):
-  Function_Base(c), 
+  tadah::models::Function_Base(c), 
   DM_Kern_Base(c),
-  Kern_Polynomial(c)
+  tadah::models::Kern_Polynomial(c)
 {}
 } // namespace mlip
 } // namespace tadah
diff --git a/src/dm_kern_quadratic.cpp b/src/dm_kern_quadratic.cpp
index b8a1efe48287368399e9304cce4900d6a1ff8dd8..aafbf8bde90ad586c9566c86662834efdf667d2e 100644
--- a/src/dm_kern_quadratic.cpp
+++ b/src/dm_kern_quadratic.cpp
@@ -3,15 +3,15 @@
 namespace tadah {
 namespace mlip {
 
-//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_1( "Kern_Quadratic" );
-//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_2( "Kern_Quadratic" );
+//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_1( "tadah::models::Kern_Quadratic" );
+//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_2( "tadah::models::Kern_Quadratic" );
 
 DM_Kern_Quadratic::DM_Kern_Quadratic()
 {}
 DM_Kern_Quadratic::DM_Kern_Quadratic(const tadah::core::Config &c):
-  Function_Base(c),
+  tadah::models::Function_Base(c),
   DM_Kern_Base(c),
-  Kern_Quadratic(c)
+  tadah::models::Kern_Quadratic(c)
 {}
 } // namespace mlip
 } // namespace tadah
diff --git a/src/dm_kern_rbf.cpp b/src/dm_kern_rbf.cpp
index 4489073b2661ec53e05b6cda569816e16fcdeccd..6ce20d446049925a24a1f75626c328b961b34685 100644
--- a/src/dm_kern_rbf.cpp
+++ b/src/dm_kern_rbf.cpp
@@ -2,15 +2,15 @@
 namespace tadah {
 namespace mlip {
 
-//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_RBF> DM_Kern_RBF_1( "Kern_RBF" );
-//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_RBF> DM_Kern_RBF_2( "Kern_RBF" );
+//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_RBF> DM_Kern_RBF_1( "tadah::models::Kern_RBF" );
+//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_RBF> DM_Kern_RBF_2( "tadah::models::Kern_RBF" );
 
 DM_Kern_RBF::DM_Kern_RBF()
 {}
 DM_Kern_RBF::DM_Kern_RBF(const tadah::core::Config &c):
-  Function_Base(c), 
+  tadah::models::Function_Base(c), 
   DM_Kern_Base(c),
-  Kern_RBF(c)
+  tadah::models::Kern_RBF(c)
 {}
 } // namespace mlip
 } // namespace tadah
diff --git a/src/dm_kern_sigmoid.cpp b/src/dm_kern_sigmoid.cpp
index fb1482cd68fdb275311b69232d47d62f10e30df3..2304227b39d5be51714b5aff38ee3a79dafeb1fb 100644
--- a/src/dm_kern_sigmoid.cpp
+++ b/src/dm_kern_sigmoid.cpp
@@ -2,15 +2,15 @@
 namespace tadah {
 namespace mlip {
 
-//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_1( "Kern_Sigmoid" );
-//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_2( "Kern_Sigmoid" );
+//CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_1( "tadah::models::Kern_Sigmoid" );
+//CONFIG::Registry<DM_Function_Base,tadah::core::Config&>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_2( "tadah::models::Kern_Sigmoid" );
 
 DM_Kern_Sigmoid::DM_Kern_Sigmoid()
 {}
 DM_Kern_Sigmoid::DM_Kern_Sigmoid(const tadah::core::Config &c):
-  Function_Base(c), 
+  tadah::models::Function_Base(c), 
   DM_Kern_Base(c),
-  Kern_Sigmoid(c)
+  tadah::models::Kern_Sigmoid(c)
 {}
 } // namespace mlip
 } // namespace tadah
diff --git a/src/m_all.cpp b/src/m_all.cpp
index 6ddcebe56684173c0d1bd20da72d2ed2d9fb917a..783da5245a0848e8b4b122d4848babcf3629b2aa 100644
--- a/src/m_all.cpp
+++ b/src/m_all.cpp
@@ -5,24 +5,24 @@ namespace tadah {
 namespace mlip {
 
 template<>
-CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&>::Map
-CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&>::registry{};
+tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&>::Map
+tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&>::registry{};
 
-CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&>::Register<M_KRR<>> M_KRR_1("M_KRR");
-CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&>::Register<M_BLR<>> M_BLR_1("M_BLR");
+tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&>::Register<M_KRR<>> M_KRR_1("M_KRR");
+tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&>::Register<M_BLR<>> M_BLR_1("M_BLR");
 
 /*template<>*/
-/*CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::models::memory::IModelsWorkspaceManager&>::Map*/
-/*CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::models::memory::IModelsWorkspaceManager&>::registry{};*/
+/*tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::models::memory::IModelsWorkspaceManager&>::Map*/
+/*tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::models::memory::IModelsWorkspaceManager&>::registry{};*/
 /**/
-/*CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::models::memory::IModelsWorkspaceManager&>::Register<M_BLR<>> M_BLR_2("M_BLR");*/
-/*CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::models::memory::IModelsWorkspaceManager&>::Register<M_KRR<>> M_KRR_2("M_KRR");*/
+/*tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::models::memory::IModelsWorkspaceManager&>::Register<M_BLR<>> M_BLR_2("M_BLR");*/
+/*tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::models::memory::IModelsWorkspaceManager&>::Register<M_KRR<>> M_KRR_2("M_KRR");*/
 
 template<>
-CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::mlip::memory::IMLIPWorkspaceManager&>::Map
-CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::mlip::memory::IMLIPWorkspaceManager&>::registry{};
+tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::mlip::memory::IMLIPWorkspaceManager&>::Map
+tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::mlip::memory::IMLIPWorkspaceManager&>::registry{};
 
-CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::mlip::memory::IMLIPWorkspaceManager&>::Register<M_BLR<>> M_BLR_3("M_BLR");
-CONFIG::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::mlip::memory::IMLIPWorkspaceManager&>::Register<M_KRR<>> M_KRR_3("M_KRR");
+tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::mlip::memory::IMLIPWorkspaceManager&>::Register<M_BLR<>> M_BLR_3("M_BLR");
+tadah::core::Registry<M_Tadah_Base, DM_Function_Base&, tadah::core::Config&, tadah::mlip::memory::IMLIPWorkspaceManager&>::Register<M_KRR<>> M_KRR_3("M_KRR");
 } // namespace mlip
 } // namespace tadah
diff --git a/src/structure_db.cpp b/src/structure_db.cpp
index 7028155cf4ea0c6f8446bcd5b1ae09b719be2630..16dbc7e1a98e0580f3754a5aa2dd138cdc985fa1 100644
--- a/src/structure_db.cpp
+++ b/src/structure_db.cpp
@@ -283,9 +283,9 @@ void StructureDB::dump_to_file(const std::string& filepath, bool append, size_t
 }
 
 std::string StructureDB::summary() const {
-  std::string str =  "# of structures : " + to_string(structures.size());
+  std::string str =  "# of structures : " + std::to_string(structures.size());
 
-  str +=  " | # of atoms : " + to_string(calc_natoms());
+  str +=  " | # of atoms : " + std::to_string(calc_natoms());
 
   str += " | Elements : ";
   std::set<tadah::core::Element> ue = get_unique_elements(); 
diff --git a/tests/test_atom.cpp b/tests/test_atom.cpp
index fb60b03fa03c14229235eb93a8950fb5ef8dabdb..fb9b6392fd1f87c76708298ce433cc54ccec821f 100644
--- a/tests/test_atom.cpp
+++ b/tests/test_atom.cpp
@@ -3,6 +3,9 @@
 #include <tadah/mlip/atom.h>
 #include <string>
 
+using namespace tadah::core;
+using namespace tadah::mlip;
+
 
 char symbol1[]="Ti";
 int Z1 = 22;
diff --git a/tests/test_dataset_readers.cpp b/tests/test_dataset_readers.cpp
index 430bd3d55f7b4497ffadcdcdb1bcbd94aa71c209..30e65ce4fe9eeddb1b6346d0e4138abeddb98623 100644
--- a/tests/test_dataset_readers.cpp
+++ b/tests/test_dataset_readers.cpp
@@ -10,6 +10,8 @@
 #include <vector>
 
 namespace fs = std::filesystem;
+using namespace tadah::core;
+using namespace tadah::mlip;
 
 // Function to list all files in a directory
 std::vector<std::string> get_all_files(const std::string& directory) {
diff --git a/tests/test_structure.cpp b/tests/test_structure.cpp
index 0b890d5670d7ef726ad64ae43059112a852c04ec..9d6059d03222bf5364053355d7350d1a334b3276 100644
--- a/tests/test_structure.cpp
+++ b/tests/test_structure.cpp
@@ -4,6 +4,8 @@
 #include <tadah/mlip/atom.h>
 #include <tadah/mlip/structure.h>
 
+using namespace tadah::core;
+using namespace tadah::mlip;
 // Conversion factor from eV/A^3 to kbar;
 double fac = 1602.1766208;
 
diff --git a/tests/test_structure_properties.cpp b/tests/test_structure_properties.cpp
index bddbfaf4cb9368813f4764dbb3d4ce295fec5239..9af9f8e289efeface46c9ae111f401710719b1fe 100644
--- a/tests/test_structure_properties.cpp
+++ b/tests/test_structure_properties.cpp
@@ -4,6 +4,8 @@
 #include <tadah/mlip/atom.h>
 #include <tadah/core/periodic_table.h>
 
+using namespace tadah::core;
+using namespace tadah::mlip;
 // Helper to create an element from symbol
 static Element makeElement(const std::string& sym) {
     return PeriodicTable::find_by_symbol(sym);
diff --git a/tests/test_structure_transformations.cpp b/tests/test_structure_transformations.cpp
index b1473204e0a3d61525a0fd6f182aa3e5b58dde3a..cad23c4ab44f560bb743ed1872307e0686533c32 100644
--- a/tests/test_structure_transformations.cpp
+++ b/tests/test_structure_transformations.cpp
@@ -10,6 +10,8 @@
 #include <vector>
 #include <iostream>
 
+using namespace tadah::core;
+using namespace tadah::mlip;
 // Helper function to build a simple 2×2×2 box with two atoms.
 static Structure makeSimpleStructure()
 {