How should we handle event-driven behaviors in the common API? In acq4, I used Qt's signal/slots for this, but I don't think that would be a good choice for this project. In vispy, we created a simple event/callback system (https://github.com/vispy/vispy/blob/master/vispy/util/event.py). There are also other (more common) event frameworks that we could draw from.