Main author: Laurent Bercot Thanks to: Lennart Jablonka