implement two-way databinding