The grouping, locking, queuing, and synchronization are all organized by TaskGroupSynchronizationObjects handled by the task scheduler (see the github repository for details). Additionally, every newly initialized hardware that inherits from the abstract base class "Hardware" automatically registers with the backend and the task scheduler, ensuring that each available hardware component is known to the orchestrating backend, but also that each device is only initialized once.