Acknowledgements I want to thank Bernhard Steffen for guiding me during the past five years. Clearly, this dis-sertation is a result of having being challenged, motivated, and supported in a truly unique environment, created by the persons that gathered at the Chair of Programming Systems to create and cooperate. Thus I would also like to thank my colleagues, and in particular Falk Howar, with whom I had the pleasure of sharing an office for three years. Hilarity sure ensued, as did pleasant traveling and countless hours of fruitful discussion. Last but not least, thanks also go to my family, which was both supportive and patient.