Stanford CS 247 final project