seems to work in bidirectional mode