localised primary worker functions