diff --git a/src/ast_commands.hpp b/src/ast_commands.hpp
index f039ea5..5ce1cbd 100644
--- a/src/ast_commands.hpp
+++ b/src/ast_commands.hpp
@@ -50,7 +50,7 @@
         /> ls /module:node)";
     bool operator==(const ls_& b) const;
     std::vector<LsOption> m_options;
-    boost::optional<boost::variant<boost::variant<dataPath_, schemaPath_>, module_>> m_path;
+    boost::optional<boost::variant<dataPath_, schemaPath_, module_>> m_path;
 };
 
 struct cd_ : x3::position_tagged {
diff --git a/src/grammars.hpp b/src/grammars.hpp
index dfb8c10..ae7a980 100644
--- a/src/grammars.hpp
+++ b/src/grammars.hpp
@@ -47,7 +47,7 @@
 } const ls_options;
 
 auto const ls_def =
-    ls_::name >> *(space_separator >> ls_options) >> -(space_separator >> ((dataPathListEnd | dataPath | schemaPath) | (module >> "*")));
+    ls_::name >> *(space_separator >> ls_options) >> -(space_separator >> (dataPathListEnd | dataPath | schemaPath | (module >> "*")));
 
 auto const cd_def =
     cd_::name >> space_separator > dataPath;
diff --git a/src/parser.cpp b/src/parser.cpp
index 57511d3..794cc25 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -110,10 +110,15 @@
     {
         return path;
     }
+
+    [[noreturn]] schemaPath_ operator()([[maybe_unused]] const module_& path) const
+    {
+        throw std::logic_error("getSchemaPathVisitor: Tried getting a schema path from a module");
+    }
 };
 
 
-std::set<std::string> Parser::availableNodes(const boost::optional<boost::variant<boost::variant<dataPath_, schemaPath_>, module_>>& path, const Recursion& option) const
+std::set<std::string> Parser::availableNodes(const boost::optional<boost::variant<dataPath_, schemaPath_, module_>>& path, const Recursion& option) const
 {
     auto pathArg = dataPathToSchemaPath(m_curDir);
     if (path) {
@@ -121,7 +126,7 @@
             return m_schema->moduleNodes(boost::get<module_>(*path), option);
         }
 
-        auto schemaPath = boost::apply_visitor(getSchemaPathVisitor(), boost::get<boost::variant<dataPath_, schemaPath_>>(*path));
+        auto schemaPath = boost::apply_visitor(getSchemaPathVisitor(), *path);
         if (schemaPath.m_scope == Scope::Absolute) {
             pathArg = schemaPath;
         } else {
diff --git a/src/parser.hpp b/src/parser.hpp
index 7a94919..82e7daf 100644
--- a/src/parser.hpp
+++ b/src/parser.hpp
@@ -37,7 +37,7 @@
     command_ parseCommand(const std::string& line, std::ostream& errorStream);
     void changeNode(const dataPath_& name);
     std::string currentNode() const;
-    std::set<std::string> availableNodes(const boost::optional<boost::variant<boost::variant<dataPath_, schemaPath_>, module_>>& path, const Recursion& option) const;
+    std::set<std::string> availableNodes(const boost::optional<boost::variant<dataPath_, schemaPath_, module_>>& path, const Recursion& option) const;
     Completions completeCommand(const std::string& line, std::ostream& errorStream) const;
 
 private:
diff --git a/tests/parser_methods.cpp b/tests/parser_methods.cpp
index bd53a24..4f7a482 100644
--- a/tests/parser_methods.cpp
+++ b/tests/parser_methods.cpp
@@ -44,7 +44,7 @@
     SECTION("availableNodes")
     {
         std::set<std::string> expected;
-        boost::optional<boost::variant<boost::variant<dataPath_, schemaPath_>, module_>> arg{boost::none};
+        boost::optional<boost::variant<dataPath_, schemaPath_, module_>> arg{boost::none};
         SECTION("cwd: /")
         {
             SECTION("arg: <none>")
