Final project for CPSC473