See other blog for Assignment 2.