assignment 2nd attempt