Final Project for CS 246 at University of Waterloo