pyparticle revised