bidirectional applications