Final Version for Programmign Assignment 2