diff --git a/src/static_schema.hpp b/src/static_schema.hpp
index bab8bde..1a84e23 100644
--- a/src/static_schema.hpp
+++ b/src/static_schema.hpp
@@ -19,28 +19,33 @@
 /*! \class StaticSchema
  *     \brief Static schema, used mainly for testing
  *         */
+using ModuleNodePair = std::pair<boost::optional<std::string>, std::string>;
 
 class StaticSchema : public Schema {
 public:
     StaticSchema();
 
-    bool isContainer(const path_& location, const std::string& name) const override;
-    bool isLeaf(const path_& location, const std::string& name) const override;
-    bool isList(const path_& location, const std::string& name) const override;
-    bool isPresenceContainer(const path_& location, const std::string& name) const override;
-    bool leafEnumHasValue(const path_& location, const std::string& name, const std::string& value) const override;
-    bool listHasKey(const path_& location, const std::string& name, const std::string& key) const override;
-    bool nodeExists(const std::string& location, const std::string& name) const override;
-    const std::set<std::string>& listKeys(const path_& location, const std::string& name) const override;
-    yang::LeafDataTypes leafType(const path_& location, const std::string& name) const override;
+    bool isContainer(const path_& location, const ModuleNodePair& node) const override;
+    bool isModule(const path_& location, const std::string& name) const override;
+    bool isLeaf(const path_& location, const ModuleNodePair& node) const override;
+    bool isList(const path_& location, const ModuleNodePair& node) const override;
+    bool isPresenceContainer(const path_& location, const ModuleNodePair& node) const override;
+    bool leafEnumHasValue(const path_& location, const ModuleNodePair& node, const std::string& value) const override;
+    bool listHasKey(const path_& location, const ModuleNodePair& node, const std::string& key) const override;
+    bool nodeExists(const std::string& location, const std::string& node) const override;
+    const std::set<std::string>& listKeys(const path_& location, const ModuleNodePair& node) const override;
+    yang::LeafDataTypes leafType(const path_& location, const ModuleNodePair& node) const override;
+    std::set<std::string> childNodes(const path_& path) const override;
 
     void addContainer(const std::string& location, const std::string& name, yang::ContainerTraits isPresence = yang::ContainerTraits::None);
     void addLeaf(const std::string& location, const std::string& name, const yang::LeafDataTypes& type);
     void addLeafEnum(const std::string& location, const std::string& name, std::set<std::string> enumValues);
     void addList(const std::string& location, const std::string& name, const std::set<std::string>& keys);
+    void addModule(const std::string& name);
 
 private:
     const std::unordered_map<std::string, NodeType>& children(const std::string& name) const;
 
     std::unordered_map<std::string, std::unordered_map<std::string, NodeType>> m_nodes;
+    std::set<std::string> m_modules;
 };
