Huge changes to assignment 3. Almost there!