The Design of the prototype 2
This is the statechart of what I have implemented in the second prototype.
The source code is available at:
Prototype 2