added message passing