c++11 abstract particle system