diff --git a/src/ast.cpp b/src/ast.cpp
index 9b1210c..28b37e9 100644
--- a/src/ast.cpp
+++ b/src/ast.cpp
@@ -21,14 +21,14 @@
 }
 
 listElement_::listElement_(const std::string& listName, const std::map<std::string, std::string>& keys)
-    : m_listName(listName)
+    : m_name(listName)
     , m_keys(keys)
 {
 }
 
 bool listElement_::operator==(const listElement_& b) const
 {
-    return (this->m_listName == b.m_listName && this->m_keys == b.m_keys);
+    return (this->m_name == b.m_name && this->m_keys == b.m_keys);
 }
 
 bool path_::operator==(const path_& b) const
diff --git a/src/ast.hpp b/src/ast.hpp
index 26d93a6..8e71476 100644
--- a/src/ast.hpp
+++ b/src/ast.hpp
@@ -57,7 +57,7 @@
 
     bool operator==(const listElement_& b) const;
 
-    std::string m_listName;
+    std::string m_name;
     std::map<std::string, std::string> m_keys;
 };
 
@@ -73,9 +73,7 @@
     path_ m_path;
 };
 
-
-
 BOOST_FUSION_ADAPT_STRUCT(container_, m_name)
-BOOST_FUSION_ADAPT_STRUCT(listElement_, m_listName, m_keys)
+BOOST_FUSION_ADAPT_STRUCT(listElement_, m_name, m_keys)
 BOOST_FUSION_ADAPT_STRUCT(path_, m_nodes)
 BOOST_FUSION_ADAPT_STRUCT(cd_, m_path)
diff --git a/src/ast_handlers.hpp b/src/ast_handlers.hpp
index b0d27aa..139bb5c 100644
--- a/src/ast_handlers.hpp
+++ b/src/ast_handlers.hpp
@@ -93,7 +93,7 @@
     void on_success(Iterator const&, Iterator const&, T& ast, Context const& context)
     {
         auto& parserContext = x3::get<parser_context_tag>(context);
-        parserContext.m_curPath = joinPaths(parserContext.m_curPath, ast.m_listName);
+        parserContext.m_curPath = joinPaths(parserContext.m_curPath, ast.m_name);
     }
 
     template <typename Iterator, typename Exception, typename Context>
