Faculty of Mathematics and Computer Science Heidelberg University Germany