Once because if we used on then we would get a huge number of listeners set against the collection very quickly since the old listener is not deleted after this function is called again and we don't want to manually manage listeners on the collection since that's up to the dev.
I used all instead of change so we can detect add and remove events without having to set multiple event listener.