https://courses.grainger.illinois.edu/cs580/fa2021/Slides/Lec6-scribbles.pdf