diff --git a/examples/client.c b/examples/client.c
index 1ebf11c..88c38ff 100644
--- a/examples/client.c
+++ b/examples/client.c
@@ -196,7 +196,7 @@
         break;
 
     case SSH:
-        session = nc_connect_ssh(SSH_ADDRESS, SSH_PORT, NULL);
+        session = nc_connect_ssh(SSH_ADDRESS, atoi(SSH_PORT), NULL);
         break;
 
     case NONE:
diff --git a/examples/config.xml b/examples/config.xml
new file mode 100644
index 0000000..2bf7598
--- /dev/null
+++ b/examples/config.xml
@@ -0,0 +1,119 @@
+<netconf-server xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-server" xmlns:yang="urn:ietf:params:xml:ns:yang:1" yang:operation="none">
+    <listen yang:operation="create">
+        <idle-timeout>10</idle-timeout>
+        <endpoint>
+            <name>default-ssh</name>
+            <ssh>
+                <tcp-server-parameters>
+                    <local-address>127.0.0.1</local-address>
+                    <local-port>830</local-port>
+                </tcp-server-parameters>
+                <ssh-server-parameters>
+                    <server-identity>
+                        <host-key>
+                            <name>key</name>
+                            <public-key>
+                                <local-definition>
+                                    <public-key-format xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types">ct:ssh-public-key-format</public-key-format>
+                                    <public-key>MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6ojtjfDmvyQP1ZkIwBpr
+97eKDuebvpoglRHRdvVuTpf/gU1VArAQmwGh05i6lm8TkVl1noMlIxLJDcWslaeV
+n6KyvsX0HhsQtXwqPqwka5UCv6alwf/ivAvcNpcX1j0t/uIGCI4dSiKnzQCyf0FT
+irzQkjrDZUd3meDhNQTruCalGV4gfNWIq3e1oGuwAn1tLlu9oTrE4HzMpgbNEU6w
+NmsSqpwGxUhYLoSaM7b0dLmqP+ZczSS0Uac0PFNkehGQ2CYIT80f580o4XGtoLCU
+UGkp6YCTL4Z2CeBEaJABWjDIDH+dKYIUBqUpz4Th12gXAP+h+3qI6+9eppeHrfrz
+ARDsfLjwUNxQJse1QSArjAytf0FKtGHrORc7W0TiCFvR0zaoUNLTKk7enTiRQ9rf
+WZOAu44fUvPCaXDE6zXXeaVgoKCo4VHlho36erUcjlEBM+jk28IykbZGtBb6igKv
+Ya1tPSgeYm/zJoFVjQcnr14uci/ft1+Na+hOIEoEEiKxcAPk2b2vBKNlRIW7WLJ3
+u7ZiuQEJTNm6+3cE4+lfwaBCBqBToE+dpzvoUXoMyFFReUFd1O5axu4fXgt00jMa
+OQxmE0v9OmR/pL/PWIflVF4Zz5yVONYaDVc7l+veY0oEZruEPJ0hlEgxuCzLrcMh
+jufl2qE2Q7fQIaav/1NqBVkCAwEAAQ==</public-key>
+                                    <private-key-format xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types">ct:rsa-private-key-format</private-key-format>
+                                    <cleartext-private-key>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</cleartext-private-key>
+                                </local-definition>
+                            </public-key>
+                        </host-key>
+                    </server-identity>
+                    <client-authentication>
+                        <users>
+                            <user>
+                                <name>admin</name>
+                                <password>$6$xyz$WwFC0nTow5jwJwMYeOZItipYgZidye/O7Z2kxRP3cPttku.GHre0y/51bO2uJlRjQwLNRddSA5fuJG5X1F8Dd1</password>
+                                <public-keys>
+                                    <local-definition>
+                                        <public-key>
+                                            <name>client</name>
+                                            <public-key-format xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types">ct:ssh-public-key-format</public-key-format>
+                                            <public-key>AAAAB3NzaC1yc2EAAAADAQABAAABAQDPavVALiM7QwTIUAndO8E9GOkSDQWjuEwkzbJ3kOBPa7kkq71UOZFeecDjFb9eipkljfFys/JYHGQaYVF8/svT0KV5h7HlutRdF6yvqSEbjpbTORb27pdHX3iFEyDCwCIoq9vMeX+wyXnteyn01GpIL0ig0WAnvkqX/SPjuplX5ZItUSr0MhXM7fNSX50BD6G8IO0/djUcdMUcjTjGv73SxB9ZzLvxnhXuUJbzEJJJLj6qajyEIVaJSa73vA33JCD8qzarrsuITojVLPDFmeHwSAoB5dP86yop6e6ypuXzKxxef6yNXcE8oTj8UFYBIXsgIP2nBvWk41EaK0Vk3YFl</public-key>
+                                        </public-key>
+                                    </local-definition>
+                                </public-keys>
+                            </user>
+                        </users>
+                    </client-authentication>
+                    <transport-params>
+                        <host-key>
+                            <host-key-alg xmlns:sshpka="urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs">sshpka:rsa-sha2-512</host-key-alg>
+                        </host-key>
+                        <key-exchange>
+                            <key-exchange-alg xmlns:sshkea="urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs">sshkea:curve25519-sha256</key-exchange-alg>
+                        </key-exchange>
+                        <encryption>
+                            <encryption-alg xmlns:sshea="urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs">sshea:aes256-ctr</encryption-alg>
+                        </encryption>
+                        <mac>
+                            <mac-alg xmlns:sshma="urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs">sshma:hmac-sha2-512</mac-alg>
+                        </mac>
+                    </transport-params>
+                </ssh-server-parameters>
+            </ssh>
+        </endpoint>
+    </listen>
+</netconf-server>
\ No newline at end of file
diff --git a/examples/example.h.in b/examples/example.h.in
index 5aa11f3..6e214f0 100644
--- a/examples/example.h.in
+++ b/examples/example.h.in
@@ -24,11 +24,14 @@
 /* directory with examples source code and this header */
 #define EXAMPLES_DIR "@CMAKE_SOURCE_DIR@/examples"
 
+/* directory with tests and more importantly test key pairs */
+#define TESTS_DIR "@CMAKE_SOURCE_DIR@/tests"
+
 /* SSH listening IP address */
 #define SSH_ADDRESS "127.0.0.1"
 
 /* SSH listening port */
-#define SSH_PORT 830
+#define SSH_PORT "830"
 
 /* SSH 'password' authentication exptected username and password */
 #define SSH_USERNAME "admin"
diff --git a/examples/server.c b/examples/server.c
index d30dfc8..6c94b8e 100644
--- a/examples/server.c
+++ b/examples/server.c
@@ -206,11 +206,12 @@
 init(struct ly_ctx **context, struct nc_pollsession **ps, const char *path, NC_TRANSPORT_IMPL server_type)
 {
     int rc = 0;
-    const char *config_file_path = EXAMPLES_DIR "/config.xml";
+    const char *hostkey_path = TESTS_DIR "/data/server.key";
+    struct lyd_node *config = NULL;
 
     if (path) {
         /* if a path is supplied, then use it */
-        config_file_path = path;
+        hostkey_path = path;
     }
 
     if (server_type == NC_TI_UNIX) {
@@ -235,10 +236,29 @@
         ERR_MSG_CLEANUP("Error loading modules required for configuration of the server.\n");
     }
 
-    /* parse YANG data from a file, configure the server based on the parsed YANG configuration data */
-    rc = nc_server_config_setup_path(*context, config_file_path);
+    /* this is where the YANG configuration data gets generated,
+     * start by creating hostkey configuration data */
+    rc = nc_server_config_ssh_new_hostkey(hostkey_path, NULL, *context, "endpt", "hostkey", &config);
     if (rc) {
-        ERR_MSG_CLEANUP("Error setting the path to the configuration data.\n");
+        ERR_MSG_CLEANUP("Error creating new hostkey configuration data.\n");
+    }
+
+    /* create address and port configuration data */
+    rc = nc_server_config_ssh_new_address_port(SSH_ADDRESS, SSH_PORT, *context, "endpt", &config);
+    if (rc) {
+        ERR_MSG_CLEANUP("Error creating new address and port configuration data.\n");
+    }
+
+    /* create client authentication configuration data */
+    rc = nc_server_config_ssh_new_client_auth_password(SSH_PASSWORD, *context, "endpt", SSH_USERNAME, &config);
+    if (rc) {
+        ERR_MSG_CLEANUP("Error creating client authentication configuration data.\n");
+    }
+
+    /* apply the created configuration data */
+    rc = nc_server_config_setup(config);
+    if (rc) {
+        ERR_MSG_CLEANUP("Application of configuration data failed.\n");
     }
 
     /* initialize the server */
@@ -259,6 +279,7 @@
     signal(SIGINT, sigint_handler);
 
 cleanup:
+    lyd_free_all(config);
     return rc;
 }
 
@@ -269,7 +290,7 @@
     struct ly_ctx *context = NULL;
     struct nc_session *session, *new_session;
     struct nc_pollsession *ps = NULL;
-    const char *unix_socket_path = NULL, *config_file_path = NULL;
+    const char *unix_socket_path = NULL, *hostkey_path = NULL;
 
     struct option options[] = {
         {"help",    no_argument,        NULL, 'h'},
@@ -301,8 +322,8 @@
             break;
 
         case 's':
-            config_file_path = optarg;
-            if (init(&context, &ps, config_file_path, NC_TI_LIBSSH)) {
+            hostkey_path = optarg;
+            if (init(&context, &ps, hostkey_path, NC_TI_LIBSSH)) {
                 ERR_MSG_CLEANUP("Failed to initialize a SSH server\n");
                 goto cleanup;
             }
diff --git a/src/config_new.c b/src/config_new.c
index edf290a..0224a00 100644
--- a/src/config_new.c
+++ b/src/config_new.c
@@ -336,7 +336,8 @@
         ret = lyd_new_term(new_tree, NULL, "local-port", port, 0, NULL);
     }
 
-    if (ret) {
+    if (ret && (ret != LY_EEXIST) && (ret != LY_ENOT)) {
+        /* only fail if there was actually an error */
         goto cleanup;
     }
 
