Address: refactor to use abstract addresses (which could be IP, threads etc) rather than integers for communication