diff --git a/src/static_schema.cpp b/src/static_schema.cpp
index 738ce49..7102e9c 100644
--- a/src/static_schema.cpp
+++ b/src/static_schema.cpp
@@ -86,6 +86,13 @@
     m_nodes.emplace(key, std::unordered_map<std::string, NodeInfo>());
 }
 
+void StaticSchema::addLeafList(const std::string& location, const std::string& name, const yang::LeafDataType& type)
+{
+    m_nodes.at(location).emplace(name, NodeInfo{yang::leaflist{yang::TypeInfo{type, std::nullopt}}, yang::AccessType::Writable});
+    std::string key = joinPaths(location, name);
+    m_nodes.emplace(key, std::unordered_map<std::string, NodeInfo>());
+}
+
 void StaticSchema::addModule(const std::string& name)
 {
     m_modules.emplace(name);
@@ -120,7 +127,16 @@
 yang::TypeInfo StaticSchema::leafType(const schemaPath_& location, const ModuleNodePair& node) const
 {
     std::string locationString = pathToSchemaString(location, Prefixes::Always);
-    return boost::get<yang::leaf>(children(locationString).at(fullNodeName(location, node)).m_nodeType).m_type;
+    auto nodeType = children(locationString).at(fullNodeName(location, node)).m_nodeType;
+    if (nodeType.type() == typeid(yang::leaf)) {
+        return boost::get<yang::leaf>(nodeType).m_type;
+    }
+
+    if (nodeType.type() == typeid(yang::leaflist)) {
+        return boost::get<yang::leaflist>(nodeType).m_type;
+    }
+
+    throw std::logic_error("StaticSchema::leafType: Path is not a leaf or a leaflist");
 }
 
 yang::TypeInfo StaticSchema::leafType(const std::string& path) const
@@ -200,7 +216,11 @@
             return yang::NodeTypes::Leaf;
         }
 
-        throw std::runtime_error{"YangSchema::nodeType: unsupported type"};
+        if (targetNode.m_nodeType.type() == typeid(yang::leaflist)) {
+            return yang::NodeTypes::LeafList;
+        }
+
+        throw std::runtime_error{"StaticSchema::nodeType: unsupported type"};
 
     } catch (std::out_of_range&) {
         throw InvalidNodeException();
