CPSC 430 Final Project