diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e21d4f..4ec7140 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,7 +57,8 @@
 set(parser_SRCS
     src/schema.cpp
     src/parser.cpp
-    src/ast.cpp
+    src/ast_commands.cpp
+    src/ast_path.cpp
     src/utils.cpp
     src/parser_context.cpp
     src/interpreter.cpp
diff --git a/src/ast.cpp b/src/ast.cpp
deleted file mode 100644
index 35bf1cb..0000000
--- a/src/ast.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
- * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
- *
- * Written by Václav Kubernát <kubervac@fit.cvut.cz>
- *
-*/
-#include "ast.hpp"
-
-
-container_::container_(const std::string& name)
-    : m_name(name)
-{
-}
-
-bool container_::operator==(const container_& b) const
-{
-    return this->m_name == b.m_name;
-}
-
-leaf_::leaf_(const std::string& name)
-    : m_name(name)
-{
-}
-
-bool leaf_::operator==(const leaf_& b) const
-{
-    return this->m_name == b.m_name;
-}
-
-listElement_::listElement_(const std::string& listName, const std::map<std::string, std::string>& keys)
-    : m_name(listName)
-    , m_keys(keys)
-{
-}
-
-bool listElement_::operator==(const listElement_& b) const
-{
-    return (this->m_name == b.m_name && this->m_keys == b.m_keys);
-}
-
-bool path_::operator==(const path_& b) const
-{
-    if (this->m_nodes.size() != b.m_nodes.size())
-        return false;
-    return this->m_nodes == b.m_nodes;
-}
-
-bool set_::operator==(const set_& b) const
-{
-    return this->m_path == b.m_path && this->m_data == b.m_data;
-}
-
-bool cd_::operator==(const cd_& b) const
-{
-    return this->m_path == b.m_path;
-}
-
-bool create_::operator==(const create_& b) const
-{
-    return this->m_path == b.m_path;
-}
-
-bool delete_::operator==(const delete_& b) const
-{
-    return this->m_path == b.m_path;
-}
diff --git a/src/ast.hpp b/src/ast.hpp
deleted file mode 100644
index 9638684..0000000
--- a/src/ast.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
- * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
- *
- * Written by Václav Kubernát <kubervac@fit.cvut.cz>
- *
-*/
-#pragma once
-#include <boost/spirit/home/x3.hpp>
-#include <boost/spirit/home/x3/support/ast/position_tagged.hpp>
-#include <boost/spirit/home/x3/support/utility/error_reporting.hpp>
-
-#include <boost/fusion/adapted/struct/adapt_struct.hpp>
-#include <boost/fusion/include/adapt_struct.hpp>
-#include <boost/fusion/include/std_pair.hpp>
-#include <boost/variant.hpp>
-#include <map>
-#include <vector>
-
-#include "utils.hpp"
-namespace x3 = boost::spirit::x3;
-namespace ascii = boost::spirit::x3::ascii;
-
-using ascii::space;
-using x3::_attr;
-using x3::alnum;
-using x3::alpha;
-using x3::char_;
-using x3::expect;
-using x3::lexeme;
-using x3::lit;
-using boost::fusion::operator<<;
-
-
-using keyValue_ = std::pair<std::string, std::string>;
-
-
-struct parser_context_tag;
-
-
-struct nodeup_ {
-    bool operator==(const nodeup_&) const
-    {
-        return true;
-    }
-};
-
-struct container_ {
-    container_() = default;
-    container_(const std::string& name);
-
-    bool operator==(const container_& b) const;
-
-    std::string m_name;
-};
-
-struct leaf_ {
-    leaf_() = default;
-    leaf_(const std::string& name);
-
-    bool operator==(const leaf_& b) const;
-
-    std::string m_name;
-};
-
-
-struct list_ {
-    std::vector<std::string> m_keys;
-};
-
-struct listElement_ {
-    listElement_() {}
-    listElement_(const std::string& listName, const std::map<std::string, std::string>& keys);
-
-    bool operator==(const listElement_& b) const;
-
-    std::string m_name;
-    std::map<std::string, std::string> m_keys;
-};
-
-
-struct path_ {
-    bool operator==(const path_& b) const;
-    std::vector<boost::variant<container_, listElement_, nodeup_, leaf_>> m_nodes;
-};
-
-
-struct cd_ : x3::position_tagged {
-    bool operator==(const cd_& b) const;
-    path_ m_path;
-};
-
-struct create_ : x3::position_tagged {
-    bool operator==(const create_& b) const;
-    path_ m_path;
-};
-
-struct delete_ : x3::position_tagged {
-    bool operator==(const delete_& b) const;
-    path_ m_path;
-};
-
-struct set_ : x3::position_tagged {
-    bool operator==(const set_& b) const;
-    path_ m_path;
-    std::string m_data;
-};
-
-using command_ = boost::variant<cd_, create_, delete_, set_>;
-
-BOOST_FUSION_ADAPT_STRUCT(container_, m_name)
-BOOST_FUSION_ADAPT_STRUCT(listElement_, m_name, m_keys)
-BOOST_FUSION_ADAPT_STRUCT(path_, m_nodes)
-BOOST_FUSION_ADAPT_STRUCT(cd_, m_path)
-BOOST_FUSION_ADAPT_STRUCT(create_, m_path)
-BOOST_FUSION_ADAPT_STRUCT(delete_, m_path)
-BOOST_FUSION_ADAPT_STRUCT(set_, m_path, m_data)
diff --git a/src/ast_commands.cpp b/src/ast_commands.cpp
new file mode 100644
index 0000000..a8b481d
--- /dev/null
+++ b/src/ast_commands.cpp
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
+ * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
+ *
+ * Written by Václav Kubernát <kubervac@fit.cvut.cz>
+ *
+*/
+#include "ast_commands.hpp"
+
+
+bool set_::operator==(const set_& b) const
+{
+    return this->m_path == b.m_path && this->m_data == b.m_data;
+}
+
+bool cd_::operator==(const cd_& b) const
+{
+    return this->m_path == b.m_path;
+}
+
+bool create_::operator==(const create_& b) const
+{
+    return this->m_path == b.m_path;
+}
+
+bool delete_::operator==(const delete_& b) const
+{
+    return this->m_path == b.m_path;
+}
diff --git a/src/ast_commands.hpp b/src/ast_commands.hpp
new file mode 100644
index 0000000..5caeb2e
--- /dev/null
+++ b/src/ast_commands.hpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
+ * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
+ *
+ * Written by Václav Kubernát <kubervac@fit.cvut.cz>
+ *
+*/
+#pragma once
+
+#include "ast_path.hpp"
+
+namespace x3 = boost::spirit::x3;
+namespace ascii = boost::spirit::x3::ascii;
+
+using ascii::space;
+using x3::_attr;
+using x3::alnum;
+using x3::alpha;
+using x3::char_;
+using x3::expect;
+using x3::lexeme;
+using x3::lit;
+
+struct parser_context_tag;
+
+using keyValue_ = std::pair<std::string, std::string>;
+
+struct cd_ : x3::position_tagged {
+    bool operator==(const cd_& b) const;
+    path_ m_path;
+};
+
+struct create_ : x3::position_tagged {
+    bool operator==(const create_& b) const;
+    path_ m_path;
+};
+
+struct delete_ : x3::position_tagged {
+    bool operator==(const delete_& b) const;
+    path_ m_path;
+};
+
+struct set_ : x3::position_tagged {
+    bool operator==(const set_& b) const;
+    path_ m_path;
+    std::string m_data;
+};
+
+using command_ = boost::variant<cd_, create_, delete_, set_>;
+
+BOOST_FUSION_ADAPT_STRUCT(cd_, m_path)
+BOOST_FUSION_ADAPT_STRUCT(create_, m_path)
+BOOST_FUSION_ADAPT_STRUCT(delete_, m_path)
+BOOST_FUSION_ADAPT_STRUCT(set_, m_path, m_data)
diff --git a/src/ast_path.cpp b/src/ast_path.cpp
new file mode 100644
index 0000000..2d2c600
--- /dev/null
+++ b/src/ast_path.cpp
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
+ * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
+ *
+ * Written by Václav Kubernát <kubervac@fit.cvut.cz>
+ *
+*/
+
+#include <experimental/iterator>
+#include "ast_path.hpp"
+#include "utils.hpp"
+
+container_::container_(const std::string& name)
+    : m_name(name)
+{
+}
+
+bool container_::operator==(const container_& b) const
+{
+    return this->m_name == b.m_name;
+}
+
+leaf_::leaf_(const std::string& name)
+    : m_name(name)
+{
+}
+
+bool leaf_::operator==(const leaf_& b) const
+{
+    return this->m_name == b.m_name;
+}
+
+listElement_::listElement_(const std::string& listName, const std::map<std::string, std::string>& keys)
+    : m_name(listName)
+    , m_keys(keys)
+{
+}
+
+bool listElement_::operator==(const listElement_& b) const
+{
+    return (this->m_name == b.m_name && this->m_keys == b.m_keys);
+}
+
+bool path_::operator==(const path_& b) const
+{
+    if (this->m_nodes.size() != b.m_nodes.size())
+        return false;
+    return this->m_nodes == b.m_nodes;
+}
+
+
+struct nodeToSchemaString : public boost::static_visitor<std::string> {
+    std::string operator()(const nodeup_&) const
+    {
+        return "..";
+    }
+    template <class T>
+    std::string operator()(const T& node) const
+    {
+        return node.m_name;
+    }
+};
+struct nodeToDataString : public boost::static_visitor<std::string> {
+    std::string operator()(const listElement_& node) const
+    {
+        std::ostringstream res;
+        res << node.m_name + "[";
+        std::transform(node.m_keys.begin(), node.m_keys.end(),
+                std::experimental::make_ostream_joiner(res, ' '),
+                [] (const auto& it) { return it.first + "=" + it.second; });
+        res << "]";
+    return res.str();
+    }
+    std::string operator()(const nodeup_&) const
+    {
+        return "..";
+    }
+    template <class T>
+    std::string operator()(const T& node) const
+    {
+        return node.m_name;
+    }
+};
+
+std::string pathToDataString(const path_& path)
+{
+    std::string res;
+    for (const auto it : path.m_nodes)
+        res = joinPaths(res, boost::apply_visitor(nodeToDataString(), it));
+    return res;
+}
+
+std::string pathToSchemaString(const path_& path)
+{
+    std::string res;
+    for (const auto it : path.m_nodes)
+        res = joinPaths(res, boost::apply_visitor(nodeToSchemaString(), it));
+    return res;
+}
diff --git a/src/ast_path.hpp b/src/ast_path.hpp
new file mode 100644
index 0000000..1a4b282
--- /dev/null
+++ b/src/ast_path.hpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
+ * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
+ *
+ * Written by Václav Kubernát <kubervac@fit.cvut.cz>
+ *
+*/
+#pragma once
+
+#include <boost/spirit/home/x3.hpp>
+#include <boost/spirit/home/x3/support/ast/position_tagged.hpp>
+#include <boost/spirit/home/x3/support/utility/error_reporting.hpp>
+
+#include <boost/fusion/adapted/struct/adapt_struct.hpp>
+#include <boost/fusion/include/adapt_struct.hpp>
+#include <boost/fusion/include/std_pair.hpp>
+#include <boost/variant.hpp>
+#include <map>
+#include <vector>
+
+struct nodeup_ {
+    bool operator==(const nodeup_&) const
+    {
+        return true;
+    }
+};
+
+struct container_ {
+    container_() = default;
+    container_(const std::string& name);
+
+    bool operator==(const container_& b) const;
+
+    std::string m_name;
+};
+
+struct leaf_ {
+    leaf_() = default;
+    leaf_(const std::string& name);
+
+    bool operator==(const leaf_& b) const;
+
+    std::string m_name;
+};
+
+struct listElement_ {
+    listElement_() {}
+    listElement_(const std::string& listName, const std::map<std::string, std::string>& keys);
+
+    bool operator==(const listElement_& b) const;
+
+    std::string m_name;
+    std::map<std::string, std::string> m_keys;
+};
+
+struct path_ {
+    bool operator==(const path_& b) const;
+    std::vector<boost::variant<container_, listElement_, nodeup_, leaf_>> m_nodes;
+};
+
+
+std::string pathToDataString(const path_& path);
+std::string pathToSchemaString(const path_& path);
+
+BOOST_FUSION_ADAPT_STRUCT(container_, m_name)
+BOOST_FUSION_ADAPT_STRUCT(listElement_, m_name, m_keys)
+BOOST_FUSION_ADAPT_STRUCT(path_, m_nodes)
diff --git a/src/grammars.hpp b/src/grammars.hpp
index 9e4ea35..937fd3c 100644
--- a/src/grammars.hpp
+++ b/src/grammars.hpp
@@ -8,7 +8,7 @@
 
 #pragma once
 
-#include "ast.hpp"
+#include "ast_commands.hpp"
 #include "ast_handlers.hpp"
 
 
diff --git a/src/parser.cpp b/src/parser.cpp
index f26b164..e2d0330 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -5,7 +5,6 @@
  * Written by Václav Kubernát <kubervac@fit.cvut.cz>
  *
 */
-#include <experimental/iterator>
 #include <ostream>
 #include "parser.hpp"
 
@@ -19,28 +18,6 @@
 {
 }
 
-struct nodeToDataString : public boost::static_visitor<std::string> {
-    std::string operator()(const listElement_& node) const
-    {
-        std::ostringstream res;
-        res << node.m_name + "[";
-        std::transform(node.m_keys.begin(), node.m_keys.end(),
-                       std::experimental::make_ostream_joiner(res, ' '),
-                       [] (const auto& it) { return it.first + "=" + it.second; });
-        res << "]";
-        return res.str();
-    }
-    std::string operator()(const nodeup_&) const
-    {
-        return "..";
-    }
-    template <class T>
-    std::string operator()(const T& node) const
-    {
-        return node.m_name;
-    }
-};
-
 command_ Parser::parseCommand(const std::string& line, std::ostream& errorStream)
 {
     command_ parsedCommand;
@@ -74,10 +51,5 @@
 
 std::string Parser::currentNode() const
 {
-    std::string res;
-    for (const auto& it : m_curDir.m_nodes) {
-        res = joinPaths(res, boost::apply_visitor(nodeToDataString(), it));
-    }
-
-    return res;
+    return pathToDataString(m_curDir);
 }
diff --git a/src/schema.cpp b/src/schema.cpp
index 9832c45..95cd4ae 100644
--- a/src/schema.cpp
+++ b/src/schema.cpp
@@ -11,26 +11,6 @@
 
 InvalidNodeException::~InvalidNodeException() = default;
 
-struct nodeToSchemaString : public boost::static_visitor<std::string> {
-    std::string operator()(const nodeup_&) const
-    {
-        return "..";
-    }
-    template <class T>
-    std::string operator()(const T& node) const
-    {
-        return node.m_name;
-    }
-};
-
-std::string pathToString(const path_& path)
-{
-    std::string res;
-    for (const auto it : path.m_nodes)
-        res = joinPaths(res, boost::apply_visitor(nodeToSchemaString(), it));
-    return res;
-}
-
 Schema::Schema()
 {
     m_nodes.emplace("", std::unordered_map<std::string, NodeType>());
@@ -52,7 +32,7 @@
 
 bool Schema::isContainer(const path_& location, const std::string& name) const
 {
-    std::string locationString = pathToString(location);
+    std::string locationString = pathToSchemaString(location);
     if (!nodeExists(locationString, name))
         return false;
 
@@ -71,7 +51,7 @@
 
 bool Schema::listHasKey(const path_& location, const std::string& name, const std::string& key) const
 {
-    std::string locationString = pathToString(location);
+    std::string locationString = pathToSchemaString(location);
     assert(isList(location, name));
 
     const auto& child = children(locationString).at(name);
@@ -81,7 +61,7 @@
 
 const std::set<std::string>& Schema::listKeys(const path_& location, const std::string& name) const
 {
-    std::string locationString = pathToString(location);
+    std::string locationString = pathToSchemaString(location);
     assert(isList(location, name));
 
     const auto& child = children(locationString).at(name);
@@ -91,7 +71,7 @@
 
 bool Schema::isList(const path_& location, const std::string& name) const
 {
-    std::string locationString = pathToString(location);
+    std::string locationString = pathToSchemaString(location);
     if (!nodeExists(locationString, name))
         return false;
     const auto& child = children(locationString).at(name);
@@ -112,7 +92,7 @@
 {
     if (!isContainer(location, name))
         return false;
-    std::string locationString = pathToString(location);
+    std::string locationString = pathToSchemaString(location);
     return boost::get<yang::container>(children(locationString).at(name)).m_presence == yang::ContainerTraits::Presence;
 }
 
@@ -123,7 +103,7 @@
 
 bool Schema::isLeaf(const path_& location, const std::string& name) const
 {
-    std::string locationString = pathToString(location);
+    std::string locationString = pathToSchemaString(location);
     if (!nodeExists(locationString, name))
         return false;
 
diff --git a/src/schema.hpp b/src/schema.hpp
index 487f820..73e89df 100644
--- a/src/schema.hpp
+++ b/src/schema.hpp
@@ -12,7 +12,7 @@
 #include <set>
 #include <stdexcept>
 #include <unordered_map>
-#include "ast.hpp"
+#include "ast_path.hpp"
 
 namespace yang {
 enum class ContainerTraits {
diff --git a/tests/cd.cpp b/tests/cd.cpp
index 2cef615..8fe30ad 100644
--- a/tests/cd.cpp
+++ b/tests/cd.cpp
@@ -7,7 +7,7 @@
 */
 
 #include "trompeloeil_catch.h"
-#include "ast.hpp"
+#include "ast_commands.hpp"
 #include "parser.hpp"
 #include "schema.hpp"
 
diff --git a/tests/leaf_editing.cpp b/tests/leaf_editing.cpp
index e31a73f..5894921 100644
--- a/tests/leaf_editing.cpp
+++ b/tests/leaf_editing.cpp
@@ -7,7 +7,7 @@
 */
 
 #include "trompeloeil_catch.h"
-#include "ast.hpp"
+#include "ast_commands.hpp"
 #include "parser.hpp"
 #include "schema.hpp"
 
diff --git a/tests/presence_containers.cpp b/tests/presence_containers.cpp
index a4050f8..72c9daf 100644
--- a/tests/presence_containers.cpp
+++ b/tests/presence_containers.cpp
@@ -8,7 +8,7 @@
 */
 
 #include "trompeloeil_catch.h"
-#include "ast.hpp"
+#include "ast_commands.hpp"
 #include "parser.hpp"
 #include "schema.hpp"
 
