diff --git a/src/amcli.php b/src/amcli.php
index a64660aaad43ce3b3f24ef4f569394afa98d7d38..feeef5462e3dd144841c75d35bcf8022cd2c574d 100755
--- a/src/amcli.php
+++ b/src/amcli.php
@@ -2,20 +2,20 @@
 <?php
 
 chdir(__DIR__);
-$FLAG_DEBUG=0;
-$VERSION="0.0.1";
+$FLAG_DEBUG = 0;
+$VERSION = "0.0.1";
 
 // ---MARK---INCLUDE-CHECKS---START---
-if(! file_exists("include_checks.php")){
-  echo "ERROR: File 'include_checks.php' does not exisr yet..\n";
-  echo "Run the ../installer.php first!\n";
-  exit(1);
+if (!file_exists("include_checks.php")) {
+    echo "ERROR: File 'include_checks.php' does not exist yet..\n";
+    echo "Run the ../installer.php first!\n";
+    exit(1);
 }
 
-if(!include "include_checks.php"){
-  echo "ERROR: Include of generated 'include_checks.php' failed.\n";
-  echo "Check its generation by installer or run the installer again.\n";
-  exit(2);
+if (!include "include_checks.php") {
+    echo "ERROR: Include of generated 'include_checks.php' failed.\n";
+    echo "Check its generation by installer or run the installer again.\n";
+    exit(2);
 }
 // ---MARK---INCLUDE-CHECKS---END
 
@@ -27,19 +27,54 @@ if(!include "include_checks.php"){
 // --------------------------------------------------------------------
 
 
-function _wd($s):void
+/**
+ * Call $oMonitor-><METHODNAME> with 1 or 2 params.
+ * This function was introduced to shorten the code.
+ * 
+ * @param string $sMethod  method name of appmonitor class
+ * @param mixed  $value
+ * @param mixed  $value2
+ * @return void
+ */
+function _set(string $sMethod, mixed $value = null, mixed $value2 = null)
+{
+    global $oMonitor;
+    if (!isset($value)) {
+        _wd("SKIP \$oMonitor->$sMethod(<no_value>)");
+
+    } else {
+        if (!isset($value2)) {
+            _wd("calling \$oMonitor->$sMethod('$value')");
+            $oMonitor->$sMethod($value);
+        } else {
+            _wd("calling \$oMonitor->$sMethod('$value', '$value2')");
+            $oMonitor->$sMethod($value, $value2);
+        }
+    }
+}
+
+/**
+ * Write debug output if FLAG_DEBUG is true (use -v or --verbose on command line)
+ * @param string $s  message to show; a prefix "DEBUG:" will be added in front
+ * @return void
+ */
+function _wd($s): void
 {
     global $FLAG_DEBUG;
-    if($FLAG_DEBUG){
+    if ($FLAG_DEBUG) {
         // echo "DEBUG: $s\n";
         fwrite(STDERR, "DEBUG: $s\n");
     }
 }
 
+/**
+ * Show help text
+ * @return void
+ */
 function _showHelp(): void
 {
     global $VERSION;
-    $_self=basename(__FILE__);
+    $_self = basename(__FILE__);
     echo "IML Appmonitor as CLI client $VERSION
 
 This client performs appmonitor checks and puts the results as JSON to stdout.
@@ -52,9 +87,11 @@ You can use the compiled binary on non PHP systems.
 SYNTAX: $_self [OPTIONS]
 
 OPTIONS:
+    -h, --help      Print this help and exit
+    -i, --ini       Set an INI File to parse
+    -l, --list      list available checks and exit; --ini will be ignored
     -v, --verbose   Verbose output
-    -h, --help      Print this help
-    -i, --ini       INI File
+    -V, --version   Show version and exit
 
 ";
 }
@@ -66,60 +103,121 @@ OPTIONS:
 // --------------------------------------------------------------------
 
 // put params to $ARGS
-if($argc>1){
-  parse_str(implode('&',array_slice($argv, 1)), $ARGS);
+if ($argc > 1) {
+    parse_str(implode('&', array_slice($argv, 1)), $ARGS);
 }
 
 // check params
 
 if (isset($ARGS['-v']) || isset($ARGS['--verbose'])) {
-    $FLAG_DEBUG=1;
+    $FLAG_DEBUG = 1;
+}
+_wd("CLI ARGS: " . print_r($ARGS ?? [], 1));
+
+// show version
+if (isset($ARGS['-V']) || isset($ARGS['--version'])) {
+    _wd("Showing version");
+    echo "$VERSION\n";
+    exit(0);
 }
-_wd("CLI ARGS: ".print_r($ARGS, 1));
 
+// show help
 if (isset($ARGS['-h']) || isset($ARGS['--help'])) {
     _wd("Showing help");
     _showHelp();
-  exit(0);
+    exit(0);
 }
 
+// ----------------------------------------------------------------------
+
+_wd("Initializing appmonitor class");
+
+$oMonitor = new appmonitor();
+
+// show builtin checks
+if (isset($ARGS['-l']) || isset($ARGS['--list'])) {
+    echo implode("\n", $oMonitor->listChecks());
+    exit(0);
+}
 
-$inifile=$ARGS["--ini"]??($ARGS["-i"]??"simple.ini");
+
+$inifile = $ARGS["--ini"] ?? ($ARGS["-i"] ?? "simple.ini");
 _wd("Using ini file '$inifile'.");
 
-if(!file_exists($inifile)){
+if (!file_exists($inifile)) {
     echo "ERROR: INI File '$inifile' does not exist.\n";
     exit(1);
 }
 
-$aIni=parse_ini_file($inifile);
-if(!is_array($aIni)){
+$aIni = parse_ini_file($inifile, true);
+if (!is_array($aIni)) {
     echo "ERROR: INI File '$inifile' could not be parsed.\n";
     exit(1);
 }
-_wd("Parsed INI data: ".print_r($aIni, 1));
+
+_wd("Parsed INI data: " . print_r($aIni, 1));
 
 
 // ----------------------------------------------------------------------
 
-_wd("Initializing appmonitor class");
+// set metadata
+_set("setHost", $aIni['meta']['host'] ?? null);
+_set("setWebsite", $aIni['meta']['website'] ?? null);
+_set("setTtl", $aIni['meta']['ttl'] ?? null);
+
+foreach ($aIni['notification']['email'] ?? [] as $sValue) {
+    _set("addEmail", $sValue);
+}
+foreach ($aIni['notification']['slack'] ?? [] as $sValue) {
+    $sChannel = preg_filter('/,.*/', '', $sValue);
+    $sWebhook = preg_filter('/^.*,/', '', $sValue);
+
+    _set("addSlackWebhook", $sChannel, $sWebhook);
+}
+
+// loop over checks
+$aChecks = $aIni;
+unset($aChecks["meta"]);
+unset($aChecks["notification"]);
+
+foreach ($aChecks as $sKey => $aCheck) {
+    $aChecks[$sKey]['name'] = $aCheck['name'] ?? $sKey;
+    if ($aCheck['params']) {
+        $aArray = json_decode($aCheck['params'], 1);
+        if (!is_array($aArray)) {
+            echo "ERROR: key 'params' for check [$sKey] must be JSON.\n";
+            echo "Value in $inifile: $aCheck[params]\n";
+            exit(1);
+        }
+    }
+
+    _wd("Execute Check '$sKey'");
+    $oMonitor->addCheck([
+        "name" => $aCheck['name'] ?? $sKey,
+        "description" => $aCheck['description'],
+        "check" => [
+            "function" => $aCheck['function'],
+            "params" => $aArray,
+        ],
+    ]);
+
+    /*
+    $oMonitor->addCheck(
+        [
+            "name" => "hello plugin",
+            "description" => "Test a plugin ... plugins/checks/hello.php",
+            "check" => [
+                "function" => "Hello",
+                "params" => [
+                    "message" => "Here I am",
+                ],
+            ],
+        ]
+    );
+    */
+
+}
 
-$oMonitor = new appmonitor();
-$oMonitor->addEmail('sysadmin@example.com');
-$oMonitor->addSlackWebhook("mywebhook", "https://hooks.slack.com/services/(...)");
-
-$oMonitor->addCheck(
-  [
-      "name" => "hello plugin",
-      "description" => "Test a plugin ... plugins/checks/hello.php",
-      "check" => [
-          "function" => "Hello",
-          "params" => [
-              "message" => "Here I am",
-          ],
-      ],
-  ]
-);
 
 // ----------------------------------------------------------------------
 // send the response
diff --git a/src/simple.ini b/src/simple.ini
index da29d0ba42e871abd6f194a056a04a8d128184e4..61897d1cd7cc631df46d84792de0dce98daf7dff 100644
--- a/src/simple.ini
+++ b/src/simple.ini
@@ -1,5 +1,45 @@
+; =======================================================================
+;
+; APPMONITOR CLI CLIENT
+;
+; to understand the entries of metadata see JSON in 
+; <https://os-docs.iml.unibe.ch/appmonitor/Client/Description_of_response.html>
+;
+; for the checks see its parameters
+; <https://os-docs.iml.unibe.ch/appmonitor/PHP_client/Plugins/Checks/index.html>
+;
+; =======================================================================
+
+
+; -----------------------------------------------------------------------
+; METADATA
+; -----------------------------------------------------------------------
+
 [meta]
 host = "www.example.com"
 website = "Company website"
 ttl = 300
 tags[]="monitoring"
+
+
+[notification]
+email[]="support@example.com"
+email[]="webmaster@example.com"
+
+; for slack use the following format
+; <channelname> + comma + <webhook url>
+slack[]="#support-channel,https://hooks.slack.com/services/XXXXXX/YYYYYY/ZZZZZ"
+
+
+; -----------------------------------------------------------------------
+; CHECKS
+; -----------------------------------------------------------------------
+
+["hello plugin"]
+description="I sust wann say hello"
+function="hello"
+params='{
+"message": "Here I am"
+}'
+
+; -----------------------------------------------------------------------