Two worker version; worker generalized