@Override
  public void paintComponent(Graphics g) {
    g.setColor(Color.black);
    g.fillRect(0, 0, LENGTH, WIDTH);

    total = 0;
    for (ArrayList<Organism> orgs: Ecosystem.getAll()) {
      for (Organism org: orgs) {
        total += org.life.get();
        switch (org.species) {
          case Organism.GREEN:
              g.setColor(Color.green);
              break;
          case Organism.BLUE:
              g.setColor(Color.blue);
              break;
          case Organism.RED:
              g.setColor(Color.red);
              break;
          case Organism.YELLOW:
              g.setColor(Color.yellow);
              break;
          case Organism.ORANGE:
              g.setColor(Color.orange);
              break;
        }
        drawOrg(org, g);
      }
    }

    for (int i = 0; i < anims.size(); i++) {
      Animation anim = anims.get(i);
      g.setColor(anim.color);
      g.drawString(anim.text, anim.posX, anim.posY);
      anim.time--;
      if (anim.time < 0) {
        anims.remove(anim);
        i--;
      }
    }
    drawStats(g);

    // Couldn't figure out the race conditions
    Main.update();
  }