diff --git a/linuxparty.sh b/linuxparty.sh
index a62dbcafdf698cad83b05e0598b4b9ded01965de..6edc97b4d27847f306577deddbc0e1b212c25489 100644
--- a/linuxparty.sh
+++ b/linuxparty.sh
@@ -10,72 +10,140 @@ then
   exit 1
 fi
 
+askyesno() {
+	while true
+	do
+	  read -n1 -p "$1 [j,n]"
+	  echo
+	  case "$REPLY" in
+	    y|Y|j|J) return 0;;
+	    n|N) return 1;;
+	    *) echo 'Antworte bitte mit "j" für "Ja" oder "n" für "Nein"' ;;
+	  esac
+	done
+}
+
+ok() {
+	echo
+	echo -ne "\033[32;7m"    # gruen
+	echo -n "$@"
+	echo -e "\033[0m"       # normal
+}
+
+warn() {
+	echo
+	echo -ne "\033[33;7m"    # gelb
+	echo -n "$@"
+	echo -e "\033[0m"       # normal
+}
+
+err() {
+	echo
+	echo -ne "\033[31;7m"    # rot
+	echo -n "$@"
+	echo -e "\033[0m"       # normal
+}
+
+# Verbose error trapping
+showerr() {
+	err "Bei der Installation ist ein Fehler aufgetreten. Frage einen Helfer."
+}
+trap showerr ERR
+
+# DEBUG-Modus:
+apt-get() {
+	echo "APT-GET $@"
+}
+#/ DEBUG-Modus:
+
+# System absichern
+if askyesno "Netzwerk: Soll die Ubuntu Firewall (ufw/gufw) aktiviert werden ?"
+then
+	ufw enable
+	apt-get --quiet install -y gufw
+	ok "Firewall aktiviert, benutze 'gufw' um die Einstellungen der Firewall zu verändern"
+fi
 
 #Medibuntu einbinden
 
-echo "Sollen die Medibuntu-Paketquellen hinzugefügt werden? (y/n)"
-
-read medi;
-
-if [ "$medi" = "y" -o "$medi" = "Y" ]
-	then
+if askyesno "Sollen die Medibuntu-Paketquellen hinzugefügt werden ?"
+then
 	wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && apt-get --quiet update && apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && apt-get --quiet update
 	apt-get --quiet install -y app-install-data-medibuntu apport-hooks-medibuntu
-	apt-get --quiet install -y non-free-codecs;
-	apt-get --quiet install -y libdvdread4;
-	/usr/share/doc/libdvdread4/install-css.sh;
-	apt-get --quiet install -y libdvdcss2 libxine1-ffmpeg gxine mencoder;
-	apt-get --quiet install -y ffmpeg;
-	apt-get --quiet install -y vlc mplayer;
-	echo "DVDs abspielen ist nun möglich; der VLC Player und mplayer sind installiert worden";
+	apt-get --quiet install -y non-free-codecs
+	apt-get --quiet install -y libdvdread4
+	/usr/share/doc/libdvdread4/install-css.sh
+	apt-get --quiet install -y libdvdcss2 libxine1-ffmpeg gxine mencoder
+	apt-get --quiet install -y ffmpeg
+	apt-get --quiet install -y vlc mplayer
+	ok "DVDs abspielen ist nun möglich; der VLC Player und mplayer sind installiert worden"
 else
 	echo "Es wurde nichts installiert"
 fi
 
 #Allgemeine Programme, Codecs, etc. installieren (VPN, LaTeX, gcc, Flash, unrar...)
 
+echo
 echo "Programme, die für alle Fachrichtungen interressant sind (VPN, LaTeX, Flash, unrar, etc.)"
-echo "Magst du mit der Installation dieser fortfahren? (y/n)"
-
-read allgemein
-
-
-if [ "$allgemein" = "y" -o "$allgemein" = "Y" ]
-	then apt-get -y --quiet install ubuntu-restricted-extras;
-	echo "Codec Installation abgeschlossen";
-	apt-get install -y build-essential gcc g++ make automake vpnc network-manager-vpnc pwgen;
-	apt-get install texlive texlive-doc-de texlive-latex-extra texlive-lang-german;
-	echo "Development Programme, VPN und LaTeX abgeschlossen";
+if askyesno "Sollen diese Programme installiert werden ?"
+then
+	apt-get -y --quiet install ubuntu-restricted-extras
+	ok "Codec Installation abgeschlossen"
+	apt-get install synaptic pwgen
+	ok "Installation der System-Utilities abgeschlossen"
+	apt-get install -y build-essential gcc g++ make automake vpnc network-manager-vpnc
+	apt-get install texlive texlive-doc-de texlive-latex-extra texlive-lang-german
+	ok "Development Programme, VPN und LaTeX abgeschlossen"
 else
 	echo "Es wurde nichts installiert"
 fi
 
 #Fachrichtung wählen
 
-echo "Wähle deine Fachrichtung:"
-echo "Informatik: 1"
-echo "Physik: 2"
-echo "Mathematik: 3"
-
-read answer
-
-if [ $answer -eq 1 ]; then
-	echo "deb http://archive.canonical.com/ubuntu/ oneiric partner
-	deb-src http://archive.canonical.com/ubuntu/ oneiric partner" > /etc/apt/sources.list.d/java.list
-	apt-get update
-	apt-get --quiet install -y sun-java6-jdk eclipse hugs swi-prolog;
-
-	echo "Java, Haskell, Prolog und Eclipse wurden installiert";
-elif [ $answer -eq 2 ]; then
+echo
+echo "Auswahl fachspezifischer Software. Wähle deine Fachrichtung:"
+
+(   # Diese Subshell setzt PS3 nur lokal
+PS3="Deine Auswahl [1,2,3,4,5]<Enter>: "
+select fach in "Informatik" "Mathematik" "Physik" "<anderes Fach>" "<keine Spezial-Software installieren>"
+do
+  case "$fach" in
+    "") echo "Bitte wähle entsprechend deiner Fachrichtung eine Zahl von 1 bis 4 aus, tippe sie ein und drücke dann <Enter>"
+	;;
+    Informatik)
+	apt-get --quiet install -y default-jdk eclipse hugs swi-prolog
+	ok "Java, Haskell, Prolog und Eclipse wurden installiert"
+	break
+	;;
+    Physik)
 	wget http://www.fsmpi.rwth-aachen.de/apt/osak@fsmpi.rwth-aachen.de.gpg.key -O fsmpi.key
 	apt-key add fsmpi.key
 	rm fsmpi.key
 	echo "deb http://www.fsmpi.rwth-aachen.de/apt/ oneiric main" > /etc/apt/sources.list.d/fsmpi-root.list
 	apt-get update
-	apt-get install -y root-system libroot-core-dev libroot-bindings-python-dev
+	apt-get --quiet install -y root-system libroot-core-dev libroot-bindings-python-dev
 	echo "ROOT wurde installiert"
-	apt-get install -y python python-numpy python-simpy python-scipy python-matplotlib ipython python-dev gnuplot wxmaxima kmplot;
-	echo "Python inkl. einiger nützlicher Module wurde installiert"
-elif [ $answer -eq 3 ]
-	then echo "Bitte wende dich an deine Professoren"
-fi
+	apt-get --quiet install -y python python-numpy python-simpy python-scipy python-matplotlib ipython python-dev gnuplot wxmaxima kmplot
+	ok "Python (inkl. scipy und numpy), gnuplot, WxMaxima und KMplot wurden installiert"
+	break
+	;;
+    Mathematik)
+	warn "Bitte wende dich an deine Professoren - die Faschschaft I/1 könnte nicht klären," \
+"welche (freie) Spezial-Software Mathematiker üblicherweise benutzen."
+	break
+	;;
+    "<anderes Fach>")
+	echo
+	echo "Für andere Fächer gibt es keine allgemeine Software-Empfehlung. Frage einen Helfer."
+	break
+	;;
+    "<keine Spezial-Software installieren>")
+	break ;;
+  esac
+done
+)
+
+echo
+echo "Wenn Du Software für eine weitere Fachrichung installieren möchtest, starte $0 erneut."
+#end;
+