Final project for cis196