solution for 'Programming Assignment 2'