diff --git a/check_packages2install b/check_packages2install
index 0fafcbdcec1b2f538cb1337f356f47da877fd98c..505bf043bbee6dbc95343b69af591bb85ec2ed4e 100755
--- a/check_packages2install
+++ b/check_packages2install
@@ -17,6 +17,7 @@
 # 2020-03-11  v1.4  <axel.hahn@iml.unibe.ch> add -c -w limits; added perfdata (yum)
 # 2021-05-11  v1.4  <axel.hahn@iml.unibe.ch> added centos8 support
 # 2021-08-20  v1.5  <martin.gasser@iml.unibe.ch> bug fixing - missing sudo in yum command
+# 2021-12-16  v1.6  <axel.hahn@iml.unibe.ch> show filtered overview
 # ======================================================================
 
 
@@ -25,6 +26,8 @@
 typeset -i iCount=0
 tmpfile=/tmp/packages2install.log
 cronfile=/etc/cron.d/system-updater
+MYhost="localhost"
+
 
 # ----------------------------------------------------------------------
 # functions
@@ -44,7 +47,62 @@ function showAutoupdate(){
     echo Autoupdate OFF
   fi
 }
+# execute a local or a remote command
+function _exec(){
+    if [ ${MYhost} = "localhost" ]; then
+        eval "$1"
+    else
+        ${MYsshprefix}${MYhost} "$1"
+    fi
+}
+
+
+function detectPkgManager(){
+    local _list="apt yum pamac"
+    local out=$( _exec "which $_list 2>/dev/null" )
+    for mypkg in $_list
+    do
+        echo "$out" | grep "/$mypkg" > /dev/null && echo $mypkg
+    done
+}
+
+# Debian like Linux
+# - Debian 11
+function pkgApt(){
+
+    local sum=$( _exec "sudo apt-get -u upgrade --assume-no" )
+
+    # detect number of line containing "The following packages will be upgraded:"
+    typeset -i local iStart=$( echo "$sum" | grep -n '^The following packages will be upgraded:' | cut -f 1 -d ':' )
+
+    if [ $iStart -eq 0 ]; then
+        echo "Nothing to install"
+    else
+        # show packages = text starting with 2 spaces below start line
+        # packages are delimited with space -> replace with new line
+        echo "$sum" | sed -n $iStart,\$p | grep "^\ \ " | sed "s#^\ \ ##g" | tr " " "\n"
+    fi
+}
+# Arch Linux, Manjaro
+function pkgPamac(){
+     _exec "pamac checkupdates | grep -- '->'"
+}
+# RedHat like Linux
+# - Centos 8
+function pkgYum(){
+
+    local sum=$( _exec "sudo dnf check-update" )
+
+    local iStart=3
+    # detect number of line containing "Obsoleting Packages"
+    typeset -i iEnd=$( echo "$sum" | grep -n '^Obsoleting Packages' | cut -f 1 -d ':' )-1
+    local sEnd=$iEnd
+    test "$iEnd" = "-1" && sEnd='$'
+
+    echo "$sum" | sed -n ${iStart},${sEnd}p
+    # echo "show lines ${iStart} -> ${sEnd}"
 
+}
 # check updates with apt and exit script
 function checkApt(){
   # bug #2818
@@ -116,31 +174,70 @@ function checkYum(){
 # main
 # ----------------------------------------------------------------------
 
+
 # set default / override from command line params
 typeset -i iWarnLimit=`     ph.getValueWithParam 1   w "$@"`
 typeset -i iCriticalLimit=` ph.getValueWithParam 200 c "$@"`
 
-typeset -i bFound=0
-
 # ----- try package manager apt
-if [ `which apt-get 2>/dev/null` ]; then
-  bFound=1
-  checkApt
-fi
-
-# ----- try package manager yum
-if [ `which yum 2>/dev/null` ]; then
-  bFound=1
-  checkYum
-fi
+pgkman=$( detectPkgManager )
+case $pgkman in
+    "apt")
+        pkgstatus=$( checkApt )
+        pkgsum=$( pkgApt )
+        ;;
+    "pamac")
+        pkgstatus=""
+        pkgsum=$( pkgPamac )
+        ;;
+    "yum")
+        pkgstatus=$( checkYum )
+        pkgsum=$( pkgYum )
+        ;;
+    *)
+      ph.abort "UNKNOWN: package manager [$pgkman] was not detected or is not supported yet."
+      ;;
+esac
+
+echo "$pkgstatus"
+
+# filtered package view
+if [ ! -z "$pkgsum" ]; then
+    typeset -i iTotal=$( echo "$pkgsum" | wc -l )
+    typeset -i iFound=0
+
+    # show filtered view
+    for filterfile in $( ls -1 $0-data/*txt | sort )
+    do
+        filtername=$( echo $filterfile | rev | cut -f 1 -d "/" | rev | sed "s#.txt\$##g" )
+        filterdata=$( cat ${filterfile} | grep "^[a-zA-Z]" )
+
+        out=$( echo "$pkgsum" | _filterPkg "${filterdata}" )
+        typeset -i iCount=$( echo "$out" | grep "." | wc -l )
+
+        test $iCount -ne 0 && ( 
+            echo --- $( echo "$filtername" | sed "s#MYfilter##g" ): $iCount
+            echo "$out" | nl; echo 
+        )
+        iFound=$iFound+$iCount
+
+    done
+
+    # show count of non matching packages
+    typeset -i iOther=$iTotal-$iFound
+    if [ $iFound -eq 0 ]; then
+        echo "No package matched a group filter."
+    else
+        echo "Other packages: $iOther"
+    fi
 
+    # total packages
+    echo Total packages to update [$pgkman]: $iTotal
+    echo
 
-if [ $bFound -eq 0 ]; then
-  ph.abort "UNKNOWN: package manager is not supported yet. I only know apt and yum so far."
 fi
 
 showAutoupdate
 ph.exit
 
-
 # ----------------------------------------------------------------------
diff --git a/check_packages2install-data/01_OS_base.txt b/check_packages2install-data/01_OS_base.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b7ef8edf65fdddb85348cf3f659b6a971ab3ede
--- /dev/null
+++ b/check_packages2install-data/01_OS_base.txt
@@ -0,0 +1,5 @@
+basesystem
+centos
+kernel
+linux
+ubuntu
\ No newline at end of file
diff --git a/check_packages2install-data/02_System.txt b/check_packages2install-data/02_System.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a09e0de00c22e4cade9087c6464bcbb9bdc1eec0
--- /dev/null
+++ b/check_packages2install-data/02_System.txt
@@ -0,0 +1,4 @@
+openssh
+openssl
+samba
+sssd
\ No newline at end of file
diff --git a/check_packages2install-data/10_Programming_languages.txt b/check_packages2install-data/10_Programming_languages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3a08187acee21e5ca15073cf116ab00a71a22055
--- /dev/null
+++ b/check_packages2install-data/10_Programming_languages.txt
@@ -0,0 +1,6 @@
+java
+python
+php
+ruby
+node
+r-
\ No newline at end of file
diff --git a/check_packages2install-data/10_Webservices.txt b/check_packages2install-data/10_Webservices.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e79fc00a715f114f663fa94746161f634c5d7fc0
--- /dev/null
+++ b/check_packages2install-data/10_Webservices.txt
@@ -0,0 +1,4 @@
+apache2
+httpd
+haproxy
+tomcat
\ No newline at end of file
diff --git a/check_packages2install-data/20_Database.txt b/check_packages2install-data/20_Database.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c5fc4f6fba029fa1a626ebc6521578791494eacd
--- /dev/null
+++ b/check_packages2install-data/20_Database.txt
@@ -0,0 +1,6 @@
+couchdb
+mariadb
+mysql
+openldap
+postgresql
+sqlite
\ No newline at end of file
diff --git a/check_packages2install-data/50_Custom.txt b/check_packages2install-data/50_Custom.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6e326089bdfde811ad4a29e9d3a8bd83f5cfd3fe
--- /dev/null
+++ b/check_packages2install-data/50_Custom.txt
@@ -0,0 +1,5 @@
+git
+httrack
+icinga
+opencpu
+shibboleth
\ No newline at end of file