ThermalControllers and FanControllers are derived objects from a common PID Controller object. The design implemented in this structure is a facsimile of what was published in the Chrome OS source. One has any number of ThermalControllers that run through a PID step to generate a setpoint RPM to reach its thermal setpoint. The maximum output from the set of ThermalControllers is taken as the input to all the FanController PID loops. Each group of these controllers is managed within a zone. A PIDZone object helps manage them by providing a sensor value cache and overall execution.