(Untested) Refactor demo from Interaction.py into Demo.py, and generally rewrite (+ add comments). Enhancements from Interaction.py should run Demo.py in another thread which should allow stopping / starting / resetting.