Source: https://arminmustafa.github.io/docs/Thesis_ArminMustafa.pdf