Bidirectional message passing