diff --git a/src/interpreter.cpp b/src/interpreter.cpp
index f71c12f..24c48c4 100644
--- a/src/interpreter.cpp
+++ b/src/interpreter.cpp
@@ -7,6 +7,7 @@
 */
 
 #include <iostream>
+#include "datastore_access.hpp"
 #include "interpreter.hpp"
 
 struct leafDataToString : boost::static_visitor<std::string> {
@@ -25,7 +26,7 @@
 
 void Interpreter::operator()(const set_& set) const
 {
-    std::cout << "Setting " << pathToDataString(set.m_path) << " to " << boost::apply_visitor(leafDataToString(), set.m_data) << std::endl;
+    m_datastore.setLeaf(absolutePathFromCommand(set), set.m_data);
 }
 
 void Interpreter::operator()(const cd_& cd) const
@@ -35,14 +36,12 @@
 
 void Interpreter::operator()(const create_& create) const
 {
-    auto cont = boost::get<container_>(create.m_path.m_nodes.back().m_suffix);
-    std::cout << "Presence container " << cont.m_name << " created." << std::endl;
+    m_datastore.createPresenceContainer(absolutePathFromCommand(create));
 }
 
 void Interpreter::operator()(const delete_& delet) const
 {
-    auto cont = boost::get<container_>(delet.m_path.m_nodes.back().m_suffix);
-    std::cout << "Presence container " << cont.m_name << " deleted." << std::endl;
+    m_datastore.deletePresenceContainer(absolutePathFromCommand(delet));
 }
 
 void Interpreter::operator()(const ls_& ls) const
@@ -53,7 +52,13 @@
         std::cout << it << std::endl;
 }
 
-Interpreter::Interpreter(Parser& parser, Schema&)
-    : m_parser(parser)
+template <typename T>
+std::string Interpreter::absolutePathFromCommand(const T& command) const
+{
+    return joinPaths(m_parser.currentNode(), pathToDataString(command.m_path));
+}
+
+Interpreter::Interpreter(Parser& parser, DatastoreAccess& datastore)
+    : m_parser(parser), m_datastore(datastore)
 {
 }
diff --git a/src/interpreter.hpp b/src/interpreter.hpp
index 8acf8bd..87f12f1 100644
--- a/src/interpreter.hpp
+++ b/src/interpreter.hpp
@@ -10,9 +10,10 @@
 
 #include <boost/variant/static_visitor.hpp>
 #include "parser.hpp"
+#include "datastore_access.hpp"
 
 struct Interpreter : boost::static_visitor<void> {
-    Interpreter(Parser& parser, Schema&);
+    Interpreter(Parser& parser, DatastoreAccess& datastore);
 
     void operator()(const set_&) const;
     void operator()(const cd_&) const;
@@ -21,5 +22,9 @@
     void operator()(const ls_&) const;
 
 private:
+    template <typename T>
+    std::string absolutePathFromCommand(const T& command) const;
+
     Parser& m_parser;
+    DatastoreAccess& m_datastore;
 };
diff --git a/src/main.cpp b/src/main.cpp
index 2358dff..73e39a6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -11,6 +11,7 @@
 #include <iostream>
 #include "NETCONF_CLI_VERSION.h"
 #include "interpreter.hpp"
+#include "sysrepo_access.hpp"
 #include "yang_schema.hpp"
 
 
@@ -36,6 +37,8 @@
     auto yangschema = std::make_shared<YangSchema>();
     Parser parser(yangschema);
 
+    SysrepoAccess datastore("netconf-cli");
+
     for (auto it : args.at("<path-to-yang-schema>").asStringList()) {
         auto dir = std::experimental::filesystem::absolute(it).remove_filename();
         yangschema->addSchemaDirectory(dir.c_str());
@@ -51,7 +54,7 @@
 
         try {
             command_ cmd = parser.parseCommand(input, std::cout);
-            boost::apply_visitor(Interpreter(parser, *yangschema), cmd);
+            boost::apply_visitor(Interpreter(parser, datastore), cmd);
         } catch (InvalidCommandException& ex) {
             std::cerr << ex.what() << std::endl;
         }
