Did a lot of refactoring; it does not make sense to list all those changes ;-)