CPSC 304 project