refact ParticleGenerator