public LinkedList<Bullet> applyAllUpgrades(String[] sprites) {
        LinkedList<Bullet> bullets = new LinkedList<Bullet>();
        LinkedList<Bullet> newBullets = new LinkedList<Bullet>();
        Bullet firstBullet = new Bullet(sprites, baseAim, 10);
        double centerx = rect.x + rect.width / 2 - firstBullet.getRect().width / 2;
        firstBullet.getRect().x = centerx;
        firstBullet.getRect().y = this.getRect().y;
        bullets.add(firstBullet);
        for (GunUpgrade up : gunUpgrades) {
            Iterator<Bullet> it = bullets.iterator();
            while (it.hasNext()) {
                Bullet b = it.next();
                LinkedList<Bullet> created = applyUpgrade(b, up);
                for (Bullet bul : created) {
                    newBullets.add(bul);
                }
                it.remove();
            }

            for (Bullet b : newBullets)
                bullets.add(b);
            newBullets.clear();
        }

        return bullets;
    }