changed .off to use delete and sparse array rather than splice and disrupt any events that may be firing