first pass on particles