Original code by Matthieu Journault (also under MIT Licence).