bidirectional chat functionality