diff --git a/src/language/modules/MeshModule.cpp b/src/language/modules/MeshModule.cpp
index 153c1be1154ac1a5432ae00ba66b56e7b44937c2..d93927e177c6724bc26dd8f48d54318753b1118d 100644
--- a/src/language/modules/MeshModule.cpp
+++ b/src/language/modules/MeshModule.cpp
@@ -10,9 +10,12 @@
 #include <mesh/Connectivity.hpp>
 #include <mesh/DualMeshManager.hpp>
 #include <mesh/GmshReader.hpp>
+#include <mesh/IBoundaryDescriptor.hpp>
 #include <mesh/Mesh.hpp>
 #include <mesh/MeshRelaxer.hpp>
 #include <mesh/MeshTransformer.hpp>
+#include <mesh/NamedBoundaryDescriptor.hpp>
+#include <mesh/NumberedBoundaryDescriptor.hpp>
 #include <utils/Exceptions.hpp>
 
 #include <Kokkos_Core.hpp>
@@ -31,6 +34,26 @@ MeshModule::MeshModule()
 
                               ));
 
+  this->_addBuiltinFunction("boundaryName",
+                            std::make_shared<
+                              BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryDescriptor>(const std::string&)>>(
+
+                              [](const std::string& boundary_name) -> std::shared_ptr<const IBoundaryDescriptor> {
+                                return std::make_shared<NamedBoundaryDescriptor>(boundary_name);
+                              }
+
+                              ));
+
+  this->_addBuiltinFunction("boundaryTag",
+                            std::make_shared<
+                              BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryDescriptor>(int64_t)>>(
+
+                              [](int64_t boundary_tag) -> std::shared_ptr<const IBoundaryDescriptor> {
+                                return std::make_shared<NumberedBoundaryDescriptor>(boundary_tag);
+                              }
+
+                              ));
+
   this->_addBuiltinFunction("transform",
                             std::make_shared<BuiltinFunctionEmbedder<
                               std::shared_ptr<const IMesh>(std::shared_ptr<const IMesh>, const FunctionSymbolId&)>>(
diff --git a/src/language/modules/MeshModule.hpp b/src/language/modules/MeshModule.hpp
index 3ef6f2856d052e7b7c5ab63393843145eec6f230..f6ab9c8509b59f264800883e2bbe149d4d060a41 100644
--- a/src/language/modules/MeshModule.hpp
+++ b/src/language/modules/MeshModule.hpp
@@ -6,11 +6,15 @@
 #include <utils/PugsMacros.hpp>
 
 class IMesh;
-
 template <>
 inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const IMesh>> =
   ASTNodeDataType::build<ASTNodeDataType::type_id_t>("mesh");
 
+class IBoundaryDescriptor;
+template <>
+inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const IBoundaryDescriptor>> =
+  ASTNodeDataType::build<ASTNodeDataType::type_id_t>("boundary");
+
 class MeshModule : public BuiltinModule
 {
  public:
diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp
index f80201c7e424728db5663045e5b663c5e306e4d4..ec5329bc9682125005826d4fbfafe07febebed9d 100644
--- a/src/language/modules/SchemeModule.cpp
+++ b/src/language/modules/SchemeModule.cpp
@@ -33,9 +33,7 @@
 #include <scheme/IBoundaryConditionDescriptor.hpp>
 #include <scheme/IDiscreteFunction.hpp>
 #include <scheme/IDiscreteFunctionDescriptor.hpp>
-#include <scheme/NamedBoundaryDescriptor.hpp>
 #include <scheme/NeumannBoundaryConditionDescriptor.hpp>
-#include <scheme/NumberedBoundaryDescriptor.hpp>
 #include <scheme/SymmetryBoundaryConditionDescriptor.hpp>
 #include <utils/Socket.hpp>
 
@@ -191,26 +189,6 @@ SchemeModule::SchemeModule()
 
                               ));
 
-  this->_addBuiltinFunction("boundaryName",
-                            std::make_shared<
-                              BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryDescriptor>(const std::string&)>>(
-
-                              [](const std::string& boundary_name) -> std::shared_ptr<const IBoundaryDescriptor> {
-                                return std::make_shared<NamedBoundaryDescriptor>(boundary_name);
-                              }
-
-                              ));
-
-  this->_addBuiltinFunction("boundaryTag",
-                            std::make_shared<
-                              BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryDescriptor>(int64_t)>>(
-
-                              [](int64_t boundary_tag) -> std::shared_ptr<const IBoundaryDescriptor> {
-                                return std::make_shared<NumberedBoundaryDescriptor>(boundary_tag);
-                              }
-
-                              ));
-
   this
     ->_addBuiltinFunction("fixed",
                           std::make_shared<BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryConditionDescriptor>(
diff --git a/src/language/modules/SchemeModule.hpp b/src/language/modules/SchemeModule.hpp
index 52fc163ee5b6bfcec2cbeceb6d618e9ce3d9c213..6c1f0324aa2858437ec8d7f49434c2d8ac718a45 100644
--- a/src/language/modules/SchemeModule.hpp
+++ b/src/language/modules/SchemeModule.hpp
@@ -5,11 +5,6 @@
 #include <language/utils/ASTNodeDataTypeTraits.hpp>
 #include <utils/PugsMacros.hpp>
 
-class IBoundaryDescriptor;
-template <>
-inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const IBoundaryDescriptor>> =
-  ASTNodeDataType::build<ASTNodeDataType::type_id_t>("boundary");
-
 class IBoundaryConditionDescriptor;
 template <>
 inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const IBoundaryConditionDescriptor>> =
diff --git a/src/scheme/NamedBoundaryDescriptor.hpp b/src/mesh/NamedBoundaryDescriptor.hpp
similarity index 100%
rename from src/scheme/NamedBoundaryDescriptor.hpp
rename to src/mesh/NamedBoundaryDescriptor.hpp
diff --git a/src/scheme/NumberedBoundaryDescriptor.hpp b/src/mesh/NumberedBoundaryDescriptor.hpp
similarity index 100%
rename from src/scheme/NumberedBoundaryDescriptor.hpp
rename to src/mesh/NumberedBoundaryDescriptor.hpp