added 3-way binding