protected void changeShipClass(String newClass) {
        int tmpDmgGvn = ship.damageGiven;
        int tmpBonus = ship.bonus;
        int tmpTotalDmgGvn = ship.totalDamageGiven;
        int tmpTotalDmgRcvd = ship.totalDamageReceived;
        int tmpTotalBonus = ship.totalBonus;
        int tmpBreakSaves = ship.breakSaves;
        int tmpGold = ship.gold;
        int tmpSecondsPlayed = ship.secondsPlayed;
        int tmpConflicts = ship.conflicts;
        int tmpTorpsFired = ship.torpsFired;
        int tmpMinesFired = ship.minesDropped;
        int tmpDronesFired = ship.dronesFired;
        double tmpUnits = ship.unitsTraveled;
        Trek3DPoint tmpPoint = new Trek3DPoint(ship.point);
        TrekQuadrant tmpQuad = ship.currentQuadrant;
        String tmpScanLetter = ship.scanLetter;
        int tmpShipID = ship.dbShipID;
        String tmpShipClassLetter = ship.classLetter;

        ship.currentQuadrant.removeShipByScanLetter(ship.scanLetter);
        ship = null;

        TrekShip newShip = TrekUtilities.getShip(newClass, this);

        newShip.damageGiven = tmpDmgGvn;
        newShip.bonus = tmpBonus;
        newShip.totalDamageGiven = tmpTotalDmgGvn;
        newShip.totalDamageReceived = tmpTotalDmgRcvd;
        newShip.totalBonus = tmpTotalBonus;
        newShip.gold = tmpGold;
        newShip.secondsPlayed = tmpSecondsPlayed;
        newShip.conflicts = tmpConflicts;
        newShip.breakSaves = tmpBreakSaves;
        newShip.torpsFired = tmpTorpsFired;
        newShip.minesDropped = tmpMinesFired;
        newShip.dronesFired = tmpDronesFired;
        newShip.unitsTraveled = tmpUnits;
        newShip.point = tmpPoint;
        newShip.currentQuadrant = tmpQuad;
        newShip.scanLetter = tmpScanLetter;
        newShip.dbShipID = tmpShipID;

        ship = newShip;
        ship.currentQuadrant.addShip(ship);
        hud.reset(false);
        drawHud(false);

        // if an escape pod, start the shields @ 100, and positioned 500 units away from previous location
        if (newClass.equals("x")) {
            ship.shields = 100;
            ship.raisingShields = true;
            Random r = new Random();
            ship.point.x = ship.point.x + (r.nextInt() % 500);
            ship.point.y = ship.point.y + (r.nextInt() % 500);
            ship.point.z = ship.point.z + (r.nextInt() % 500);
            ((ShipEscapePod) ship).oldShipClass = tmpShipClassLetter;
        }

        // if it's an excel, give them transwarp
        if (newClass.equals("b")) {
            ship.transwarpTracking = true;
            ship.transwarp = true;
        }

        // if it's a con, give it cloak
        if (newClass.equals("a")) {
            ship.cloak = true;
        }

        ship.resetInitialDirection();
    }