tightened code, added particles