Ha, yes. I was thinking of the motion capability of the plate reader, but a plate reader always has motion internally (it moves the plate to read or image), and motion isn’t exposed in the plate_reading frontend, it’s handled in the backend. The frontend only exposes the photometric read methods.
So for Cytation1, something like:
Cytation1(imaging=True)
…is consistent with what’s exposed at the frontend level. That said: for Cytation1, imaging isn’t really an optional capability, it’s the core identity of the instrument, so we probably shouldn’t require imaging=True at instantiation.
The optional parts are the lab-specific modules (e.g. gas/CO₂ control, injectors, etc.). So something like:
Cytation1(gas=False, injection=False)
(or ideally a small config=/YAML that declares which modules are present) feels more accurate: the Machine has one backend, attaches multiple frontends, and the configuration determines which frontends are actually exposed.