Contributed by Rana rana.rmeily
Contributed by Carlos Mignot
Contributed by Jacek Baliński
Contributed by Wojciech Staniewski