Final project for UVA CS 4240