Also when adding to a TList like this use AddFirst as AddLast the entire TList needs to be run before the object will be appended so if you have a 1000 particles the entire list will be scanned before you add the 1001st particle.
Is this really the case? I remember looking at TList a while ago and vaguely remember it being a doubly-linked list where the previous of first (head) would point to the last. Hence when addlast() is called it just goes to the previous of the first element. I may be wrong though :o.