Initial version, contributed by Enno Lübbers.