Project 3 for CSE 476