Source: https://academic.oup.com/jss/article-pdf/12/1/37/9837510/37.pdf