working message passing interface