Rewrote particles to be a factory

Much easier to use and more useful to implement