Final project for CSE167