Programming assignment 2 -- complete