Synced from comeptition branch of ModuleController.hh