Assignment 2: Final Version