Added eventListenersAdded variable - this is the easiest way to avoid adding event listeners twice; Moved module variable declaration to top and made it lowercase for consistency; Added modelPropertyGetterOverride and modelPropertySetterOverride functions inside addGettersSetters function; Fixed check for existing getters and setters inside addGettersSetters function; Changed order of functions called inside bind function so addEventListeners is called last - this makes more sense logically, even though it makes no difference