parent class for particles