Assignment 5 for ITP499 w/ David Tang