particles should be its own module