These changes might interfere with what you are currently doing. No need
to merge them if you want to talk them through with me first.

I've tried to make Monitor generic in the type of the QEA being used.
The Monitor always holds a QEA. The MonitorFactory checks if the qea is
an instanceOf SimplestQEA, which is safer than what we were doing
before.