support two way data binding