by: Kyle Usbeck
Slides adapted from Gerhard Wickler and Austin Tate.