Assignment 3 continued (almost complete).