Final project for CS 108.