This is Florian Zeiser's MSc thesis.