bug fix: iterate from last to first when removing event handlers via .off() so spicing doesnt throw off index