Move workers around, more clear and consistent.
Add until-message-from macro to run loops and term on channels