particle refactor