diff --git a/src/netconf_access.cpp b/src/netconf_access.cpp
index b5f7ccb..b599c2c 100644
--- a/src/netconf_access.cpp
+++ b/src/netconf_access.cpp
@@ -136,8 +136,7 @@
 {
     auto root = m_schema->dataNodeFromPath(path);
     for (const auto& [k, v] : input) {
-        auto node = m_schema->dataNodeFromPath(joinPaths(path, k), leafDataToString(v));
-        root->merge(node, 0);
+        root->new_path(m_session->libyangContext(), k.c_str(), leafDataToString(v).c_str(), LYD_ANYDATA_CONSTSTRING, LYD_PATH_OPT_UPDATE);
     }
     auto data = root->print_mem(LYD_XML, 0);
 
@@ -145,8 +144,11 @@
     auto output = m_session->rpc_or_action(data);
     if (output) {
         // If there's output, it will be a top-level node. In case of action, the output can be nested so we need to use
-        // find_path to get to the actual output.
-        lyNodesToTree(res, output->find_path(path.c_str())->data(), joinPaths(path, "/"));
+        // find_path to get to the actual output. Also, our `path` is fully prefixed, but the output paths aren't. So
+        // we use outputNode->path() to get the unprefixed path.
+
+        auto outputNode = output->find_path(path.c_str())->data().front();
+        lyNodesToTree(res, {outputNode}, joinPaths(outputNode->path(), "/"));
     }
     return res;
 }
diff --git a/src/sysrepo_access.cpp b/src/sysrepo_access.cpp
index c18ff31..dfdb7f0 100644
--- a/src/sysrepo_access.cpp
+++ b/src/sysrepo_access.cpp
@@ -308,16 +308,18 @@
 {
     auto inputNode = m_schema->dataNodeFromPath(path);
     for (const auto& [k, v] : input) {
-        auto node = m_schema->dataNodeFromPath(joinPaths(path, k), leafDataToString(v));
-        inputNode->merge(node, 0);
+        inputNode->new_path(m_session->get_context(), k.c_str(), leafDataToString(v).c_str(), LYD_ANYDATA_CONSTSTRING, LYD_PATH_OPT_UPDATE);
     }
 
     Tree res;
     auto output = m_session->rpc_send(inputNode);
     if (output) {
         // The output is "some top-level node". If we actually want the output of our RPC/action we need to use
-        // find_path.
-        lyNodesToTree(res, output->find_path(path.c_str())->data(), joinPaths(path, "/"));
+        // find_path.  Also, our `path` is fully prefixed, but the output paths aren't. So we use outputNode->path() to
+        // get the unprefixed path.
+
+        auto outputNode = output->find_path(path.c_str())->data().front();
+        lyNodesToTree(res, {outputNode}, joinPaths(outputNode->path(), "/"));
     }
     return res;
 }
diff --git a/src/yang_access.cpp b/src/yang_access.cpp
index 7a43507..b8631d5 100644
--- a/src/yang_access.cpp
+++ b/src/yang_access.cpp
@@ -131,11 +131,7 @@
     auto set = lyWrap(lyd_find_path(m_datastore.get(), path == "/" ? "/*" : path.c_str()));
     auto setWrapper = libyang::Set(set.get(), nullptr);
     std::optional<std::string> ignoredXPathPrefix;
-    if (m_datastore->schema->nodetype == LYS_RPC) {
-        auto path = std::unique_ptr<char, decltype(&free)>(lys_path(m_datastore->schema, 0), &free);
-        ignoredXPathPrefix = joinPaths(path.get(), "/");
-    }
-    lyNodesToTree(res, setWrapper.data(), ignoredXPathPrefix);
+    lyNodesToTree(res, setWrapper.data());
     return res;
 }
 
@@ -239,10 +235,8 @@
         if (v.type() == typeid(special_) && boost::get<special_>(v).m_value != SpecialValue::PresenceContainer) {
             continue;
         }
-        auto node = lyd_new_path(root.get(), m_ctx.get(), joinPaths(path, k).c_str(), (void*)leafDataToString(v).c_str(), LYD_ANYDATA_CONSTSTRING, 0);
-        if (!node) {
-            getErrorsAndThrow();
-        }
+
+        lyd_new_path(root.get(), m_ctx.get(), k.c_str(), (void*)leafDataToString(v).c_str(), LYD_ANYDATA_CONSTSTRING, LYD_PATH_OPT_UPDATE);
     }
     throw std::logic_error("in-memory datastore doesn't support executing RPC/action");
 }
