diff --git a/src/cli.cpp b/src/cli.cpp
index 9827fa3..6940205 100644
--- a/src/cli.cpp
+++ b/src/cli.cpp
@@ -40,12 +40,12 @@
   will be used to find a schema for that module.
 
 Usage:
-  yang-cli [--configonly] [--ignore-unknown-data] [-s <search_dir>] [-e enable_features]... [-i data_file]... <schema_file_or_module_name>...
+  yang-cli [--configonly] [--ignore-unknown-data] [-s <search_dir>]... [-e enable_features]... [-i data_file]... <schema_file_or_module_name>...
   yang-cli (-h | --help)
   yang-cli --version
 
 Options:
-  -s <search_dir>        Set search for schema lookup
+  -s <search_dir>        Search in these directories for YANG schema files. This option can be supplied more than once.
   -e <enable_features>   Feature to enable after modules are loaded. This option can be supplied more than once. Format: <module_name>:<feature>
   -i <data_file>         File to import data from
   --configonly           Disable editing of operational data
@@ -124,8 +124,8 @@
         writableOps = WritableOps::Yes;
         std::cout << "ops is writable" << std::endl;
     }
-    if (const auto& search_dir = args["-s"]) {
-        datastore->addSchemaDir(search_dir.asString());
+    for (const auto& dir : args["-s"].asStringList()) {
+        datastore->addSchemaDir(dir);
     }
     for (const auto& schemaFile : args["<schema_file_or_module_name>"].asStringList()) {
         if (std::filesystem::exists(schemaFile)) {
diff --git a/src/yang_access.cpp b/src/yang_access.cpp
index 96efdb8..4d7556d 100644
--- a/src/yang_access.cpp
+++ b/src/yang_access.cpp
@@ -273,14 +273,14 @@
     m_schema->loadModule(name);
 }
 
-void YangAccess::addSchemaFile(const std::string& path)
+void YangAccess::addSchemaFile(const std::filesystem::path& path)
 {
-    m_schema->addSchemaFile(path.c_str());
+    m_schema->addSchemaFile(path);
 }
 
-void YangAccess::addSchemaDir(const std::string& path)
+void YangAccess::addSchemaDir(const std::filesystem::path& path)
 {
-    m_schema->addSchemaDirectory(path.c_str());
+    m_schema->addSchemaDirectory(path);
 }
 
 void YangAccess::setEnabledFeatures(const std::string& module, const std::vector<std::string>& features)
diff --git a/src/yang_access.hpp b/src/yang_access.hpp
index aab5d81..17586b5 100644
--- a/src/yang_access.hpp
+++ b/src/yang_access.hpp
@@ -45,8 +45,8 @@
     [[nodiscard]] std::string dump(const DataFormat format) const override;
 
     void loadModule(const std::string& name);
-    void addSchemaFile(const std::string& path);
-    void addSchemaDir(const std::string& path);
+    void addSchemaFile(const std::filesystem::path& path);
+    void addSchemaDir(const std::filesystem::path& path);
     void addDataFile(const std::string& path, const StrictDataParsing strict);
 
 private:
diff --git a/src/yang_schema.cpp b/src/yang_schema.cpp
index 26ef38d..3c5456e 100644
--- a/src/yang_schema.cpp
+++ b/src/yang_schema.cpp
@@ -48,14 +48,14 @@
     m_context.parseModule(std::string{schema}, libyang::SchemaFormat::YANG);
 }
 
-void YangSchema::addSchemaDirectory(const char* directoryName)
+void YangSchema::addSchemaDirectory(const std::filesystem::path& directory)
 {
-    m_context.setSearchDir(directoryName);
+    m_context.setSearchDir(directory);
 }
 
-void YangSchema::addSchemaFile(const char* filename)
+void YangSchema::addSchemaFile(const std::filesystem::path& filename)
 {
-    m_context.parseModule(std::filesystem::path{filename}, libyang::SchemaFormat::YANG);
+    m_context.parseModule(filename, libyang::SchemaFormat::YANG);
 }
 
 bool YangSchema::isModule(const std::string& name) const
diff --git a/src/yang_schema.hpp b/src/yang_schema.hpp
index fe5cf1c..36766d6 100644
--- a/src/yang_schema.hpp
+++ b/src/yang_schema.hpp
@@ -8,6 +8,7 @@
 
 #pragma once
 
+#include <filesystem>
 #include <functional>
 #include <libyang-cpp/Context.hpp>
 #include <optional>
@@ -54,10 +55,10 @@
     void addSchemaString(const char* schema);
 
     /** @short Adds a new module from a file. */
-    void addSchemaFile(const char* filename);
+    void addSchemaFile(const std::filesystem::path& filename);
 
     /** @short Adds a new directory for schema lookup. */
-    void addSchemaDirectory(const char* directoryName);
+    void addSchemaDirectory(const std::filesystem::path& directory);
 
     /** @short Creates a new data node from a path (to be used with NETCONF edit-config) */
     [[nodiscard]] libyang::CreatedNodes dataNodeFromPath(const std::string& path, const std::optional<const std::string> value = std::nullopt) const;
