finish the assignment2