diff --git a/docker/init.sh b/docker/init.sh
index 9c03b81b4017a351d1266627a28b2211716036bf..cf9a90d30e00e8b4bf3606e1edb63c14c9229983 100755
--- a/docker/init.sh
+++ b/docker/init.sh
@@ -13,6 +13,7 @@
 # 2023-08-17  v1.6 <www.axel-hahn.de>        menu selection with single key (without return)
 # 2023-11-10  v1.7 <axel.hahn@unibe.ch>      replace docker-compose with "docker compose"
 # 2023-11-13  v1.8 <axel.hahn@unibe.ch>      UNDO "docker compose"; update infos
+# 2023-11-15  v1.9 <axel.hahn@unibe.ch>      add help; execute multiple actions by params; new menu item: open app
 # ======================================================================
 
 cd $( dirname $0 )
@@ -21,7 +22,7 @@ cd $( dirname $0 )
 # git@git-repo.iml.unibe.ch:iml-open-source/docker-php-starterkit.git
 selfgitrepo="docker-php-starterkit.git"
 
-_version="1.8"
+_version="1.9"
 
 # ----------------------------------------------------------------------
 # FUNCTIONS
@@ -39,6 +40,61 @@ function h3(){
     echo -e "\e[34m----- $*\e[0m"
 }
 
+# show help for param -h
+function showMenu(){
+    echo "  $( _key g ) - remove git data of starterkit"
+    echo
+    echo "  $( _key i ) - init application: set permissions"
+    echo "  $( _key t ) - generate files from templates"
+    echo "  $( _key T ) - remove generated files"
+    echo
+    echo "  $( _key u ) - startup containers    docker-compose ... up -d"
+    echo "  $( _key U ) - startup containers    docker-compose ... up -d --build"
+    echo "  $( _key s ) - shutdown containers   docker-compose stop"
+    echo "  $( _key r ) - remove containers     docker-compose rm -f"
+    echo
+    echo "  $( _key m ) - more infos"
+    echo "  $( _key o ) - open app [${APP_NAME}] $frontendurl"
+    echo "  $( _key c ) - console (bash)"
+    echo
+    echo "  $( _key q ) - quit"
+}
+function showHelp(){
+    local _self=$( basename "$0" )
+    cat <<EOH
+INITIALIZER FOR DOCKER APP v$_version
+
+A helper script written in Bash to bring up a PHP+Mysql application in docker.
+
+Source : https://git-repo.iml.unibe.ch/iml-open-source/docker-php-starterkit
+Docs   : https://os-docs.iml.unibe.ch/docker-php-starterkit/
+License: GNU GPL 3.0
+(c) Institute for Medical Education; University of Bern
+
+
+SYNTAX:
+  $_self [-h|-v]
+  $_self [menu key]
+
+OPTIONS:
+  -h   show this help and exit
+  -v   show version exit
+
+MENU KEYS:
+  In the interactive menu are some keys to init an action.
+  The same keys can be put as parameter to start this action.
+  You can add multiples keys to apply multiple actions.
+
+$( showMenu )
+
+EXAMPLES:
+
+  $_self           starts interactive mode
+  $_self u         bring up docker container(s) and stay in interactive mode
+  $_self i q       set write permissions and quit
+
+EOH
+}
 # function _gitinstall(){
 #     h2 "install/ update app from git repo ${gitrepo} in ${gittarget} ..."
 #     test -d ${gittarget} && ( cd ${gittarget}  && git pull )
@@ -191,6 +247,7 @@ function _removeGeneratedFiles(){
     done
 }
 
+# show running containers
 function _showContainers(){
     local bLong=$1
     h2 CONTAINERS
@@ -202,6 +259,7 @@ function _showContainers(){
 }
 
 
+# show urls for app container
 function _showBrowserurl(){
     echo "In a web browser open:"
     echo "  $frontendurl"
@@ -210,7 +268,7 @@ function _showBrowserurl(){
     fi
 }
 
-# a bit stupid ... i think I need to delete it.
+# detect + show ports and urls for app container and db container
 function _showInfos(){
     _showContainers long
     h2 INFO
@@ -246,39 +304,26 @@ function  _key(){
 
 # helper: wait for a return key
 function _wait(){
-    echo -n "... press RETURN > "; read -r
+    echo -n "... press RETURN > "; read -r -t 15
 }
 
 # ----------------------------------------------------------------------
 # MAIN
 # ----------------------------------------------------------------------
 
-action=$1
+action=$1; shift 1
 
 while true; do
-    echo
-    echo -e "\e[32m===== INITIALIZER FOR DOCKER APP [$APP_NAME] v$_version ===== \e[0m\n\r"
 
     if [ -z "$action" ]; then
 
+        echo
+        echo -e "\e[32m===== INITIALIZER FOR DOCKER APP [$APP_NAME] v$_version ===== \e[0m\n\r"
+
         _showContainers
 
-        h2 MENU
-        echo "  $( _key g ) - remove git data of starterkit"
-        echo
-        echo "  $( _key i ) - init application: set permissions"
-        echo "  $( _key t ) - generate files from templates"
-        echo "  $( _key T ) - remove generated files"
-        echo
-        echo "  $( _key u ) - startup containers    docker-compose ... up -d"
-        echo "  $( _key U ) - startup containers    docker-compose ... up -d --build"
-        echo "  $( _key s ) - shutdown containers   docker-compose stop"
-        echo "  $( _key r ) - remove containers     docker-compose rm -f"
-        echo
-        echo "  $( _key m ) - more infos"
-        echo "  $( _key c ) - console (bash)"
-        echo
-        echo "  $( _key q ) - quit"
+        h2 MENU       
+        showMenu
         echo
         echo -n "  select >"
         read -rn 1 action 
@@ -286,6 +331,8 @@ while true; do
     fi
 
     case "$action" in
+        "-h") showHelp; exit 0 ;;
+        "-v") echo $(basename $0) $_version; exit 0 ;;
         g)
             _removeGitdata
             ;;
@@ -300,21 +347,17 @@ while true; do
             _removeGeneratedFiles
             rm -rf containers
             ;;
-        # not in the menu
-        # f)
-        #     _removeGeneratedFiles
-        #     _generateFiles
-        #     _wait
-        #     ;;
         m)
             _showInfos
             _wait
             ;;
         u|U)
+            h2 "Bring up..."
             dockerUp="docker-compose -p "$APP_NAME" --verbose up -d --remove-orphans"
             if [ "$action" = "U" ]; then
                 dockerUp+=" --build"
             fi
+            echo "$dockerUp"
             if $dockerUp; then
                 _showBrowserurl
             else
@@ -326,24 +369,32 @@ while true; do
             _wait
             ;;
         s)
+            h2 "Stopping..."
             docker-compose -p "$APP_NAME" stop
             ;;
         r)
+            h2 "Removing..."
             docker-compose -p "$APP_NAME" rm -f
             ;;
         c)
+            h2 "Console"
             docker ps
             echo -n "id or name >"
             read dockerid
             test -z "$dockerid" || docker exec -it $dockerid /bin/bash
             ;;
+        o) 
+            h2 "Console"
+            xdg-open "$frontendurl"
+            ;;
         q)
+            h2 "Bye!"
             exit 0;
             ;;
         *) 
             test -n "$action" && ( echo "  ACTION FOR [$action] NOT IMPLEMENTED."; sleep 1 )
     esac
-    action=
+    action=$1; shift 1
 done