Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 503)
+++ src/mlx/gui/flight.py	(revision 512)
@@ -880,10 +880,8 @@
                                           completedHelp = xstr("connect_chelp"))
 
-        self._selectSimulator = os.name=="nt" or "FORCE_SELECT_SIM" in os.environ
-
         alignment = gtk.Alignment(xalign = 0.5, yalign = 0.5,
                                   xscale = 0.0, yscale = 0.0)
 
-        table = gtk.Table(7 if self._selectSimulator else 5, 2)
+        table = gtk.Table(5, 2)
         table.set_row_spacings(4)
         table.set_col_spacings(16)
@@ -951,37 +949,4 @@
         labelAlignment.add(self._departureGate)
         table.attach(labelAlignment, 1, 2, 4, 5)
-
-        if self._selectSimulator:
-            labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0, yalign=0.5)
-            label = gtk.Label(xstr("connect_sim"))
-            labelAlignment.add(label)
-            table.attach(labelAlignment, 0, 1, 5, 7)
-
-            selectAlignment = gtk.Alignment(xalign=0.0, xscale=0.0, yalign=0.5)
-
-            selectBox = gtk.HBox()
-            if pygobject:
-                self._selectMSFS = \
-                  gtk.RadioButton.new_with_mnemonic_from_widget(None,
-                                                                xstr("connect_sim_msfs"))
-            else:
-                self._selectMSFS = gtk.RadioButton(None,
-                                                   xstr("connect_sim_msfs"))
-
-            selectBox.pack_start(self._selectMSFS, False, False, 0);
-
-            if pygobject:
-                self._selectXPlane = \
-                  gtk.RadioButton.new_with_mnemonic_from_widget(self._selectMSFS,
-                                                                xstr("connect_sim_xplane"))
-            else:
-                self._selectXPlane = gtk.RadioButton(self._selectMSFS,
-                                                     xstr("connect_sim_xplane"))
-
-            selectBox.pack_start(self._selectXPlane, False, False, 8);
-
-            selectAlignment.add(selectBox)
-            table.attach(selectAlignment, 1, 2, 5, 7)
-
 
         self.addCancelFlightButton()
@@ -1017,9 +982,4 @@
         self._departureGate.set_markup(gate)
 
-        if self._selectSimulator:
-            config = self._wizard.gui.config
-            self._selectMSFS.set_active(config.defaultMSFS)
-            self._selectXPlane.set_active(not config.defaultMSFS)
-
     def finalize(self):
         """Finalize the page."""
@@ -1036,16 +996,5 @@
     def _connectClicked(self, button):
         """Called when the Connect button is pressed."""
-        if self._selectSimulator:
-            simulatorType = const.SIM_MSFS9 if self._selectMSFS.get_active() \
-                                            else const.SIM_XPLANE10
-        else:
-            simulatorType = const.SIM_MSFS9 if os.name=="nt" \
-              else const.SIM_XPLANE10
-
-        config = self._wizard.gui.config
-        config.defaultMSFS = simulatorType == const.SIM_MSFS9
-        config.save()
-
-        self._wizard._connectSimulator(simulatorType)
+        self._wizard._connectSimulator()
 
     def _forwardClicked(self, button):
@@ -2141,5 +2090,5 @@
         table.attach(self._v2Unit, 3, 4, 4, 5)
 
-        self._hasDerate = False
+        self._derateType = acft.DERATE_NONE
 
         self._derateLabel = gtk.Label()
@@ -2149,16 +2098,10 @@
         table.attach(self._derateLabel, 0, 1, 5, 6)
 
-        self._derate = gtk.Entry()
-        self._derate.set_width_chars(10)
-        self._derate.set_tooltip_text(xstr("takeoff_derate_tooltip"))
-        self._derate.set_alignment(1.0)
-        self._derate.connect("changed", self._derateChanged)
-        table.attach(self._derate, 1, 3, 5, 6)
-        self._derateLabel.set_mnemonic_widget(self._derate)
-
-        self._derateUnit = gtk.Label("")
-        self._derateUnit.set_use_markup(True)
-        self._derateUnit.set_alignment(0.0, 0.5)
-        table.attach(self._derateUnit, 3, 4, 5, 6)
+        self._derate = gtk.Alignment()
+        table.attach(self._derate, 2, 4, 5, 6)
+        self._derateWidget = None
+        self._derateEntry = None
+        self._derateUnit = None
+        self._derateButtons = None
 
         self._antiIceOn = gtk.CheckButton(xstr("takeoff_antiice"))
@@ -2207,7 +2150,18 @@
     def derate(self):
         """Get the derate value, if any."""
-        if self._hasDerate:
-            derate = self._derate.get_text()
+        if self._derateWidget is None:
+            return None
+        if self._derateType==acft.DERATE_BOEING:
+            derate = self._derateEntry.get_text()
             return derate if derate else None
+        elif self._derateType==acft.DERATE_EPR:
+            derate = self._derateWidget.get_text()
+            return derate if derate else None
+        elif self._derateType==acft.DERATE_TUPOLEV:
+            return acft.DERATE_TUPOLEV_NOMINAL \
+                   if self._derateButtons[0].get_active() \
+                   else acft.DERATE_TUPOLEV_TAKEOFF
+        elif self._derateType==acft.DERATE_B462:
+            return self._derateWidget.get_active()
         else:
             return None
@@ -2251,23 +2205,7 @@
         self._v2.set_tooltip_markup(xstr("takeoff_v2_tooltip" + i18nSpeedUnit))
 
-        (derateLabel, derateUnit) = \
-             self._wizard.gui.flight.aircraft.derateLabels
-
-        self._hasDerate = derateLabel is not None
-
-        if self._hasDerate:
-            self._derateLabel.set_markup(derateLabel)
-            self._derateLabel.set_use_underline(True)
-            self._derateUnit.set_markup("" if derateUnit is None
-                                        else derateUnit)
-        else:
-            self._derateLabel.set_markup(xstr("takeoff_derate"))
-            self._derateUnit.set_text("")
-
-        self._derate.set_text("")
-
-        self._derateLabel.set_sensitive(self._hasDerate)
-        self._derate.set_sensitive(self._hasDerate)
-        self._derateUnit.set_sensitive(self._hasDerate)
+        self._derateType = self._wizard.gui.flight.aircraft.derateType
+
+        self._setupDerateWidget()
 
         self._rto.set_active(False)
@@ -2307,5 +2245,6 @@
                     self.v1 <= self.vr and \
                     self.vr <= self.v2 and \
-                    (not self._hasDerate or self._derate.get_text()!="")
+                    (self._derateType==acft.DERATE_NONE or
+                     self.derate is not None)
         self._button.set_sensitive(sensitive)
 
@@ -2336,8 +2275,97 @@
         aircraft = self._wizard.gui.flight.aircraft
         aircraft.updateV1R2()
-        if self._hasDerate:
+        if self.derate is not None:
             aircraft.updateDerate()
         aircraft.updateTakeoffAntiIce()
         self._wizard.nextPage()
+
+    def _setupDerateWidget(self):
+        """Setup the derate widget."""
+        if self._derateWidget is not None:
+            self._derate.remove(self._derateWidget)
+
+        if self._derateType==acft.DERATE_BOEING:
+            self._derateLabel.set_text(xstr("takeoff_derate_boeing"))
+            self._derateLabel.set_use_underline(True)
+            self._derateLabel.set_sensitive(True)
+
+            self._derateEntry = gtk.Entry()
+            self._derateEntry.set_width_chars(7)
+            self._derateEntry.set_tooltip_text(xstr("takeoff_derate_boeing_tooltip"))
+            self._derateEntry.set_alignment(1.0)
+            self._derateEntry.connect("changed", self._derateChanged)
+            self._derateLabel.set_mnemonic_widget(self._derateEntry)
+
+            self._derateUnit = gtk.Label("%")
+            self._derateUnit.set_alignment(0.0, 0.5)
+
+            self._derateWidget = gtk.Table(3, 1)
+            self._derateWidget.set_row_spacings(4)
+            self._derateWidget.set_col_spacings(16)
+            self._derateWidget.set_homogeneous(False)
+
+            self._derateWidget.attach(self._derateEntry, 0, 2, 0, 1)
+            self._derateWidget.attach(self._derateUnit, 2, 3, 0, 1)
+
+            self._derate.add(self._derateWidget)
+        elif self._derateType==acft.DERATE_EPR:
+            self._derateLabel.set_text("_EPR:")
+            self._derateLabel.set_use_underline(True)
+            self._derateLabel.set_sensitive(True)
+
+            self._derateWidget = gtk.Entry()
+            self._derateWidget.set_width_chars(7)
+            self._derateWidget.set_tooltip_text(xstr("takeoff_derate_epr_tooltip"))
+            self._derateWidget.set_alignment(1.0)
+            self._derateWidget.connect("changed", self._derateChanged)
+            self._derateLabel.set_mnemonic_widget(self._derateWidget)
+
+            self._derate.add(self._derateWidget)
+        elif self._derateType==acft.DERATE_TUPOLEV:
+            self._derateLabel.set_text(xstr("takeoff_derate_tupolev"))
+            self._derateLabel.set_use_underline(True)
+            self._derateLabel.set_sensitive(True)
+
+            if pygobject:
+                nominal = gtk.RadioButton.\
+                  new_with_label_from_widget(None,
+                                             xstr("takeoff_derate_tupolev_nominal"))
+            else:
+                nominal = gtk.RadioButton(None,
+                                          xstr("takeoff_derate_tupolev_nominal"))
+            nominal.set_use_underline(True)
+            nominal.set_tooltip_text(xstr("takeoff_derate_tupolev_nominal_tooltip"))
+            nominal.connect("toggled", self._derateChanged)
+
+            if pygobject:
+                takeoff = gtk.RadioButton.\
+                  new_with_label_from_widget(nominal,
+                                             xstr("takeoff_derate_tupolev_takeoff"))
+            else:
+                takeoff = gtk.RadioButton(nominal,
+                                          xstr("takeoff_derate_tupolev_takeoff"))
+
+            takeoff.set_use_underline(True)
+            takeoff.set_tooltip_text(xstr("takeoff_derate_tupolev_takeoff_tooltip"))
+            takeoff.connect("toggled", self._derateChanged)
+
+            self._derateButtons = [nominal, takeoff]
+
+            self._derateWidget = gtk.HBox()
+            self._derateWidget.pack_start(nominal, False, False, 4)
+            self._derateWidget.pack_start(takeoff, False, False, 4)
+
+            self._derate.add(self._derateWidget)
+        elif self._derateType==acft.DERATE_B462:
+            self._derateLabel.set_text("")
+
+            self._derateWidget = gtk.CheckButton(xstr("takeoff_derate_b462"))
+            self._derateWidget.set_tooltip_text(xstr("takeoff_derate_b462_tooltip"))
+            self._derateWidget.set_use_underline(True)
+            self._derate.add(self._derateWidget)
+        else:
+            self._derateWidget = None
+            self._derateLabel.set_text("")
+            self._derateLabel.set_sensitive(False)
 
 #-----------------------------------------------------------------------------
@@ -3545,8 +3573,7 @@
         self.gui.rtoToggled(indicated)
 
-    def _connectSimulator(self, simulatorType):
+    def _connectSimulator(self):
         """Connect to the simulator."""
-        self.gui.connectSimulator(self._bookedFlight.aircraftType,
-                                  simulatorType)
+        self.gui.connectSimulator(self._bookedFlight.aircraftType)
 
     def _arrivalMETARCallback(self, returned, result):
Index: src/mlx/gui/gui.py
===================================================================
--- src/mlx/gui/gui.py	(revision 501)
+++ src/mlx/gui/gui.py	(revision 491)
@@ -69,5 +69,4 @@
         self._flight = None
         self._simulator = None
-        self._fsType = None
         self._monitoring = False
 
@@ -209,9 +208,4 @@
 
     @property
-    def fsType(self):
-        """Get the flight simulator type."""
-        return self._fsType
-
-    @property
     def entranceExam(self):
         """Get whether an entrance exam is about to be taken."""
@@ -434,5 +428,4 @@
             self._wizard.connected(fsType, descriptor)
         self._reconnecting = False
-        self._fsType = fsType
         self._listenHotkeys()
 
@@ -519,6 +512,4 @@
         """Reset the GUI."""
         self._disconnect()
-
-        self._simulator = None
 
         self._flightInfo.reset()
@@ -896,5 +887,5 @@
             self._stdioStartingLine = False
 
-    def connectSimulator(self, aircraftType, simulatorType):
+    def connectSimulator(self, aircraftType):
         """Connect to the simulator for the first time."""
         self._logger.reset()
@@ -907,5 +898,5 @@
 
         if self._simulator is None:
-            self._simulator = fs.createSimulator(simulatorType, self)
+            self._simulator = fs.createSimulator(const.SIM_MSFS9, self)
             fs.setupMessageSending(self.config, self._simulator)
             self._setupTimeSync()
Index: src/mlx/gui/monitor.py
===================================================================
--- src/mlx/gui/monitor.py	(revision 496)
+++ src/mlx/gui/monitor.py	(revision 480)
@@ -226,8 +226,4 @@
         table.attach(label, 0, 1, 8, 9)
         table.attach(self._qnh, 1, 2, 8, 9)
-
-        (label, self._cog) = self._createLabeledEntry("CoG:", 7)
-        table.attach(label, 2, 3, 8, 9)
-        table.attach(self._cog, 3, 4, 8, 9)
 
         alignment.add(table)
@@ -316,5 +312,4 @@
             self._adf2.set_text("-")
             self._qnh.set_text("-")
-            self._cog.set_text("-")
         else:
             self._timestamp.set_text(time.strftime("%H:%M:%S",
@@ -391,5 +386,5 @@
             self._gearControlDown.set_sensitive(aircraftState.gearControlDown)
             self._gearsDown.set_sensitive(aircraftState.gearsDown)
-            self._spoilersArmed.set_sensitive(aircraftState.spoilersArmed is True)
+            self._spoilersArmed.set_sensitive(aircraftState.spoilersArmed)
             self._spoilersExtension.set_text("%.0f" % (aircraftState.spoilersExtension,))
             self._windSpeed.set_text("%.0f" % (aircraftState.windSpeed,))
@@ -409,5 +404,4 @@
             self._adf1.set_text("-" if aircraftState.adf1 is None else aircraftState.adf1)
             self._adf2.set_text("-" if aircraftState.adf2 is None else aircraftState.adf2)
-            self._cog.set_text("%.2f%%" % (aircraftState.cog*100.0,))
 
 #------------------------------------------------------------------------------
