diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7fef00c..77b8a96 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -141,12 +141,12 @@
 add_library(leaf_data_type STATIC
     src/leaf_data_type.cpp
     )
-target_link_libraries(leaf_data_type ast_values)
+target_link_libraries(leaf_data_type PUBLIC ast_values)
 
 add_library(utils STATIC
     src/utils.cpp
     )
-target_link_libraries(utils path ast_values)
+target_link_libraries(utils PUBLIC path ast_values)
 
 add_library(schemas STATIC
     src/static_schema.cpp
@@ -198,7 +198,7 @@
     src/ast_handlers.cpp
     src/completion.cpp
     )
-target_link_libraries(parser schemas utils ast_values yangutils)
+target_link_libraries(parser PUBLIC schemas utils ast_values yangutils)
 
 add_library(proxydatastore STATIC
     src/proxy_datastore.cpp
@@ -207,7 +207,7 @@
 
 # Links libraries, that aren't specific to a datastore type
 function(cli_link_required cli_target)
-    target_link_libraries(${cli_target} proxydatastore yangschema PkgConfig::DOCOPT parser replxx::replxx)
+    target_link_libraries(${cli_target} PRIVATE proxydatastore yangschema PkgConfig::DOCOPT parser replxx::replxx)
     add_dependencies(${cli_target} target-NETCONF_CLI_VERSION)
     target_include_directories(${cli_target} PRIVATE ${PROJECT_BINARY_DIR})
 endfunction()
@@ -217,7 +217,7 @@
         src/cli.cpp
         )
     target_compile_definitions(sysrepo-cli PRIVATE SYSREPO_CLI)
-    target_link_libraries(sysrepo-cli sysrepoaccess)
+    target_link_libraries(sysrepo-cli PUBLIC sysrepoaccess)
     cli_link_required(sysrepo-cli)
     list(APPEND cli_targets sysrepo-cli)
 endif()
@@ -227,12 +227,12 @@
     )
 target_compile_definitions(yang-cli PRIVATE YANG_CLI)
 cli_link_required(yang-cli)
-target_link_libraries(yang-cli yangaccess)
+target_link_libraries(yang-cli PRIVATE yangaccess)
 list(APPEND cli_targets yang-cli)
 if(CMAKE_CXX_FLAGS MATCHES "-stdlib=libc\\+\\+" AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
-    target_link_libraries(yang-cli c++experimental)
+    target_link_libraries(yang-cli PRIVATE c++experimental)
 elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.1)
-    target_link_libraries(yang-cli stdc++fs)
+    target_link_libraries(yang-cli PRIVATE stdc++fs)
 endif()
 
 add_executable(netconf-cli
@@ -241,7 +241,7 @@
     )
 target_compile_definitions(netconf-cli PRIVATE NETCONF_CLI)
 
-target_link_libraries(netconf-cli netconfaccess Threads::Threads Boost::filesystem)
+target_link_libraries(netconf-cli PRIVATE netconfaccess Threads::Threads Boost::filesystem)
 cli_link_required(netconf-cli)
 list(APPEND cli_targets netconf-cli)
 
@@ -256,7 +256,7 @@
         tests/wait-a-bit-longer.cpp
         )
     target_include_directories(DoctestIntegration PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tests/ ${CMAKE_CURRENT_SOURCE_DIR}/src/)
-    target_link_libraries(DoctestIntegration doctest::doctest trompeloeil::trompeloeil)
+    target_link_libraries(DoctestIntegration PUBLIC doctest::doctest trompeloeil::trompeloeil)
     target_compile_definitions(DoctestIntegration PUBLIC DOCTEST_CONFIG_SUPER_FAST_ASSERTS)
 
     if(DO_ENABLE_NETCONF_TESTS)
@@ -282,7 +282,7 @@
                 tests/${name}.cpp
                 )
         endif()
-        target_link_libraries(test_${name} DoctestIntegration parser datastoreaccess)
+        target_link_libraries(test_${name} PRIVATE DoctestIntegration parser datastoreaccess)
         if(NOT CMAKE_CROSSCOMPILING)
             add_test(test_${name} test_${name})
         endif()
@@ -295,15 +295,15 @@
         cli_test(${name}_${backend} ${name}.cpp)
         target_include_directories(${TESTNAME} PRIVATE ${PROJECT_SOURCE_DIR}/tests/mock)
         if (${backend} STREQUAL "sysrepo")
-            target_link_libraries(${TESTNAME} sysrepoaccess)
+            target_link_libraries(${TESTNAME} PRIVATE sysrepoaccess)
         elseif (${backend} STREQUAL "netconf")
-            target_link_libraries(${TESTNAME} netconfaccess)
+            target_link_libraries(${TESTNAME} PRIVATE netconfaccess)
         elseif (${backend} STREQUAL "yang")
-            target_link_libraries(${TESTNAME} yangaccess)
+            target_link_libraries(${TESTNAME} PRIVATE yangaccess)
         else()
             message(FATAL_ERROR "Unknown backend ${backend}")
         endif()
-        target_link_libraries(${TESTNAME} yangschema sysreposubscription proxydatastore PkgConfig::SYSREPO)
+        target_link_libraries(${TESTNAME} PRIVATE yangschema sysreposubscription proxydatastore PkgConfig::SYSREPO)
 
         target_compile_definitions(${TESTNAME} PRIVATE ${backend}_BACKEND)
         set_tests_properties(${TESTNAME} PROPERTIES FIXTURES_REQUIRED ${TESTNAME}_setup)
@@ -331,20 +331,20 @@
     cli_test(ls)
     cli_test(presence_containers)
     cli_test(leaf_editing)
-    target_link_libraries(test_leaf_editing leaf_data_type)
+    target_link_libraries(test_leaf_editing PRIVATE leaf_data_type)
     cli_test(yang)
-    target_link_libraries(test_yang yangschema)
+    target_link_libraries(test_yang PRIVATE yangschema)
     cli_test(utils)
-    target_link_libraries(test_utils yangutils)
+    target_link_libraries(test_utils PRIVATE yangutils)
     cli_test(path_completion)
     cli_test(command_completion)
     cli_test(set_value_completion)
-    target_link_libraries(test_set_value_completion leaf_data_type)
+    target_link_libraries(test_set_value_completion PRIVATE leaf_data_type)
     cli_test(list_manipulation)
     cli_test(interpreter)
-    target_link_libraries(test_interpreter proxydatastore)
+    target_link_libraries(test_interpreter PRIVATE proxydatastore)
     cli_test(path_utils)
-    target_link_libraries(test_path_utils path)
+    target_link_libraries(test_path_utils PRIVATE path)
     cli_test(keyvalue_completion)
     cli_test(parser_rpc)
     cli_test(misc_commands)
diff --git a/src/netconf_access.cpp b/src/netconf_access.cpp
index 6634dc6..5683b76 100644
--- a/src/netconf_access.cpp
+++ b/src/netconf_access.cpp
@@ -58,16 +58,8 @@
     return res;
 }
 
-NetconfAccess::NetconfAccess(const std::string& hostname, uint16_t port, const std::string& user, const std::string& pubKey, const std::string& privKey)
-    : m_context(std::nullopt, libyang::ContextOptions::SetPrivParsed)
-    , m_session(libnetconf::client::Session::connectPubkey(hostname, port, user, pubKey, privKey, m_context))
-    , m_schema(std::make_shared<YangSchema>(m_context))
-{
-    checkNMDA();
-}
-
 NetconfAccess::NetconfAccess(const int source, const int sink)
-    : m_context(std::nullopt, libyang::ContextOptions::SetPrivParsed)
+    : m_context(std::nullopt, libyang::ContextOptions::SetPrivParsed | libyang::ContextOptions::DisableSearchCwd)
     , m_session(libnetconf::client::Session::connectFd(source, sink, m_context))
     , m_schema(std::make_shared<YangSchema>(m_context))
 {
@@ -82,7 +74,7 @@
 }
 
 NetconfAccess::NetconfAccess(const std::string& socketPath)
-    : m_context(std::nullopt, libyang::ContextOptions::SetPrivParsed)
+    : m_context(std::nullopt, libyang::ContextOptions::SetPrivParsed | libyang::ContextOptions::DisableSearchCwd)
     , m_session(libnetconf::client::Session::connectSocket(socketPath, m_context))
     , m_schema(std::make_shared<YangSchema>(m_context))
 {
diff --git a/src/netconf_access.hpp b/src/netconf_access.hpp
index 27e54e2..0f1dbf6 100644
--- a/src/netconf_access.hpp
+++ b/src/netconf_access.hpp
@@ -27,7 +27,6 @@
 
 class NetconfAccess : public DatastoreAccess {
 public:
-    NetconfAccess(const std::string& hostname, uint16_t port, const std::string& user, const std::string& pubKey, const std::string& privKey);
     NetconfAccess(const std::string& socketPath);
     NetconfAccess(const int source, const int sink);
     NetconfAccess(std::unique_ptr<libnetconf::client::Session>&& session);
