Assignment 2 Final Version