public static void reallyDeleteObject(PaintBox box) {
		Rectangle redrawBounds = null;
		if (box instanceof FTLRoom) {
			FTLRoom r = (FTLRoom) box;

			Point oldLow = null;
			Point oldHigh = null;
			if (Main.ship != null) {
				oldLow = Main.ship.findLowBounds();
				oldHigh = Main.ship.findHighBounds();
				oldLow.x = oldLow.x + (oldHigh.x - oldLow.x) / 2;
				oldLow.y = oldLow.y + (oldHigh.y - oldLow.y) / 2;
			}

			redrawBounds = r.getBounds();
			r.dispose();
			ship.rooms.remove(r);
			removeUnalignedDoors();
			r = null;

			if (Main.ship != null) {
				Point p = Main.ship.findLowBounds();
				Point pt = Main.ship.findHighBounds();
				p.x = p.x + (pt.x - p.x) / 2;
				p.y = p.y + (pt.y - p.y) / 2;

				pt.x = p.x - oldLow.x;
				pt.y = p.y - oldLow.y;

				p = shieldBox.getLocation();
				shieldBox.setLocation(p.x + pt.x, p.y + pt.y);
			}

			if (ship.rooms.size() == 0) {
				btnShields.setEnabled(false);
			}
		} else if (box instanceof FTLDoor) {
			FTLDoor d = (FTLDoor) box;
			redrawBounds = d.getBounds();
			d.dispose();
			ship.doors.remove(d);
			d = null;
		} else if (box instanceof FTLMount) {
			FTLMount m = (FTLMount) box;
			redrawBounds = m.getBounds();

			m.dispose();
			ship.mounts.remove(m);
			m = null;

			redrawBounds.x -= 40;
			redrawBounds.y -= 40;
			redrawBounds.width += 80;
			redrawBounds.height += 80;
		} else if (box instanceof FTLGib) {
			FTLGib g = (FTLGib) box;
			if (gibWindow.isVisible())
				gibWindow.escape();
			g.deselect();
			gibDialog.removeGibFromList(g);
			g.dispose();
			Main.ship.gibs.remove(g);
			gibDialog.letters.remove(g.ID);
			Main.canvas.redraw(g.getBounds().x - 1, g.getBounds().y - 1, g.getBounds().width + 2, g.getBounds().height + 2, false);
		}

		if (redrawBounds != null)
			canvasRedraw(redrawBounds, false);
	}