support for bidirectional bindings
cleanup