CSCI 580 Final Project