diff --git a/icinga-cli.sh b/icinga-cli.sh
index 6c45989e7d15c74a7ab21347c77dd530a39269ca..47edb848fc1a088e20b1ce1303c5add5bc46ec50 100755
--- a/icinga-cli.sh
+++ b/icinga-cli.sh
@@ -20,16 +20,20 @@
 # 2023-02-13  v0.13  ah  rename myHost to MY_NAME (like in director_cli)
 # 2023-02-17  v0.14  ah  add hostnamme into CFGSTORAGE
 # 2023-02-17  v0.15  ah  check inc_getconfig.sh exists and hostname -f has a value
+# 2023-11-01  v0.16  ah  generate json with "jo"
 # ======================================================================
 
 
 _product="ICINGA PASSIVE CLIENT"
-_version="0.15"
+_version="0.16"
 _license="GNU GPL 3.0"
 _copyright='(c) Institute for Medical Education * University of Bern'
 
 typeset -i debug=0
 
+which curl >/dev/null || exit 1
+which jo   >/dev/null || exit 1
+
 # source config ...
 _cfg="$( dirname $0 )/inc_getconfig.sh"
 if [ ! -f "$_cfg"  ]; then
@@ -38,15 +42,8 @@ if [ ! -f "$_cfg"  ]; then
 fi
 . "$_cfg"
 
-
-# where to find check scripts ... first directory wins
-# dir_plugins="/opt/imlmonitor/client/plugins/ /usr/lib64/nagios/plugins"
-# dir_cfg="/etc/icinga2-passive-client"
-# dir_data="/var/tmp/icinga2-passive-client"
-# dir_logs="/var/log/icinga2-passive-client"
 logfile="${dir_logs}/execution.log"
 
-ch="$( dirname $0 )/inc/confighandler.sh"
 MY_NAME=$(hostname -f)
 if [ -z "$MY_NAME" ]; then
   echo "ERROR: hostname is empty. Ensure that the command 'hostname -f' returns a fqdn."
@@ -397,24 +394,24 @@ function processCheck(){
       # --- send check result to Icinga
       #     fields of the object
       #     https://icinga.com/docs/icinga2/latest/doc/12-icinga2-api/#process-check-result
-      export CFGSTORAGE="${MY_NAME}-${checkName}output"
+      
 
-      outputAsText="$(cat $_outfile)"
-      # outputAsJson="$(jq -nR --arg data """${outputAsText}""" '$data')"
       commandAsJson="$(jq -nR --arg data """${myFullscript} $myparams""" '$data')"
-      (
-        $ch --set      check_source      \"${MY_NAME}\"
-        $ch --set      check_command     "${commandAsJson}"
-        $ch --set      exit_status       $rc
-        # $ch --set      plugin_output     "${outputAsJson}"
-        $ch --setfile  plugin_output     "${_outfile}"
-        $ch --set      performance_data  "\"${outPerfdata}\""
-        $ch --set      ttl               $checkInterval
-        $ch --set      execution_start   $iTsStart
-        $ch --set      execution_end     $iTsEnd
-      ) 2>/dev/null
-      # $ch --json
-      data=`$ch --json 2>/dev/null`
+
+
+      local JSONPARAMS="
+        check_source=${MY_NAME}
+        check_command=${commandAsJson}
+        exit_status=$rc
+        ttl=$checkInterval
+        execution_start=$iTsStart
+        execution_end=$iTsEnd
+        performance_data="\"${outPerfdata}\""
+        plugin_output="\"$( cat "${_outfile}" )\""
+
+    "
+     
+      data=$( eval jo -p -d. $JSONPARAMS )
 
       slot="`_getName4Svcathost ${checkName} | sed 's# #%20#g'`"
 
@@ -435,14 +432,13 @@ function processCheck(){
       if [ $? -eq 0 ]; then
         _log "${_logPrefix} rc=$rc - OK, response was sent to Icinga"
       else
-        _elog "${_logPrefix} rc=$rc - WARNING: the check response was NOT sent to Icinga"
+        _elog "${_logPrefix} rc=$rc - WARNING: $(http.getStatuscode) the check response was NOT sent to Icinga"
         _rc=$_rc+1
         _echo
         _echo For Debugging:
-        _echo "$( $ch --show --json )"
-        _log "$( $ch --show --json )"
+        _echo "$data"
+        _log "$data"
       fi
-      $ch --flush 2>/dev/null
 
     fi