reorganize particle class hierarchy