CPE400 Final project