updated Worker to account for all 3 modes