Contributed by Soimadou Ibrahim-Aliamane
Contributed by Nick Adam
Contributed by Étienne Aubert Bonn