UBC CPSC304 Project