Initial commit.

Work done by me and Florian Zeitz.