Matchismo assignment 3 for CS193P.