Did like...everything in Problem 2. This is way too big a commit. Oh well.