better and semantic two-way binding API