CSE396 Final Project