crazy optimizations... ParticleEngine now works with 6000 particles (~50% improvement)