Modified for Programming Assignment 2.