rebase on master
new communication model, allows uneven #procs