Source: https://is.muni.cz/th/98724/fi_d/thesis.pdf