Edited for Programming Assignment 2