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 set-point RPM to reach its thermal set-point. 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.