printf '%s %s %s' "${PREFIX} ${NAME_SERVER} ${LOCATION}"
 }
 
+keydata_obsolete() {
+    KEY_DATA=$1
+    local PREFIX=$(echo "${KEY_DATA}" | cut -d' ' -f1)
+    if [ "${PREFIX}" = '-' ]; then
+        echo "Ignoring ${KEY_ID}, location doesn't match expected pattern."
+        return 0
+    fi
+    return 1
+}
+
 # exits
 export BORG_EXIT_CODES=modern
 error_exit() { abort "Aborting due to $1"; }
     mkdir -p "${PATH_TARGET_DIR}"
     cd "${PATH_BORG_CONF_KEYS}"
     ls -1 | while read _FILENAME; do
+        local KEY_ID=$(_id_from_file "${PATH_BORG_CONF_KEYS}/${_FILENAME}")
        local KEY_DATA=$(explore_key_id "${KEY_ID}")
-       local PREFIX=$(echo "${KEY_DATA}" | cut -d' ' -f1)
-        if [ "${PREFIX}" = '-' ]; then
-            echo "Ignoring ${KEY_ID}, location doesn't match expected patten."
-           continue
+        if keydata_obsolete "${KEY_DATA}"; then
+            continue;
         fi
        local NAME_SERVER=$(echo "${KEY_DATA}" | cut -d' ' -f2)
         local PATH_TARGET="${PATH_TARGET_DIR}/${NAME_SERVER}"
     ls -1 "${PATH_BORG_CONF_SECURITY}/" > "${PATH_PIPE}" &
     while read _FILENAME; do
         local KEY_DATA=$(explore_key_id "${_FILENAME}")
-       local PREFIX=$(echo "${KEY_DATA}" | cut -d' ' -f1)
-        if [ "${PREFIX}" = '-' ]; then
-            echo "Ignoring ${_FILENAME}, location doesn't match expected patten."
-            continue
+        if keydata_obsolete "${KEY_DATA}"; then
+            continue;
         fi
        local NAME_SERVER=$(echo "${KEY_DATA}" | cut -d' ' -f2)
        local LOCATION=$(echo "${KEY_DATA}" | cut -d' ' -f3)
 
     for _FILENAME in $(ls "${PATH_BORG_CONF_SECURITY}/"); do
         local KEY_DATA=$(explore_key_id "${_FILENAME}")
-       local PREFIX=$(echo "${KEY_DATA}" | cut -d' ' -f1)
-        if [ "${PREFIX}" = '-' ]; then
-            echo "Ignoring ${_FILENAME}, location doesn't match expected patten."
-            continue
+        if keydata_obsolete "${KEY_DATA}"; then
+            continue;
         fi
        local LOCATION=$(echo "${KEY_DATA}" | cut -d' ' -f3)
         local ARCHIVE="${LOCATION}::${NAME_ARCHIVE_ORG}-{utcnow:%Y-%m-%dT%H:%M}"
 
 cd $(dirname "$0")
 . lib/abort_if_exists
 . lib/constants_borg  # NAME_BORGAPP, PATH_BORG_CONF
-. lib/constants_secrets  # PATH_REL_SECRETS, PATH_SECRETS, PATH_SECRETS_BORGKEYS
+. lib/constants_secrets  # PATH_REL_SECRETS, PATH_SECRETS, PATH_SECRETS_BORGKEYS, PATH_SECRETS_KDBX, PATH_USER_KDBX
 . lib/constants_ssh  # PATH_USER_SSH 
 . lib/constants_user  # USERNAME
 . lib/copy_and_unmount_secrets
 
 abort_if_exists "${PATH_SECRETS}"
 prefixed_msg "Collecting new ${PATH_REL_SECRETS}."
+
 mkdir "${PATH_SECRETS}"
-"${NAME_BORGAPP}" backup_keys "${PATH_SECRETS_BORGKEYS}"
 cp -a "${PATH_USER_SSH}" "${PATH_SECRETS_SSH}"
+cp -a "${PATH_USER_KDBX}" "${PATH_SECRETS_KDBX}"
+"${NAME_BORGAPP}" backup_keys "${PATH_SECRETS_BORGKEYS}"
+
 prefixed_msg "secrets file, last update: $(whoami)/$(hostname) at $(date)" > "${PATH_SECRETS}/info"
 
 mount_secrets "$1" # sets PATH_MOUNTED_SECRETS
 
 . lib/abort_if_exists
 . lib/abort_if_not_user
 . lib/abort_if_offline
-. lib/constants_secrets  # PATH_SECRETS, PATH_SECRETS_BORGKEYS
+. lib/constants_secrets  # PATH_SECRETS, PATH_SECRETS_KDBX, PATH_SECRETS_SSH, PATH_SECRETS_BORGKEYS, PATH_USER_KDBX
 . lib/constants_ssh  # PATH_USER_SSH
 . lib/constants_user  # USERNAME
 . lib/constants_borg  # NAME_BORGAPP
 copy_and_unmount_secrets 'in'
 export BORG_PASSPHRASE="${PASSPHRASE}"
 
+prefixed_msg 'Copying passwords DB …'
+cp -a "${PATH_USER_KDBX}" "${PATH_SECRETS_KDBX}"
+
 prefixed_msg 'Setting up ~/.ssh …'
 cp -a "${PATH_SECRETS_SSH}" "${PATH_USER_SSH}"
 stty -echo