First version with all changes made by Hermann and I