modifies ProgrammingAssignment2