This is implemented as an array of Module objects, which is the abstract base class for all NeatTools modules.
The only complication in this arrangement is adding and removing a module while the program is running. In this case, running is suspended until the operation completes. If a module is added while running, a "startUp" is done on that module before the running is resumed.