The structure of the engine is quite simple. It consists of particles, emitters, modifiers and a renderer.
As you can see, the emitter is the main worker in this case. Particles are created to be used in the emitter, the emitter then send each particle to the modifiers. The modifiers send back the particles which then are send to the renderer and drawn on the screen.
The structure is quite flexible and it's easy to extend with new features.