Pull Particle class out to its own file and tidy up a little