dev: Add a base particle class