complete code for assignment 2