Source: https://www-syscom.univ-mlv.fr/~chouzeno/pdf/MSThesis.pdf