Assignment 4, half finished.