Completed Programming Assignment 3