Assignment 4, step 0
Assignment 4, step 1
Assignment 4, step 2
Assignment 4, step 3