Notes: This is the final code from our point of view. We will not do any further work on it and other people who want to contribute are most welcome to take over, but please send me an email if you are going to do that :) Changes: