some particle stuff that I'm probably going to move into a separate project