Figure 1: A sketch of the project. The thick arrows indicate input/output; the thin arrow indicates class inheritance