diff --git a/src/ast_handlers.hpp b/src/ast_handlers.hpp
index 9f2ddef..2e4753d 100644
--- a/src/ast_handlers.hpp
+++ b/src/ast_handlers.hpp
@@ -183,7 +183,7 @@
         auto& parserContext = x3::get<parser_context_tag>(context);
         const auto& schema = parserContext.m_schema;
 
-        if (schema.isModule(parserContext.m_curPath, ast.m_name)) {
+        if (schema.isModule(ast.m_name)) {
             parserContext.m_curModule = ast.m_name;
             parserContext.m_topLevelModulePresent = true;
         } else {
diff --git a/src/schema.hpp b/src/schema.hpp
index b5e17a2..b8d74a8 100644
--- a/src/schema.hpp
+++ b/src/schema.hpp
@@ -66,7 +66,7 @@
 
     virtual bool isContainer(const schemaPath_& location, const ModuleNodePair& node) const = 0;
     virtual bool isLeaf(const schemaPath_& location, const ModuleNodePair& node) const = 0;
-    virtual bool isModule(const schemaPath_& location, const std::string& name) const = 0;
+    virtual bool isModule(const std::string& name) const = 0;
     virtual bool isList(const schemaPath_& location, const ModuleNodePair& node) const = 0;
     virtual bool isPresenceContainer(const schemaPath_& location, const ModuleNodePair& node) const = 0;
     virtual bool leafEnumHasValue(const schemaPath_& location, const ModuleNodePair& node, const std::string& value) const = 0;
diff --git a/src/static_schema.cpp b/src/static_schema.cpp
index 8800a9a..ad2025c 100644
--- a/src/static_schema.cpp
+++ b/src/static_schema.cpp
@@ -31,7 +31,7 @@
     return childrenRef.find(node) != childrenRef.end();
 }
 
-bool StaticSchema::isModule(const schemaPath_&, const std::string& name) const
+bool StaticSchema::isModule(const std::string& name) const
 {
     return m_modules.find(name) != m_modules.end();
 }
diff --git a/src/static_schema.hpp b/src/static_schema.hpp
index e82d43e..742c53d 100644
--- a/src/static_schema.hpp
+++ b/src/static_schema.hpp
@@ -49,7 +49,7 @@
     StaticSchema();
 
     bool isContainer(const schemaPath_& location, const ModuleNodePair& node) const override;
-    bool isModule(const schemaPath_& location, const std::string& name) const override;
+    bool isModule(const std::string& name) const override;
     bool isLeaf(const schemaPath_& location, const ModuleNodePair& node) const override;
     bool isList(const schemaPath_& location, const ModuleNodePair& node) const override;
     bool isPresenceContainer(const schemaPath_& location, const ModuleNodePair& node) const override;
diff --git a/src/yang_schema.cpp b/src/yang_schema.cpp
index 89c515d..9868c63 100644
--- a/src/yang_schema.cpp
+++ b/src/yang_schema.cpp
@@ -81,7 +81,7 @@
     }
 }
 
-bool YangSchema::isModule(const schemaPath_&, const std::string& name) const
+bool YangSchema::isModule(const std::string& name) const
 {
     const auto set = modules();
     return set.find(name) != set.end();
diff --git a/src/yang_schema.hpp b/src/yang_schema.hpp
index 14b0f1e..27452de 100644
--- a/src/yang_schema.hpp
+++ b/src/yang_schema.hpp
@@ -31,7 +31,7 @@
 
     bool isContainer(const schemaPath_& location, const ModuleNodePair& node) const override;
     bool isLeaf(const schemaPath_& location, const ModuleNodePair& node) const override;
-    bool isModule(const schemaPath_& location, const std::string& name) const override;
+    bool isModule(const std::string& name) const override;
     bool isList(const schemaPath_& location, const ModuleNodePair& node) const override;
     bool isPresenceContainer(const schemaPath_& location, const ModuleNodePair& node) const override;
     bool leafEnumHasValue(const schemaPath_& location, const ModuleNodePair& node, const std::string& value) const override;
diff --git a/tests/yang.cpp b/tests/yang.cpp
index 6ce0fb2..64bf08e 100644
--- a/tests/yang.cpp
+++ b/tests/yang.cpp
@@ -360,7 +360,7 @@
         }
         SECTION("isModule")
         {
-            REQUIRE(ys.isModule(path, "example-schema"));
+            REQUIRE(ys.isModule("example-schema"));
         }
         SECTION("isList")
         {
@@ -809,7 +809,7 @@
 
         SECTION("nonexistent module")
         {
-            REQUIRE(!ys.isModule(path, "notAModule"));
+            REQUIRE(!ys.isModule("notAModule"));
         }
 
         SECTION("leafIdentityIsValid")
