Assignment 2 : everything except extra credits!