     DSMODE_GAMEOVER
 };
 class DuinoSays;
+
+class Particle {
+private:
+    int16_t x, y, vx, vy;
+    uint8_t type, frameAge, maxAge;
+
+public:
+    void init(uint8_t type, int16_t x, int16_t y, int16_t vx, int16_t vy, int8_t maxAge) {
+        this->type = type;
+        this->x = x;
+        this->y = y;
+        this->vx = vx;
+        this->vy = vy;
+        this->maxAge = maxAge;
+        this->frameAge = 0;
+    }
+
+    bool isAlive() {
+        return frameAge < maxAge;
+    }
+
+    void draw(DuinoSays *duinoSays);
+};
+
+template<uint8_t maxParticles>
+class ParticleSystem {
+private:
+    uint8_t particleCount;
+    Particle particles[maxParticles];
+public:
+    ParticleSystem(): particleCount(0) {};
+    void draw(DuinoSays *duinoSays);
+    void spawn(uint8_t type, int16_t x, int16_t y, int16_t vx, int16_t vy, uint16_t maxAge) {
+        if (particleCount >= maxParticles) return;
+        particles[particleCount++].init(type,x<<8,y<<8,vx,vy, maxAge);
+    }
+};
 
 class Button {
 private:

        display.setFlip(0);
        display.setBrightness(8);
        display.setBitDepth(buffer.is16bit()? 1:0);
    }

    void drawButton(bool on, uint16_t normalColor, uint16_t pressedColor, uint8_t x, uint8_t y) {

private:
    uint16_t seed;
    uint16_t currentLevel;
    uint16_t currentStep;
    DuinoSaysGameMode mode;
    TinyScreen display;
    Button btnTopLeft;
