add bidirectional buffer