added some new structure and custom model listener binding