The signal publish/subscribe pattern used to coordinate the execution of the steps of the video analysis can be described as a dynamic tree-like graph. Currently one has to tell the HeartBeat Service which steps are at the leafs so that it can wait for all DONE signals emitted by those services until it emits BEGIN_FRAME again. This should be automatized.
The SignalManager Service can keep track of which services subscribe to which signal. DONE Signals that are subscribed by nobody are those of "leafs". So the HeartBeat Service Signal Barrier can simply wait for all DONE signals that are not subscribed. The list of signals to wait for must be keept correct when signal registrations change.