diff --git a/files/error-summary.sh b/files/error-summary.sh
index 186d4bf34f94193484f459639763e71a82c6ae91..3c5b23f8d639cf918447975d86d97a087e293d66 100755
--- a/files/error-summary.sh
+++ b/files/error-summary.sh
@@ -6,8 +6,6 @@
 #	- Jens Steidl (<Jens.Steidl@slub-dresden.de>)
 # INVOCATION:
 #	./error_summary.sh [-h] [-n NUM] [-d DAYS] [-w] [-c]
-# KNOWN PROBLEMS:
-#	- Showing Warnings with "-w" is buggy, use with caution.
 
 
 ### DEFAULTS
@@ -26,28 +24,31 @@ fi
 
 
 ### CLI ARGUMENTS
-for ARG in "$@"; do
-	case ${ARG} in
+# for ARG in "$@"; do
+while [[ $# -gt 0 ]]; do
+	case ${1} in
 		-h|--help)
 			echo "call help function here"
 			exit 0
 			;;
 		-n|--chars)
 			HOW_MANY_CHARS="${2}"
-			shift;
+			shift; shift;
 			;;
 		-d|--days)
 			HOW_MANY_DAYS="${2}"
-			shift;
+			shift; shift;
 			;;
 		-w|--warn)
-			WARN="|WARN"
+			COUNT_WARNINGS="true"
+			shift;
 			;;
 		-c|--class)
-			FILTER_STRING=" (ERROR${WARN})\s+\[[^[]*\]"
+			PRINT_ONLY_CLASSNAMES="true"
+			shift;
 			;;
 		*)
-			echo "'${ARG}' is not a valid parameter. Please use '$( basename "${0}" ) --help'. Exiting."
+			echo "'${1}' is not a valid parameter. Please use '$( basename "${0}" ) --help'. Exiting."
 			exit 1
 			;;
 	esac
@@ -55,20 +56,23 @@ done
 
 
 
-echo ""
-echo "USING THE FOLLOWING SETTINGS:"
-echo -e "\tSERVERNAME: '${HOSTNAME}'"
-echo -e "\tFILTERING LOGS FROM $( date -d "${HOW_MANY_DAYS} days ago" +%Y-%m-%d ) UNTIL $( date -d today +%Y-%m-%d )"
-echo -e "\tHOW MANY CHARACTERS: ${HOW_MANY_CHARS}"
-echo -en "\tCOUNT WARNINGS: "; [[ "${WARN}" == "|WARN" ]] && echo "yes" || echo "no"
-
-
-
 ### FUNCTIONS
 
 # thx @Steidl!
 # grep -o "STARTZEICHENKETTE..\{ANZAHL_ZEICHEN_NACH_STARTZEICHENKETTE\}" | sort | uniq -c | sort -nr
 
+set_filter_string(){
+	if [[ "${COUNT_WARNINGS}" == "true" ]]; then
+		WARN="|WARN"
+	fi
+
+	if [[ "${PRINT_ONLY_CLASSNAMES}" == true ]]; then
+		FILTER_STRING=" (ERROR${WARN})\s+\[[^[]*\]"
+	else
+		FILTER_STRING=" (ERROR${WARN})\s+\[.{0,${HOW_MANY_CHARS}}"
+	fi
+}
+
 get_last_n_days(){
 	LOGFILES="$( find "${SERVER_LOG_DIR}/" -maxdepth 1 -mtime -"${HOW_MANY_DAYS}" -name "server.log*" )"
 	for LOGFILE in ${LOGFILES}; do
@@ -88,6 +92,15 @@ get_last_n_days(){
 
 ### MAIN
 
+echo ""
+echo "USING THE FOLLOWING SETTINGS:"
+echo -e "\tSERVERNAME: '${HOSTNAME}'"
+echo -e "\tFILTERING LOGS FROM $( date -d "${HOW_MANY_DAYS} days ago" +%Y-%m-%d ) UNTIL $( date -d today +%Y-%m-%d )"
+echo -e "\tHOW MANY CHARACTERS: ${HOW_MANY_CHARS}"
+echo -en "\tCOUNT WARNINGS: "; [[ "${WARN}" == "|WARN" ]] && echo "yes" || echo "no"
+
+set_filter_string
+
 echo ""
 echo "REPORT LAST ${HOW_MANY_DAYS} DAYS:"
 get_last_n_days