diff --git a/src/language/ASTModulesImporter.cpp b/src/language/ASTModulesImporter.cpp
index e15268ec1d4859342b4cf89eb22ed2d8861a54eb..257e0d916cde6aaba9ca748272a1f7b9a3550be1 100644
--- a/src/language/ASTModulesImporter.cpp
+++ b/src/language/ASTModulesImporter.cpp
@@ -5,6 +5,8 @@
 
 #include <PEGGrammar.hpp>
 
+#include <CMathModule.hpp>
+
 void
 ASTModulesImporter::_importModule(ASTNode& import_node)
 {
@@ -17,6 +19,8 @@ ASTModulesImporter::_importModule(ASTNode& import_node)
   std::cout << " * importing '" << rang::fgB::green << module_name << rang::style::reset << "' module\n";
 
   if (module_name == "math") {
+    CMathModule math_module;
+
     std::string symbol_name{"sin"};
 
     auto [i_symbol, success] = m_symbol_table.add(symbol_name, import_node.begin());
diff --git a/src/language/CMakeLists.txt b/src/language/CMakeLists.txt
index b88c971c4fdcb1a75514f85109710d8dfa649f06..e00a6a19dd0c350bd0b1493cd2fa011781ddff36 100644
--- a/src/language/CMakeLists.txt
+++ b/src/language/CMakeLists.txt
@@ -28,6 +28,7 @@ add_library(
   ASTPrinter.cpp
   ASTSymbolTableBuilder.cpp
   ASTSymbolInitializationChecker.cpp
+  CMathModule.cpp
   PugsParser.cpp)
 
 # Additional dependencies
diff --git a/src/language/CMathModule.cpp b/src/language/CMathModule.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2508026aeac10a13509b906b289362d100d83023
--- /dev/null
+++ b/src/language/CMathModule.cpp
@@ -0,0 +1,9 @@
+#include <CMathModule.hpp>
+
+#include <iostream>
+
+CMathModule::CMathModule()
+{
+  std::cerr << __FILE__ << ':' << __LINE__ << ": CMathModule construction NIY\n";
+  std::exit(1);
+}
diff --git a/src/language/CMathModule.hpp b/src/language/CMathModule.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..d7d92998339aee288848a8877c29c889d65120a6
--- /dev/null
+++ b/src/language/CMathModule.hpp
@@ -0,0 +1,31 @@
+#ifndef CMATH_MODULE_HPP
+#define CMATH_MODULE_HPP
+
+#include <PugsMacros.hpp>
+
+#include <map>
+#include <memory>
+#include <string>
+#include <vector>
+
+class ICFunctionEmbedder;
+class CMathModule
+{
+ private:
+  std::map<std::string, uint64_t> m_name_fid_map;
+  std::vector<std::shared_ptr<ICFunctionEmbedder>> m_cfunction_list;
+
+ public:
+  PUGS_INLINE
+  auto
+  find(const std::string& name) const
+  {
+    return m_name_fid_map.find(name);
+  }
+
+  CMathModule();
+
+  ~CMathModule() = default;
+};
+
+#endif   // CMATH_MODULE_HPP