A school project for CS 166.