CSE505 final project