worker with recursive upstream and downstream