not quite working bidirectional