I had a think and possibly a better idea...give them IDs starting from 0 and counting up. When one is removed randomly from the middle of the queue i.e. it has ID #3, disable the movement logic for anything with a lower ID number. This will work better as I realised that you will probably need to halt tiles on other rows. So if the tiles are lined up as 5 4 3 2 1 0 and you remove 3, it appears as 5 4 [ ] 2 1 0, you stop 2 1 0 from moving and it would end up 5 4 2 1 0 eventually. I didn't look in detail at how you were doing the movement but I could see co-ord type logic so just disable that. You should be able to easily compare an instance variable and run a foreach function for every object that has a lower ID.