You probably clear the engine listeners at the switch of a scene, which is good, because otherwise you'd have a major problem with this bug I just found:
Utils.removeValueFromArray does absolutely nothing at this stage but copying the value passed into empty space. You need to change:
...
if(arr[i] == value)
{
arr.slice(i, 1);
}
...
to:
...
if(arr[i] == value)
{
arr.splice(i, 1);
}
...
Notice that you need to splice to actually remove an element, whereas slice simply returns that element (or range of elements).