diff --git a/A320-main.xml b/A320-main.xml
index 21eb4dc6..54423ce9 100644
--- a/A320-main.xml
+++ b/A320-main.xml
@@ -4855,7 +4855,6 @@
 			<file>Aircraft/A320-family/Nasal/MCDU/PERFTO.nas</file>
 			<file>Aircraft/A320-family/Nasal/MCDU/RADNAV.nas</file>
 			<file>Aircraft/A320-family/Nasal/MCDU/DATA.nas</file>
-			<file>Aircraft/A320-family/Nasal/MCDU/STATUS.nas</file>
 		</mcdu>
 		<!-- Traffic layer from E-jet -->
 		<traffic>
diff --git a/AircraftConfig/rendering.xml b/AircraftConfig/rendering.xml
index 4fe6dd1c..6b61df9d 100644
--- a/AircraftConfig/rendering.xml
+++ b/AircraftConfig/rendering.xml
@@ -34,39 +34,44 @@
 		
 		<text>
 			<halign>left</halign>
-			<label>The Aircraft Config has detected that rendering settings are not set properly!</label>
+			<label>Your rendering settings will not allow all graphical features of the aircraft to be visible!</label>
 		</text>
 		
 		<text>
 			<halign>left</halign>
-			<label>This means lighting effects on the exterior and in the virtual cockpit will not be visible.</label>
+			<label>This means certain lighting effects will not be usable, including cockpit floodlights. </label>
 		</text>
 		
 		<text>
 			<halign>left</halign>
-			<label>ALS, and custom shader settings must be on.</label>
+			<label>For the best experience:</label>
 		</text>
 		
 		<text>
 			<halign>left</halign>
-			<label>Landmass shader must be at least 4 for lightspots to work.</label>
+			<label>* Atmospheric Light Scattering should be enabled</label>
 		</text>
 		
 		<text>
 			<halign>left</halign>
-			<label>Model shader must be at least 2 for lightmaps to work.</label>
+			<label>* Landmass shader should be at least 4 for external lights to illuminate the ground</label>
+		</text>
+		
+		<text>
+			<halign>left</halign>
+			<label>* Model shader should be at least 2 for lighting to illuminate the aircraft model</label>
 		</text>
 		
 		<hrule/>
 		
 		<text>
 			<halign>left</halign>
-			<label>Would you like the Aircraft Config to automatically turn on ALS and fix shader settings?</label>
+			<label>Would you like Aircraft Config to automatically set these minimum basic settings?</label>
 		</text>
 		
 		<text>
 			<halign>left</halign>
-			<label>If the settings do not save after fixing, try quitting FlightGear through File -&gt; Exit after fixing.</label>
+			<label>To save these settings, make sure to quit FlightGear with File -&gt; Exit after your flight is complete.</label>
 		</text>
 	
 	</group>
@@ -105,8 +110,8 @@
 		
 		<button>
 			<halign>center</halign>
-			<legend>Yes, fix all settings</legend>
-			<pref-width>180</pref-width>
+			<legend>Apply minimum settings</legend>
+			<pref-width>200</pref-width>
 			<binding>
 				<command>nasal</command>
 				<script>
@@ -120,8 +125,8 @@
 		
 		<button>
 			<halign>center</halign>
-			<legend>Yes, but I'll fix shaders myself</legend>
-			<pref-width>180</pref-width>
+			<legend>Advanced: View Shader Settings</legend>
+			<pref-width>200</pref-width>
 			<binding>
 				<command>nasal</command>
 				<script>
@@ -143,8 +148,8 @@
 		
 		<button>
 			<halign>center</halign>
-			<legend>I don't care</legend>
-			<pref-width>180</pref-width>
+			<legend>Ignore</legend>
+			<pref-width>150</pref-width>
 			<binding>
 				<command>dialog-close</command>
 			</binding>
diff --git a/Models/Instruments/IESI/IESI.nas b/Models/Instruments/IESI/IESI.nas
index d282c3f4..207cded5 100644
--- a/Models/Instruments/IESI/IESI.nas
+++ b/Models/Instruments/IESI/IESI.nas
@@ -49,52 +49,41 @@ var canvas_IESI = {
 		obj.AI_horizon_trans = obj["AI_horizon"].createTransform();
 		obj.AI_horizon_rot = obj["AI_horizon"].createTransform();
 		
+		obj._aiCenter = obj["AI_center"].getCenter();
 		obj._cachedInhg = nil;
-		obj._excessMotion = 0;
-		obj._fast = 0;
+		obj._cachedMode = nil;
+		obj._canReset = 0;
+		obj._excessMotionInInit = 0;
+		obj._fastInit = 0;
 		obj._IESITime = 0;
-		obj._showIESI = 0;
-		obj.ASI = 0;
-		obj.canReset = 0;
-		obj.isNegativeAlt = 0;
-		obj.middleAltOffset = nil;
+		obj._isNegativeAlt = 0;
+		obj._middleAltOffset = nil;
+		obj._powerResult = 0;
+		obj._roll = 0;
 		
 		obj.update_items = [
 			props.UpdateManager.FromHashValue("airspeed", nil, func(val) {
-				# Subtract 30, since the scale starts at 30, but don't allow less than 0, or more than 520 knots
-				if (val <= 30) {
-					obj.ASI = 0;
-				} else if (val >= 520) {
-					obj.ASI = 490;
-				} else {
-					obj.ASI = val - 30;
-				}
-				obj["ASI_scale"].setTranslation(0, obj.ASI * 8.295);
+				obj["ASI_scale"].setTranslation(0, math.clamp(val - 30, 0, 490) * 8.295);
 			}),
 			props.UpdateManager.FromHashList(["altitude","altitude_ind"], nil, func(val) {
-				if (val.altitude > 50000) {
-					val.altitude = 50000;
-				} elsif (val.altitude < -2000) {
-					val.altitude = -2000;
-				}
-				
+				val.altitude = math.clamp(val.altitude, -2000, 50000);
 				if (val.altitude < 0) {
 					obj["negText"].show();
-					obj.isNegativeAlt = 1;
+					obj._isNegativeAlt = 1;
 				} else {
 					obj["negText"].hide();
-					obj.isNegativeAlt = 0;
+					obj._isNegativeAlt = 0;
 				}
 				
 				obj.altOffset = (val.altitude / 500) - int(val.altitude / 500);
 				obj.middleAltText = roundaboutAlt(val.altitude / 100);
 				if (obj.altOffset > 0.5) {
-					obj.middleAltOffset = -(obj.altOffset - 1) * 258.5528;
+					obj._middleAltOffset = -(obj.altOffset - 1) * 258.5528;
 				} else {
-					obj.middleAltOffset = -obj.altOffset * 258.5528;
+					obj._middleAltOffset = -obj.altOffset * 258.5528;
 				}
 				
-				obj["ALT_scale"].setTranslation(0, -obj.middleAltOffset);
+				obj["ALT_scale"].setTranslation(0, -obj._middleAltOffset);
 				obj["ALT_scale"].update();
 				obj["ALT_five"].setText(sprintf("%03d", abs(obj.middleAltText+10)));
 				obj["ALT_four"].setText(sprintf("%03d", abs(obj.middleAltText+5)));
@@ -114,20 +103,16 @@ var canvas_IESI = {
 				obj.altTens = num(right(sprintf("%02d", val.altitude), 2));
 				obj["ALT_tens"].setTranslation(0, obj.altTens * 3.16);
 			}),
-			props.UpdateManager.FromHashValue("mach", nil, func(val) {
-				if (val >= 0.5) {
-					obj._machWasAbove50 = 1;
-					obj["ASI_mach_decimal"].show();
-					obj["ASI_mach"].show();
-				} elsif (val >= 0.45 and obj._machWasAbove50) {
+			props.UpdateManager.FromHashValue("showMach", nil, func(val) {
+				if (val) {
 					obj["ASI_mach_decimal"].show();
 					obj["ASI_mach"].show();
 				} else {
-					obj._machWasAbove50 = 0;
 					obj["ASI_mach_decimal"].hide();
 					obj["ASI_mach"].hide();
 				}
-				
+			}),
+			props.UpdateManager.FromHashValue("mach", nil, func(val) {
 				if (val >= 0.999) {
 					obj["ASI_mach"].setText("99");
 				} else {
@@ -138,8 +123,9 @@ var canvas_IESI = {
 				obj.AI_horizon_trans.setTranslation(0, val * 16.74);
 			}),
 			props.UpdateManager.FromHashValue("roll", nil, func(val) {
-				obj.AI_horizon_rot.setRotation(-val * D2R, obj["AI_center"].getCenter());
-				obj["AI_bank"].setRotation(-val * D2R);
+				obj._roll = -val * D2R;
+				obj.AI_horizon_rot.setRotation(obj._roll, obj._aiCenter);
+				obj["AI_bank"].setRotation(obj._roll);
 			}),
 			props.UpdateManager.FromHashValue("skid", nil, func(val) {
 				if (abs(val) >= 84.99) {
@@ -149,9 +135,6 @@ var canvas_IESI = {
 					obj["AI_slipskid"].show();
 				}
 			}),
-			props.UpdateManager.FromHashList(["altimeter_mode","qnh_hpa","qnh_inhg"], nil, func(val) {
-				obj.updateQNH(val);
-			}),
 		];
 		return obj;
 	},	
@@ -159,22 +142,21 @@ var canvas_IESI = {
 		return ["IESI","IESI_Init","attRst","attRstRect","att90s","ATTflag","ATTflag_rect","ATTflag_text","ALTwarn","SPDwarn","ASI_scale","ASI_mach","ASI_mach_decimal","AI_center","AI_index","AI_horizon","AI_sky_bank","AI_bank","AI_bank_center","AI_slipskid","ALT_scale","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_meters","QNH_setting","QNH_std","negText","negText2","AI_bank_scale","metricM","metricBox"];
 	},
 	update: func(notification) {
-		if (notification.qnh_inhg != me._cachedInhg) {
-			me._cachedInhg = notification.qnh_inhg;
-			me.updateQNH(notification);
-		}
+		me._powerResult = me.updatePower(notification);
+		if (me._powerResult == 0) { return; }
 		
-		me.updatePower(notification);
-		if (me.group.getVisible() == 0) {
-			return;
+		if (notification.qnh_inhg != me._cachedInhg or notification.altimeter_mode != me._cachedMode) {
+			me._cachedInhg = notification.qnh_inhg;
+			me._cachedMode = notification.altimeter_mode;
+			me.updateQNH(notification);
 		}
 		
 		if (me._IESITime + 90 >= notification.elapsedTime) {
 			if (notification.groundspeed > 2) {
-				me._excessMotion = 1;
+				me._excessMotionInInit = 1;
 			}
 			
-			if (me._fast) {
+			if (me._fastInit) {
 				me["IESI"].show(); 
 				me["IESI_Init"].hide();
 				me["AI_bank"].hide();
@@ -203,7 +185,7 @@ var canvas_IESI = {
 				me["metricM"].show();
 				me["metricBox"].show();
 				
-				if (me.isNegativeAlt) {
+				if (me._isNegativeAlt) {
 					me["negText2"].show();
 				} else {
 					me["negText2"].hide();
@@ -215,7 +197,7 @@ var canvas_IESI = {
 				me["negText2"].hide();
 			}
 			
-			if (!me._excessMotion) {
+			if (!me._excessMotionInInit) {
 				me["IESI_Init"].hide();
 				me["IESI"].show();
 				me["AI_bank"].show();
@@ -260,59 +242,43 @@ var canvas_IESI = {
 			} else {
 				me["QNH_setting"].setText(sprintf("%4.0f", notification.qnh_hpa));
 			}
-			me["QNH_setting"].show();
 			me["QNH_std"].hide();
+			me["QNH_setting"].show();
 		}
 	},
-	_transientVar: 0,
 	updatePower: func(notification) {
-		# todo 20W power consumption
-		if (notification.attReset == 1 and me.canReset) {
-			me.canReset = 0;
-			me._excessMotion = 0;
-			me._fast = 1;
+		if (notification.attReset == 1 and me._canReset) {
+			me._canReset = 0;
+			me._excessMotionInInit = 0;
+			me._fastInit = 1;
 			iesi_init.setBoolValue(0);
-		} else if (me._IESITime + 90 < notification.elapsedTime and notification.iesiInit and !me.canReset) {
-			me.canReset = 1;
+		} else if (me._IESITime + 90 < notification.elapsedTime and notification.iesiInit and !me._canReset) {
+			me._canReset = 1;
 		}
 		
-		if (notification.dcEss >= 25 or (notification.relay7XB and notification.dcHot1703 >= 25)) {
-			me._showIESI = 1;
+		if (notification.iesiPowered) {
 			if (notification.acconfig != 1 and notification.iesiInit != 1) {
 				iesi_init.setBoolValue(1);
-				if (me._fast) {
-					me._IESITime = notification.elapsedTime - 80;
-				} else {
-					me._IESITime = notification.elapsedTime;
-				}
+				me._IESITime = notification.elapsedTime - (me._fastInit ? 80 : 0);
 			} else if (notification.acconfig == 1 and notification.iesiInit != 1) {
 				iesi_init.setBoolValue(1);
 				me._IESITime = notification.elapsedTime - 87;
 			}
 		} elsif (notification.iesiInit) {
-			if (!me._transientVar) {
-				me._transientVar = 1;
-				settimer(func() {
-					if (systems.ELEC.Bus.dcEss.getValue() >= 25 or (systems.ELEC.Bus.dcHot1703.getValue() >= 25 and systems.ELEC.Relay.relay7XB.getValue())) {
-						me._transientVar = 0;
-					} else {
-						me.canReset = 0;
-						me._excessMotion = 0;
-						me._fast = 0;
-						me._showIESI = 0;
-						me._transientVar = 0;
-						iesi_init.setBoolValue(0);
-					}
-				}, 0.2); # 200ms delay power transients
-			}
+			me._canReset = 0;
+			me._excessMotionInInit = 0;
+			me._fastInit = 0;
+			iesi_init.setBoolValue(0);
 		}
 		
-		if (me._showIESI and notification.iesiBrt > 0.01) {
+		if (notification.iesiPowered and notification.iesiBrt > 0.01) {
 			me.group.setVisible(1);
 			pts.Instrumentation.Iesi.lcdOn.setBoolValue(1);
+			return 1;
 		} else {
 			me.group.setVisible(0);
 			pts.Instrumentation.Iesi.lcdOn.setBoolValue(0);
+			return 0;
 		}
 	},
 };
@@ -354,13 +320,14 @@ var input = {
 	"attReset": "/instrumentation/iesi/att-reset",
 	"iesiBrt": "/controls/lighting/DU/iesi",
 	"iesiInit": "/instrumentation/iesi/iesi-init",
+	"iesiPowered": "/instrumentation/iesi/power/power-on",
 	"mach": "/instrumentation/airspeed-indicator/indicated-mach",
 	"pitch": "/instrumentation/iesi/pitch-deg",
 	"qnh_hpa": "/instrumentation/altimeter[6]/setting-hpa",
 	"qnh_inhg": "/instrumentation/altimeter[6]/setting-inhg",
 	"roll": "/orientation/roll-deg",
 	"skid": "/instrumentation/iesi/slip-skid",
-	"relay7XB": "/systems/electrical/sources/si-1/inverter-control/relay-7xb",
+	"showMach": "/instrumentation/iesi/display/show-mach",
 };
 
 foreach (var name; keys(input)) {
diff --git a/Models/Instruments/MCDU/MCDU.nas b/Models/Instruments/MCDU/MCDU.nas
index a45c6dfd..05497689 100644
--- a/Models/Instruments/MCDU/MCDU.nas
+++ b/Models/Instruments/MCDU/MCDU.nas
@@ -25,7 +25,6 @@ var myDESWIND = [nil, nil];
 var myHISTWIND = [nil, nil];
 var myAtis = [nil, nil];
 var default = "HoneywellMCDU.ttf";
-var symbol = "HoneywellMCDU.ttf";
 var normal = 60;
 var small = 46;
 var page = "";
@@ -167,23 +166,31 @@ var canvas_MCDU_base = {
 			}
 		}
 		
-		me["PERFTO_FE"].setFont(symbol);
-		me["PERFTO_SE"].setFont(symbol);
-		me["PERFTO_OE"].setFont(symbol);
+		me["Simple_L1S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_L2S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_L3S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_L4S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_L5S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_L6S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_C1S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_C2S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_C4S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_C5S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_C6S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_R1S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_R2S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_R4S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_R5S"].setFont("HoneywellMCDUSmall.ttf");
+		me["Simple_R6S"].setFont("HoneywellMCDUSmall.ttf");
+
 		me["PERFTO_FE"].setColor(BLUE);
 		me["PERFTO_SE"].setColor(BLUE);
 		me["PERFTO_OE"].setColor(BLUE);
 		
-		me["PERFAPPR_FE"].setFont(symbol);
-		me["PERFAPPR_SE"].setFont(symbol);
-		me["PERFAPPR_OE"].setFont(symbol);
 		me["PERFAPPR_FE"].setColor(BLUE);
 		me["PERFAPPR_SE"].setColor(BLUE);
 		me["PERFAPPR_OE"].setColor(BLUE);
 		
-		me["PERFGA_FE"].setFont(symbol);
-		me["PERFGA_SE"].setFont(symbol);
-		me["PERFGA_OE"].setFont(symbol);
 		me["PERFGA_FE"].setColor(BLUE);
 		me["PERFGA_SE"].setColor(BLUE);
 		me["PERFGA_OE"].setColor(BLUE);
@@ -307,16 +314,10 @@ var canvas_MCDU_base = {
 		me["Simple_R6_Arrow"].hide();
 	},
 	standardFontSize: func() {
-		me.fontLeft(default, default, default, default, default, default);
-		me.fontLeftS(default, default, default, default, default, default);
-		me.fontRight(default, default, default, default, default, default);
-		me.fontRightS(default, default, default, default, default, default);
 		me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 		me.fontSizeLeftS(small, small, small, small, small, small);
 		me.fontSizeRight(normal, normal, normal, normal, normal, normal);
 		me.fontSizeRightS(small, small, small, small, small, small);
-		me.fontCenter(default, default, default, default, default, default);
-		me.fontCenterS(default, default, default, default, default, default);
 		me.fontSizeCenter(normal, normal, normal, normal, normal, normal);
 		me.fontSizeCenterS(small, small, small, small, small, small);
 	},
@@ -348,61 +349,29 @@ var canvas_MCDU_base = {
 		var	degrees2 = int(dms2);
 		var	minutes2 = sprintf("%.1f",abs((dms2 - degrees2) * 60));
 		var	sign2 = degrees2 >= 0 ? "E" : "W";
-		return sprintf("%d %.1f%s/%03s %.1f%s",abs(degrees),minutes,sign,abs(degrees2),minutes2,sign2);
+		return sprintf("%d°%.1f%s/%03s°%.1f%s",abs(degrees),minutes,sign,abs(degrees2),minutes2,sign2);
 	},
 	getIRSStatus: func(a,b = 0) {
 		var irsstatus = "INVAL";
 		if (systems.ADIRS.ADIRunits[a].operative) {
 			if (systems.ADIRS.Operating.aligned[a].getValue()) {
-				irsstatus = (systems.ADIRS.ADIRunits[a].mode == 2) ? "ATT" : "NAV";
+				irsstatus = (systems.ADIRS.ADIRunits[a].mode == 2) ? "  ATT" : "NAV";
 			} else {
 				if (b) {
-					irsstatus = "ALIGN TTN" ~ sprintf("%2d",math.round(systems.ADIRS.ADIRunits[a]._alignTime) / 60);
+					irsstatus = "  ALIGN TTN" ~ sprintf("%2d",math.round(systems.ADIRS.ADIRunits[a]._alignTime) / 60);
 				} else {
-					irsstatus = "ALIGN";
+					irsstatus = "  ALIGN";
 				}
 			}
 		}
 		return irsstatus;
 	},
-	standardFont: func() {
-		me.fontLeft(default, default, default, default, default, default);
-		me.fontLeftS(default, default, default, default, default, default);
-		me.fontRight(default, default, default, default, default, default);
-		me.fontRightS(default, default, default, default, default, default);
-	},
 	standardColor: func() {
 		me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
 		me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
 		me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
 		me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
 	},
-	doIRSFunc: func(i,degrees,minutes,sign,degrees2,minutes2,sign2) {
-		if (systems.ADIRS.ADIRunits[i].operative and getprop("/FMGC/internal/align" ~ (i + 1) ~ "-done")) {
-			me["Simple_C" ~ (3 + i)].setText(abs(degrees) ~ "°" ~ minutes ~ " " ~ sign ~ "/" ~ abs(degrees2) ~ "°" ~ minutes2 ~ " " ~ sign2);
-		} else {
-			me["Simple_C" ~ (3 + i)].setText("-----.--/-----.--");
-		}
-		if (align_set.getValue() == 1) {
-			me["Simple_R6"].setText("CONFIRM ALIGN ");
-			me.colorRight("ack", "ack", "ack", "ack", "ack", "amb");
-			me["IRSINIT_star"].show();
-			showRightArrow(me,0, 0, 0, 0, 0, -1);
-		} else {
-			me["Simple_R6"].setText("ALIGN ON REF ");
-			me["IRSINIT_star"].hide();
-			showRightArrow(me,0, 0, 0, 0, 0, 1);
-		}
-		if (systems.ADIRS.Operating.aligned[i].getValue()) {
-			if (systems.ADIRS.ADIRunits[i].mode == 2) {
-				me["Simple_C" ~ (3 + i) ~ "S"].setText("IRS" ~ (i + 1) ~ " IN ATT");
-			} else {
-				me["Simple_C" ~ (3 + i) ~ "S"].setText("IRS" ~ (i + 1) ~ " ALIGNED ON GPS");
-			}
-		} else {
-			me["Simple_C" ~ (3 + i) ~ "S"].setText("IRS" ~ (i + 1) ~ " ALIGNING ON GPS");
-		}
-	},
 	standardHideExcess: func() {
 		me["Simple_L0S"].hide();
 		me["Simple_C3B"].hide();
@@ -452,10 +421,38 @@ var canvas_MCDU_base = {
 		if (page != "ATISDETAIL") {
 			me["ATISArrows"].hide();
 		}
+		if (page == "STATUS") {
+			me["Simple_R5S"].setFont("HoneywellMCDU.ttf");
+			me["Simple_R5S"].setFontSize(normal);
+		} else {
+			me["Simple_R5S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R5S"].setFontSize(small);
+		}
+		if (page == "IRSMON") {
+			me["Simple_R1S"].setFont("HoneywellMCDU.ttf");
+			me["Simple_R1S"].setFontSize(normal);
+			me["Simple_R2S"].setFont("HoneywellMCDU.ttf");
+			me["Simple_R2S"].setFontSize(normal);
+			me["Simple_R3S"].setFont("HoneywellMCDU.ttf");
+			me["Simple_R3S"].setFontSize(normal);
+		} else {
+			me["Simple_R1S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R1S"].setFontSize(small);
+			me["Simple_R2S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R2S"].setFontSize(small);
+			me["Simple_R3S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R3S"].setFontSize(small);
+		}
+		if (page != "POSMON") {
+			me["Simple_Title"].setFontSize(normal);
+			me["Simple_Title2"].setFontSize(normal);
+		}
+		
 		if (page == "F-PLNA" or page == "F-PLNB") {
 			if (!pageSwitch[i].getBoolValue()) {
 				me["Simple"].show();
 				me["Simple_Center"].show();
+				me["Simple_C1S"].setColor(WHITE);
 				me["FPLN"].show();
 				me["DIRTO_TMPY_group"].hide();
 				me["INITA"].hide();
@@ -477,8 +474,6 @@ var canvas_MCDU_base = {
 				
 				me.hideAllArrows();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeCenter(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -874,10 +869,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.fontLeft(default, default, default, default, default, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(symbol, symbol, symbol, default, default, default);
-				me.fontRightS(default, default, default, default, default, default);
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
 				me.colorLeft("wht", "wht", "wht", "wht", "wht", "wht");
@@ -898,7 +889,6 @@ var canvas_MCDU_base = {
 			}
 			
 			if (atsu.AOC.station != nil) {
-				me["Simple_R1"].setFont(default);
 				me["Simple_R1"].setText(atsu.AOC.station);
 				if (atsu.AOC.sent and !atsu.AOC.received) {
 					me["WEATHERREQSEND"].hide();
@@ -913,7 +903,6 @@ var canvas_MCDU_base = {
 				}
 			} else {
 				me["Simple_R5"].setText("SEND ");
-				me["Simple_R1"].setFont(symbol);
 				me["Simple_R1"].setText("[    ]");
 				me["WEATHERREQSEND"].hide();
 			}
@@ -960,8 +949,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeCenter(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -989,7 +976,6 @@ var canvas_MCDU_base = {
 						me["ArrowRight"].hide();
 					}
 					
-					me.dynamicPageFontFunc(myReceivedMessages[i]);
 					me.dynamicPageArrowFunc(myReceivedMessages[i]);
 					
 					for (var x = 1; x < 7; x = x + 1) {
@@ -1021,8 +1007,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(small, small, small, small, small, normal);
 				me.fontSizeCenter(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -1043,21 +1027,6 @@ var canvas_MCDU_base = {
 				
 					me["Simple_L6_Arrow"].setColor(getprop("/MCDUC/colors/" ~ myReceivedMessage[i].arrowsColour[0][5] ~ "/r"), getprop("/MCDUC/colors/" ~ myReceivedMessage[i].arrowsColour[0][5] ~ "/g"), getprop("/MCDUC/colors/" ~ myReceivedMessage[i].arrowsColour[0][5] ~ "/b"));
 					
-					forindex (var matrixFont; myReceivedMessages[i].fontMatrix) {
-						if (matrixFont == 0) { 
-							var sign = "L"; 
-						} else { 
-							var sign = "R"; 
-						}
-						forindex (var item; myReceivedMessages[i].fontMatrix[matrixFont]) {
-							if (myReceivedMessages[i].fontMatrix[matrixFont][item] == 1) {
-								me["Simple_" ~ sign ~ (item + 1)].setFont(symbol);
-							} else {
-								me["Simple_" ~ sign ~ (item + 1)].setFont(default);
-							}
-						}
-					}
-					
 					me.dynamicPageArrowFunc(myReceivedMessage[i]);
 					
 					if (myReceivedMessage[i].L1[0] != nil) {
@@ -1524,7 +1493,6 @@ var canvas_MCDU_base = {
 				me["arrow5R"].hide();
 				
 				me.standardFontSize();
-				me["Simple_L4"].setFont(symbol);
 				
 				me.colorLeft("blu", "blu", "blu", "blu", "wht", "wht");
 				me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
@@ -1753,8 +1721,6 @@ var canvas_MCDU_base = {
 				
 				me.standardHideExcess();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(small, small, small, small, normal, normal);
 				me.fontSizeCenter(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -1830,7 +1796,6 @@ var canvas_MCDU_base = {
 				me["Simple_L1S"].setText(" ARPT/TYPE");
 				me["Simple_L6S"].setText(" ATC MENU");
 				me["Simple_L4"].setText(" [  ]/[  ]");
-				me["Simple_L4"].setFont(symbol);
 				me["Simple_L6"].setText(" RETURN");
 				
 				me["Simple_C1"].setFontSize(small);
@@ -1903,8 +1868,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(small, normal, normal, normal, normal, normal);
 				me.fontSizeCenter(normal, normal, normal, normal, small, normal);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -1989,8 +1952,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeCenter(small, normal, small, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, small, normal);
@@ -2068,8 +2029,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, small, normal);
 				me.standardFontColour();
@@ -2228,8 +2187,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, small, normal);
 				
@@ -2270,8 +2227,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, small, normal, normal, small, normal);
 				me.fontSizeRight(normal, small, normal, small, small, normal);
 				
@@ -2321,9 +2276,7 @@ var canvas_MCDU_base = {
 				showRightArrow(me,-1, -1, -1, -1, -1, -1);
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
-				
-				me.standardFont();
-				
+			
 				me.fontSizeLeft(normal, small, normal, normal, small, normal);
 				me.fontSizeRight(normal, small, normal, small, small, normal);
 				
@@ -2390,7 +2343,7 @@ var canvas_MCDU_base = {
 				me["arrowsDepArr"].show();
 				me["arrow1L"].hide();
 				me["arrow2L"].hide();
-				me["arrow3L"].hide();
+				me["arrow3L"].show();
 				me["arrow4L"].hide();
 				me["arrow5L"].hide();
 				me["arrow1R"].hide();
@@ -2408,20 +2361,15 @@ var canvas_MCDU_base = {
 				showLeft(me,1, 1, 1, -1, -1, 1);
 				me["Simple_L0S"].hide();
 				showLeftS(me,1, 1, 1, -1, -1, 1);
-				showLeftArrow(me,-1, -1, 1, -1, -1, -1);
+				showLeftArrow(me,-1, -1, -1, -1, -1, -1);
 				showRight(me,-1, 1, -1, 1, 1, 1);
 				showRightS(me,-1, -1, -1, 1, 1, 1);
 				showRightArrow(me,-1, -1, -1, -1, -1, 1);
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.fontLeft(default, default, default, default, symbol, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, default, default, default, default, default);
-				me.fontRightS(default, default, default, default, default, default);
-				
-				me.fontSizeLeft(normal, normal, normal, normal, small, normal);
-				me.fontSizeRight(normal, normal, normal, small, normal, normal);
+				me.fontSizeLeft(normal, normal, small, normal, normal, small);
+				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
 				
 				me.colorLeft("grn", "blu", "blu", "wht", "blu", "grn");
 				me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
@@ -2433,7 +2381,7 @@ var canvas_MCDU_base = {
 				if (fmgc.FMGCInternal.phase == 0 or fmgc.FMGCInternal.phase == 7) {  # only on preflight and done phases
 					me["Simple_L5S"].setText("CHG CODE");
 					me["Simple_L5S"].show();
-					me["Simple_L5"].setText("[   ]");
+					me["Simple_L5"].setText("[ ]");
 					me["Simple_L5"].show();
 				} else {
 					me["Simple_L5"].hide();
@@ -2445,8 +2393,9 @@ var canvas_MCDU_base = {
 				me["Simple_L6S"].setText("IDLE/PERF");
 				me["Simple_R6"].setText("STATUS/XLOAD ");
 				me["Simple_R6S"].setText("SOFTWARE ");
-				me["Simple_R4S"].setText("PILOT STORED  ");
+				me["Simple_R4S"].setText("PILOT STORED        ");
 				me["Simple_R4"].setText("00RTES 00RWYS ");
+				me["arrow3L"].setColor(BLUE);
 			
 				pageSwitch[i].setBoolValue(1);
 			}
@@ -2593,8 +2542,6 @@ var canvas_MCDU_base = {
 					me.colorLeftArrow(myPilotWP[i].arrowsColour[0][0],myPilotWP[i].arrowsColour[0][1],myPilotWP[i].arrowsColour[0][2],myPilotWP[i].arrowsColour[0][3],myPilotWP[i].arrowsColour[0][4],myPilotWP[i].arrowsColour[0][5]);
 					me.colorRightArrow(myPilotWP[i].arrowsColour[1][0],myPilotWP[i].arrowsColour[1][1],myPilotWP[i].arrowsColour[1][2],myPilotWP[i].arrowsColour[1][3],myPilotWP[i].arrowsColour[1][4],myPilotWP[i].arrowsColour[1][5]);
 					
-					me.dynamicPageFontFunc(myPilotWP[i]);
-					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myPilotWP[i]["L" ~ x], "Simple_L" ~ x);
 					}
@@ -2632,7 +2579,7 @@ var canvas_MCDU_base = {
 				showRightArrow(me,-1, -1, -1, -1, -1, 1);
 				
 				me.standardFontSize();
-				
+				me.fontSizeLeft(small, small, small, small, small, normal);
 				me.colorLeft("wht", "wht", "wht", "wht", "grn", "blu");
 				me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
 				me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "blu");
@@ -2651,6 +2598,8 @@ var canvas_MCDU_base = {
             if (me.updateretard <= 0) {
 				if (pageFreezed[i] == nil) {
 					me["Simple_Title"].setText("POSITION MONITOR");
+					me["Simple_Title"].setFontSize(normal);
+					me["Simple_Title2"].setFontSize(normal);
 					me["Simple_Title2"].hide();
 					me["Simple_L6"].setText(" FREEZE");
 				
@@ -2668,7 +2617,7 @@ var canvas_MCDU_base = {
 					if (systems.ADIRS.Operating.aligned[0].getValue()) { # TODO real FMGC1 GPS data
 						me["Simple_R1"].setText(latlog);
 						me["Simple_R1"].setColor(GREEN);
-						me["Simple_L2S"].setText(sprintf("%16s","3IRS/GPS"));
+						me["Simple_L2S"].setText(sprintf("  %16s","3IRS/GPS"));
 					} else {
 						me["Simple_R1"].setText("----.--/-----.--");
 						me["Simple_R1"].setColor(WHITE);
@@ -2677,7 +2626,7 @@ var canvas_MCDU_base = {
 					if (systems.ADIRS.Operating.aligned[1].getValue()) { # TODO real FMGC2 GPS data
 						me["Simple_R2"].setText(latlog);
 						me["Simple_R2"].setColor(GREEN);
-						me["Simple_L3S"].setText(sprintf("%16s","3IRS/GPS"));
+						me["Simple_L3S"].setText(sprintf("  %16s","3IRS/GPS"));
 					} else {
 						me["Simple_R2"].setText("----.--/-----.--");
 						me["Simple_R2"].setColor(WHITE);
@@ -2697,15 +2646,17 @@ var canvas_MCDU_base = {
 					var Simple_row5 = ["Simple_L5","Simple_C5","Simple_R5"];
 					for ( var a=0; a<3; a+=1 ) {
 						if (systems.ADIRS.Operating.aligned[a].getValue()) {
-							me[Simple_row5[a]].setText(sprintf("%-8s",(systems.ADIRS.ADIRunits[a].mode == 2) ? "ATT" : "NAV 0.0"));
+							me[Simple_row5[a]].setText(sprintf("%-8s",(systems.ADIRS.ADIRunits[a].mode == 2) ? "ATT" : "NAV 0.1"));
 						} else {
 							me[Simple_row5[a]].setText(sprintf("%-8s",me.getIRSStatus(a)));
 						}
 					}			
 				} else {
 					me["Simple_Title"].setText("POSITION FROZEN AT      ");
+					me["Simple_Title"].setFontSize(small);
 					me["Simple_Title2"].setText(sprintf("%23s ",pageFreezed[i]));
 					me["Simple_Title2"].show();
+					me["Simple_Title2"].setFontSize(small);
 					me["Simple_L6"].setText(" UNFREEZE");
 				}
 			}
@@ -2715,7 +2666,13 @@ var canvas_MCDU_base = {
 			if (!pageSwitch[i].getBoolValue()) {
 				
 				me.defaultHideWithCenter();
-				me.standardFontSize();
+				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
+				me.fontSizeLeftS(0, 0, 0, small, small, small);
+				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
+				me.fontSizeRightS(small, small, small, small, small, small);
+				me.fontSizeCenter(normal, normal, normal, normal, normal, normal);
+				me.fontSizeCenterS(small, small, small, small, small, small);
+				
 				me.defaultPageNumbers();
 				showLeft(me,1, 1, 1, -1, -1, -1);
 				showLeftS(me,-1, 1, 1, 1, -1, -1);
@@ -2755,7 +2712,7 @@ var canvas_MCDU_base = {
 			var rows = ["Simple_L2S","Simple_L3S","Simple_L4S"];
 			var center = ["Simple_C1","Simple_C2","Simple_C3"];
 			for (var a = 0; a<3; a+=1) {
-				me[rows[a]].setText("  " ~ me.getIRSStatus(a,1));
+				me[rows[a]].setText(me.getIRSStatus(a,1));
 				if (systems.ADIRS.ADIRunits[a]._excessMotion) {
 					me[center[a]].show();
 				} else {
@@ -2764,8 +2721,8 @@ var canvas_MCDU_base = {
 			}				
 			
 			if (fmgc.FMGCInternal.phase == 7) { # DONE phase
-				if (fmgc.FMGCInternal.arrApt != nil and fmgc.flightPlanController.flightplans[2].departure_runway != nil) {
-					me["Simple_R1S"].setText(sprintf("DRIFT AT %7s     ",fmgc.FMGCInternal.arrApt ~ fmgc.flightPlanController.flightplans[2].departure_runway.id));
+				if (fmgc.FMGCInternal.arrApt != nil and fmgc.flightPlanController.flightplans[2].destination_runway != nil) {
+					me["Simple_R1S"].setText(sprintf("DRIFT AT %7s     ",fmgc.FMGCInternal.arrApt ~ fmgc.flightPlanController.flightplans[2].destination_runway.id));
 				}
 				me["Simple_R2S"].setText(sprintf("DRIFT %2.1fNM/H       ",0));
 				me["Simple_R3S"].setText(sprintf("DRIFT %2.1fNM/H       ",0));
@@ -2807,21 +2764,21 @@ var canvas_MCDU_base = {
 				me["Simple_L1S"].setText("GPS1 POSITION");
 				me["Simple_L2S"].setText("TTRK");
 				me["Simple_L3S"].setText("MERIT");
-				me["Simple_L3"].setText(sprintf("%3d",((rand() * 50) - 25) + 50) ~ "M");
+				me["Simple_L3"].setText(sprintf("%s",int(((rand() * 50) - 25) + 50)) ~ "M");
 				me["Simple_L4S"].setText("GPS2 POSITION");
 				me["Simple_L5S"].setText("TTRK");
 				me["Simple_L6S"].setText("MERIT");
-				me["Simple_L6"].setText(sprintf("%3d",((rand() * 50) - 25) + 50) ~ "M");
+				me["Simple_L6"].setText(sprintf("%s",int(((rand() * 50) - 25) + 50)) ~ "M");
 				me["Simple_C2S"].setText("UTC");
 				me["Simple_C3S"].setText("GPS ALT");
 				me["Simple_C5S"].setText("UTC");
 				me["Simple_C6S"].setText("GPS ALT");
 				me["Simple_R2S"].setText("GS");
 				me["Simple_R3S"].setText("MODE/SAT");
-				me["Simple_R3"].setText("NAV/" ~ sprintf("%s",int((rand() * 2) - 1) + 6) ~ "  ");
+				me["Simple_R3"].setText("NAV/" ~ sprintf("%s",int((rand() * 2) - 1) + 6) ~ " ");
 				me["Simple_R5S"].setText("GS");
 				me["Simple_R6S"].setText("MODE/SAT");
-				me["Simple_R6"].setText("NAV/" ~ sprintf("%s",int((rand() * 2) - 1) + 6) ~ "  ");
+				me["Simple_R6"].setText("NAV/" ~ sprintf("%s",int((rand() * 2) - 1) + 6) ~ " ");
 				pageSwitch[i].setBoolValue(1);
 			}
 			me["Simple_L1"].setText(me.getLatLogFormatted2("/position/"));
@@ -2851,11 +2808,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.fontLeft(default, default, default, default, 0, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, default, symbol, symbol, 0, default);
-				me.fontRightS(default, default, default, default, default, default);
-				
 				me.fontSizeLeft(0, 0, 0, 0, 0, normal);
 				me.fontSizeRight(0, 0, small, small, 0, normal);
 				
@@ -2896,7 +2848,6 @@ var canvas_MCDU_base = {
 			me["Simple_R6"].setText("ADF2 BFO ");
 			
 			if (fmgc.FMGCInternal.ADF1.freqSet) {
-				me["Simple_L5"].setFont(default); 
 				me["Simple_L5"].setFontSize(normal); 
 				me["Simple_L5"].setText(sprintf(" %s", fmgc.FMGCInternal.ADF1.mcdu));
 				me["Simple_L6"].show();
@@ -2908,7 +2859,6 @@ var canvas_MCDU_base = {
 					me["Simple_L6_Arrow"].show();
 				}
 			} else {
-				me["Simple_L5"].setFont(symbol); 
 				me["Simple_L5"].setFontSize(small); 
 				me["Simple_L5"].setText("[   ]/[    .]");
 				me["Simple_L6"].hide();
@@ -2927,7 +2877,6 @@ var canvas_MCDU_base = {
 			}
 			
 			if (fmgc.FMGCInternal.ADF2.freqSet) {
-				me["Simple_R5"].setFont(default); 
 				me["Simple_R5"].setFontSize(normal); 
 				me["Simple_R5"].setText(sprintf("%s ", fmgc.FMGCInternal.ADF2.mcdu));
 				me["Simple_R6"].show();
@@ -2938,8 +2887,7 @@ var canvas_MCDU_base = {
 				} else {
 					me["Simple_R6_Arrow"].show();
 				}
-			} else {
-				me["Simple_R5"].setFont(symbol); 
+			} else { 
 				me["Simple_R5"].setFontSize(small); 
 				me["Simple_R5"].setText("[    .]/[   ]");
 				me["Simple_R6"].hide();
@@ -3014,8 +2962,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, normal, 0);
 				
@@ -3058,13 +3004,13 @@ var canvas_MCDU_base = {
 			} else if (fmgc.FMGCInternal.crzSet and fmgc.FMGCInternal.crzTempSet) {
 				me["INITA_CruiseFLTemp"].hide();
 				me["Simple_L6"].setColor(BLUE);
-				me["Simple_L6"].setText(sprintf("%s", "FL" ~ fmgc.FMGCInternal.crzFl) ~ sprintf("/%sg", fmgc.FMGCInternal.crzTemp));
+				me["Simple_L6"].setText(sprintf("%s", "FL" ~ fmgc.FMGCInternal.crzFl) ~ sprintf("/%s°", fmgc.FMGCInternal.crzTemp));
 			} else if (fmgc.FMGCInternal.crzSet) {
 				me["INITA_CruiseFLTemp"].hide();
 				me["Simple_L6"].setColor(BLUE);
 				fmgc.FMGCInternal.crzTemp = 15 - (2 * fmgc.FMGCInternal.crzFl / 10);
 				fmgc.FMGCInternal.crzTempSet = 1;
-				me["Simple_L6"].setText(sprintf("%s", "FL" ~ fmgc.FMGCInternal.crzFl) ~ sprintf("/%sg", fmgc.FMGCInternal.crzTemp));
+				me["Simple_L6"].setText(sprintf("%s", "FL" ~ fmgc.FMGCInternal.crzFl) ~ sprintf("/%s°", fmgc.FMGCInternal.crzTemp));
 			} else {
 				me["INITA_CruiseFLTemp"].show();
 				me["Simple_L6"].setColor(AMBER);
@@ -3098,7 +3044,7 @@ var canvas_MCDU_base = {
 				me["INITA_FromTo"].show();
 				me["Simple_L1"].hide();
 				me["Simple_L2"].setColor(WHITE);
-				me["Simple_L2"].setText("----/----------");
+				me["Simple_L2"].setText("----/------");
 				showRight(me,-1, 1, 0, 0, 0, 0);
 				me["Simple_R2S"].show();
 				if (!Simbrief.SimbriefParser.inhibit) {
@@ -3125,7 +3071,7 @@ var canvas_MCDU_base = {
 			me["Simple_R6S"].setText("GND TEMP");
 			if (fmgc.FMGCInternal.phase == 0 and !fmgc.FMGCInternal.gndTempSet) {
 				fmgc.FMGCInternal.gndTemp = 15 - (2 * getprop("/position/gear-agl-ft") / 1000);
-				me["Simple_R6"].setText(sprintf("%.0fg", fmgc.FMGCInternal.gndTemp));
+				me["Simple_R6"].setText(sprintf("%.0f°", fmgc.FMGCInternal.gndTemp));
 				me["Simple_R6"].setFontSize(small); 
 			} else {
 				if (fmgc.FMGCInternal.gndTempSet) {
@@ -3133,10 +3079,10 @@ var canvas_MCDU_base = {
 				} else {
 					me["Simple_R6"].setFontSize(small); 
 				}
-				me["Simple_R6"].setText(sprintf("%.0fg", fmgc.FMGCInternal.gndTemp));
+				me["Simple_R6"].setText(sprintf("%.0f°", fmgc.FMGCInternal.gndTemp));
 			}
 			
-			me["Simple_L1S"].setText(" CO RTE");
+			me["Simple_L1S"].setText("CO RTE");
 			me["Simple_L2S"].setText("ALTN/CO RTE");
 			me["Simple_L3S"].setText("FLT NBR");
 			me["Simple_L5S"].setText("COST INDEX");
@@ -3184,13 +3130,8 @@ var canvas_MCDU_base = {
 				me["Simple_C4B"].hide();
 				showCenterS(me,1, 1, 1, 1, 1, -1);
 				
-				me.fontLeft(default, default, 0, 0, 0, default);
-				me.fontLeftS(default, default, 0, 0, 0, 0);
-				me.fontRight(default, default, 0, 0, 0, default);
-				me.fontRightS(default, default, 0, 0, 0, 0);
-				
-				me.fontSizeLeft(small, small, 0, 0, 0, small);
-				me.fontSizeRight(small, small, 0, 0, 0, normal);
+				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
+				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
 				me.fontSizeCenter(normal, small, small, small, small, 0);
 				
 				me.colorLeft("blu", "blu", "ack", "ack", "ack", "wht");
@@ -3201,12 +3142,19 @@ var canvas_MCDU_base = {
 				me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "blu");
 				me.colorCenter("grn", "ack", "grn", "grn", "grn", "grn");
 				me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
+			
+			
+				me["Simple_L1S"].setText("LAT");
+				me["Simple_L2S"].setText("LAT");
+				me["Simple_R1S"].setText("LONG");
+				me["Simple_R2S"].setText("LONG");
+				me["Simple_L6"].setText(" RETURN");
+				me["Simple_C1S"].setText("REFERENCE");
+				me["Simple_C2S"].setText("GPS POSITION");
 				
 				pageSwitch[i].setBoolValue(1);
 			}
 			
-			me["Simple_L1S"].setText("LAT");
-				me["Simple_R1S"].setText("LONG");
 			if (getprop("/FMGC/internal/align-ref-lat-edit")) {
 				me["IRSINIT_1"].show();
 				me["IRSINIT_2"].hide();
@@ -3227,7 +3175,7 @@ var canvas_MCDU_base = {
 				minutes_lat = sprintf("%.1f",abs((dms_lat - degrees_lat) * 60));
 				sign_lat = degrees_lat >= 0 ? "N" : "S";
 				lat_same = degrees_lat == degrees and minutes_lat == minutes and sign_lat == sign;
-				me["Simple_L1"].setText(abs(sprintf("%.0f", degrees)) ~ "g" ~ sprintf("%.1f", minutes) ~ " " ~ sign);
+				me["Simple_L1"].setText(abs(sprintf("%.0f", degrees)) ~ "°" ~ sprintf("%.1f", minutes) ~ sign);
 				
 				degrees = getprop("/FMGC/internal/align-ref-long-degrees");
 				minutes = getprop("/FMGC/internal/align-ref-long-minutes");
@@ -3237,7 +3185,7 @@ var canvas_MCDU_base = {
 				minutes_long = sprintf("%.1f",abs((dms_long - degrees_long) * 60));
 				sign_long = degrees_long >= 0 ? "E" : "W";
 				long_same = degrees_long == degrees and minutes_long == minutes and sign_long == sign;
-				me["Simple_R1"].setText(abs(sprintf("%.0f", degrees)) ~ "g" ~ sprintf("%.1f", minutes) ~ " " ~ sign);
+				me["Simple_R1"].setText(abs(sprintf("%.0f", degrees)) ~ "°" ~ sprintf("%.1f", minutes) ~ sign);
 				
 				if (lat_same and long_same) {
 					me["Simple_C1"].setText(getprop("/FMGC/flightplan[2]/wp[0]/id"));
@@ -3257,15 +3205,36 @@ var canvas_MCDU_base = {
 			degrees = int(dms);
 			minutes = sprintf("%.1f",abs((dms - degrees) * 60));
 			sign = degrees >= 0 ? "N" : "S";
-			me["Simple_L2"].setText(abs(degrees) ~ "°" ~ minutes ~ " " ~ sign);
 			dms2 = getprop("/position/longitude-deg");
 			degrees2 = int(dms2);
 			minutes2 = sprintf("%.1f",abs((dms2 - degrees2) * 60));
 			sign2 = degrees2 >= 0 ? "E" : "W";
+			
+			# GPS POS
+			me["Simple_L2"].setText(abs(degrees) ~ "°" ~ minutes ~ sign);
 			me["Simple_R2"].setText(abs(degrees2) ~ "°" ~ minutes2 ~ " " ~ sign2);
-			me.doIRSFunc(0,degrees,minutes,sign,degrees2,minutes2,sign2);
-			me.doIRSFunc(1,degrees,minutes,sign,degrees2,minutes2,sign2);
-			me.doIRSFunc(2,degrees,minutes,sign,degrees2,minutes2,sign2);
+			
+			# IRS POS
+			for (var ADR = 0; ADR < 3; ADR += 1) {
+				if (systems.ADIRS.ADIRunits[ADR].operative and getprop("/FMGC/internal/align" ~ (ADR + 1) ~ "-done")) {
+					me["Simple_C" ~ (ADR + 3)].setText(abs(degrees) ~ "°" ~ minutes ~ sign ~ "/" ~ abs(degrees2) ~ "°" ~ minutes2 ~ sign2);
+					me["Simple_C" ~ (ADR + 3)].setColor(GREEN);
+				} else {
+					me["Simple_C" ~ (ADR + 3)].setText("--°---.--/---°--.--");
+					me["Simple_C" ~ (ADR + 3)].setColor(WHITE);
+				}
+				
+				
+				if (systems.ADIRS.Operating.aligned[ADR].getValue()) {
+					if (systems.ADIRS.ADIRunits[ADR].mode == 2) {
+						me["Simple_C" ~ (ADR + 3) ~ "S"].setText("IRS" ~ (ADR + 1) ~ " IN ATT");
+					} else {
+						me["Simple_C" ~ (ADR + 3) ~ "S"].setText("IRS" ~ (ADR + 1) ~ " ALIGNED ON GPS");
+					}
+				} else {
+					me["Simple_C" ~ (ADR + 3) ~ "S"].setText("IRS" ~ (ADR + 1) ~ " ALIGNING ON GPS");
+				}
+			}
 			
 			if (align_set.getValue() == 1) {
 				me["Simple_R6"].setText("CONFIRM ALIGN ");
@@ -3278,11 +3247,6 @@ var canvas_MCDU_base = {
 				showRightArrow(me,0, 0, 0, 0, 0, 1);
 			}
 			
-			me["Simple_L2S"].setText("LAT");
-			me["Simple_L6"].setText(" RETURN");
-			me["Simple_R2S"].setText("LONG");
-			me["Simple_C1S"].setText("REFERENCE");
-			me["Simple_C2S"].setText("GPS POSITION");
 		} else if (page == "ROUTESELECTION") {
 			if (!pageSwitch[i].getBoolValue()) {
 				me.defaultHide();
@@ -3351,7 +3315,16 @@ var canvas_MCDU_base = {
 				me["WIND"].hide();
 				me["PROG"].hide();
 				me["PERFTO"].hide();
-				me["arrowsDepArr"].hide();
+				me["arrowsDepArr"].show();
+				me["arrow1L"].hide();
+				me["arrow2L"].hide();
+				me["arrow3L"].hide();
+				me["arrow4L"].hide();
+				me["arrow5L"].hide();
+				me["arrow1R"].hide();
+				me["arrow2R"].hide();
+				me["arrow4R"].hide();
+				me["arrow5R"].hide();
 				me["PERFAPPR"].hide();
 				me["PERFGA"].hide();
 				me["Simple_Title"].show();
@@ -3370,9 +3343,7 @@ var canvas_MCDU_base = {
 				showCenterS(me,-1, -1, -1, -1, -1, -1);
 				showRight(me,-1, 1, 1, 1, 1, 1);
 				showRightS(me,1, 1, 1, 1, 1, 1);
-				showRightArrow(me,-1, -1, 1, -1, -1, -1);
-				
-				me.standardFont();
+				showRightArrow(me,-1, -1, -1, -1, -1, -1);
 				
 				me.fontSizeLeft(small, small, small, small, small, small);
 				me.fontSizeCenter(normal, small, small, small, small, small);
@@ -3391,14 +3362,15 @@ var canvas_MCDU_base = {
 				pageSwitch[i].setBoolValue(1);
 			}
 					
-			me["Simple_L1S"].setText("TAXI");
 			if (acconfig_weight_kgs.getValue() == 1) {
 				me["Simple_L1"].setText(sprintf("%2.1f", fmgc.FMGCInternal.taxiFuel * LBS2KGS));
 			} else {
 				me["Simple_L1"].setText(sprintf("%2.1f", fmgc.FMGCInternal.taxiFuel));
 			}
+			
+			me["Simple_L1S"].setText("TAXI");
 			me["Simple_L2S"].setText("TRIP/TIME");
-			me["Simple_L3S"].setText("RTE RSV/PCT");
+			me["Simple_L3S"].setText("RTE RSV/%");
 			me["Simple_L4S"].setText("ALTN/TIME");
 			me["Simple_L5S"].setText("FINAL/TIME");
 			me["Simple_L6S"].setText("MIN DEST FOB");
@@ -3436,12 +3408,12 @@ var canvas_MCDU_base = {
 					me["Simple_R3"].show(); 
 					me["Simple_R3S"].setText("FUEL");
 					me["Simple_R3"].setText("PLANNING ");
-					me["Simple_R3_Arrow"].show();
-					me["Simple_R3_Arrow"].setColor(AMBER);
+					me["arrow3R"].show();
+					me["arrow3R"].setColor(AMBER);
 				} else {
 					me["Simple_R3S"].hide();
 					me["Simple_R3"].hide(); 
-					me["Simple_R3_Arrow"].hide();
+					me["arrow3R"].hide();
 				}
 				me["Simple_C4B"].hide();
 				me["Simple_R4"].setText("---.-/---.-");
@@ -3473,8 +3445,7 @@ var canvas_MCDU_base = {
 					me["Simple_R3"].show(); 
 					me["Simple_R3S"].setText("FUEL");
 					me["Simple_R3"].setText("PLANNING ");
-					me["Simple_R3_Arrow"].show();
-					me["Simple_R3_Arrow"].setColor(GREEN);
+					me["arrow3R"].hide();
 					me["Simple_C4B"].hide();
 					me["Simple_R4"].setText("---.-/---.-");
 					me["Simple_R6"].setText("---.-/----");
@@ -3503,8 +3474,8 @@ var canvas_MCDU_base = {
 						me["Simple_R3"].show(); 
 						me["Simple_R3S"].setText("BLOCK");
 						me["Simple_R3"].setText("CONFIRM ");
-						me["Simple_R3_Arrow"].show();
-						me["Simple_R3_Arrow"].setColor(AMBER);
+						me["arrow3R"].show();
+						me["arrow3R"].setColor(AMBER);
 						me["Simple_C4B"].show();
 						if (num(fmgc.FMGCInternal.tow) >= 100.0) {
 							if (acconfig_weight_kgs.getValue() == 1) {
@@ -3558,7 +3529,7 @@ var canvas_MCDU_base = {
 							}
 							me["Simple_R3S"].hide();
 							me["Simple_R3"].hide(); 
-							me["Simple_R3_Arrow"].hide();
+							me["arrow3R"].hide();
 							me["Simple_C4B"].show();
 							if (num(fmgc.FMGCInternal.tow) >= 100.0) {
 								if (acconfig_weight_kgs.getValue() == 1) {
@@ -3690,7 +3661,7 @@ var canvas_MCDU_base = {
 							}
 							me["Simple_R3S"].hide();
 							me["Simple_R3"].hide(); 
-							me["Simple_R3_Arrow"].hide();
+							me["arrow3R"].hide();
 							me["Simple_C4B"].hide();
 							
 							if (acconfig_weight_kgs.getValue() == 1) {
@@ -3818,8 +3789,6 @@ var canvas_MCDU_base = {
 				showRightS(me,1, -1, 1, 1, 1, 1);
 				showRightArrow(me,-1, -1, -1, -1, -1, -1);
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, small, small, small, small);
 				me.fontSizeCenter(small, small, normal, small, small, small);
 				me.fontSizeRight(small, small, normal, small, small, small);
@@ -3849,9 +3818,20 @@ var canvas_MCDU_base = {
 				me["Simple_L2"].setText(fmgc.FMGCInternal.altAirport);
 			}
 			
+			me["Simple_L1S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_L3S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_L4S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_L5S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_L6S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_C1S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R1S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R3S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R4S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R5S"].setFont("HoneywellMCDUSmall.ttf");
+			me["Simple_R6S"].setFont("HoneywellMCDUSmall.ttf");
+			
 			me["Simple_L1S"].setText("AT");
-			me["Simple_L2S"].setText("X");
-			me["Simple_L3S"].setText("RTE RSV/PCT");
+			me["Simple_L3S"].setText("RTE RSV/%");
 			me["Simple_L4S"].setText("ALTN /TIME");
 			me["Simple_L5S"].setText("FINAL/TIME");
 			me["Simple_L6S"].setText("MIN DEST FOB");
@@ -3863,7 +3843,6 @@ var canvas_MCDU_base = {
 			me["Simple_R1"].setText("---.-");
 			me["Simple_R2"].setText("---.-");
 			me["Simple_R1S"].setText("EFOB");
-			me["Simple_R2S"].setText("X");
 			me["Simple_R4S"].setText("FOB      ");
 			me["Simple_R5S"].setText("   GW/   CG");
 			me["Simple_R6S"].setText("EXTRA/TIME");
@@ -4151,11 +4130,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3B"].hide();
 				me["Simple_C4B"].hide();
 				showCenterS(me,1, -1, -1, -1, -1, 1);
-				
-				me.fontLeft(default, default, symbol, default, default, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, symbol, symbol, symbol, default, default);
-				me.fontRightS(default, default, default, default, default, default);
 				me.fontSizeLeft(normal, normal, small, small, normal, small);
 				me.fontSizeLeftS(small, small, small, small, small, small);
 				me.fontSizeRight(normal, small, small, small, normal, small);
@@ -4176,7 +4150,6 @@ var canvas_MCDU_base = {
 					showLeftS(me,0, 0, -1, 0, 0, 0);
 					showCenterS(me,0, 0, 1, 0, 0, 0);
 					#showRight(me,0, 0, 1, 0, 0, 0); #Add when implement cruise phase
-					me.fontLeft(0, 0, default, 0, 0, 0);
 				} else if (page == "PROGDES" or page == "PROGAPPR") {
 					showCenter(me,0, 1, 0, 0, 0, 0);
 					showRight(me,0, 1, 0, 0, 0, 0);		
@@ -4242,21 +4215,19 @@ var canvas_MCDU_base = {
 			}
 			
 			if (mcdu.bearingDistances[i].displayID != nil) {
-				me["Simple_R4"].setFont(default);
 				me["Simple_R4"].setFontSize(normal);
 				me["Simple_R4"].setText(mcdu.bearingDistances[i].displayID);
 			} else {
-				me["Simple_R4"].setFont(symbol);
 				me["Simple_R4"].setFontSize(small);
 				me["Simple_R4"].setText("[    ]");
 			}
 			
 			if (mcdu.bearingDistances[i].selectedPoint != nil) {
 				me["Simple_L4"].setColor(GREEN);
-				me["Simple_L4"].setText(sprintf("%3.0fg /%4.1f",mcdu.bearingDistances[i].bearing,mcdu.bearingDistances[i].distance));
+				me["Simple_L4"].setText(sprintf("%3.0f° /%4.1f",mcdu.bearingDistances[i].bearing,mcdu.bearingDistances[i].distance));
 			} else {
 				me["Simple_L4"].setColor(WHITE);
-				me["Simple_L4"].setText(" ---g /----.-");
+				me["Simple_L4"].setText(" ---° /----.-");
 			}
 			
 			me["Simple_R5"].setText("GPS PRIMARY");
@@ -4312,11 +4283,6 @@ var canvas_MCDU_base = {
 				me["Simple_C4B"].hide();
 				showCenterS(me,1, 1, 1, -1, -1, -1);
 				
-				me.fontLeft(default, default, default, default, default, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, symbol, 0, 0, default, default);
-				me.fontRightS(default, default, default, default, default, default);
-				
 				me.fontSizeLeft(normal, normal, normal, normal, 0, normal);
 				me.fontSizeRight(normal, small, 0, 0, 0, normal);
 				me.fontSizeCenter(small, small, small, 0, 0, 0);
@@ -4420,7 +4386,6 @@ var canvas_MCDU_base = {
 			}
 			
 			if (flapTHSSet.getValue() == 1) {
-				me["Simple_R3"].setFont(default); 
 				me["Simple_R3"].setFontSize(normal);
 				if (THSTO.getValue() >= 0) {
 					me["Simple_R3"].setText(sprintf("%s", flapTO.getValue()) ~ sprintf("/UP%2.1f", THSTO.getValue()));
@@ -4428,16 +4393,13 @@ var canvas_MCDU_base = {
 					me["Simple_R3"].setText(sprintf("%s", flapTO.getValue()) ~ sprintf("/DN%2.1f", -1 * THSTO.getValue()));
 				}
 			} else {
-				me["Simple_R3"].setFont(symbol); 
 				me["Simple_R3"].setFontSize(small); 
 				me["Simple_R3"].setText("[  ]/[    ]");
 			}
 			if (flexSet.getValue() == 1) {
-				me["Simple_R4"].setFont(default); 
 				me["Simple_R4"].setFontSize(normal); 
 				me["Simple_R4"].setText(sprintf("%3.0f", flex.getValue()));
 			} else {
-				me["Simple_R4"].setFont(symbol); 
 				me["Simple_R4"].setFontSize(small); 
 				me["Simple_R4"].setText("[   ]");
 			}
@@ -4482,11 +4444,6 @@ var canvas_MCDU_base = {
 				me["Simple_C4B"].hide();
 				showCenterS(me,-1, -1, 1, -1, 1, -1);
 				
-				me.fontLeft(default, default, default, symbol, default, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, default, default, default, default, default);
-				me.fontRightS(default, default, default, default, default, default);
-				
 				me.fontSizeLeft(normal, normal, small, small, normal, normal);
 				me.fontSizeLeftS(0, 0, 0, 0, small, 0);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -4568,7 +4525,6 @@ var canvas_MCDU_base = {
 			if (managedSpeed.getValue() == 1) {
 				me["Simple_L1"].setText("MANAGED");
 				me["Simple_L4"].setText(" [    ]");
-				me.fontLeft(0, 0, 0, symbol, 0, 0);
 			} else {
 				me["Simple_L1"].setText("SELECTED");
 				if (fmgc.Input.ktsMach.getValue()) {
@@ -4576,7 +4532,6 @@ var canvas_MCDU_base = {
 				} else {
 					me["Simple_L4"].setText(sprintf(" %s", int(getprop("/it-autoflight/input/kts"))));
 				}
-				me.fontLeft(0, 0, 0, default, 0, 0);
 			}		
 			
 			me["Simple_L2S"].setText(" CI");
@@ -4635,11 +4590,6 @@ var canvas_MCDU_base = {
 				me["Simple_C4B"].hide();
 				showCenterS(me,1, -1, -1, -1, -1, -1);
 				
-				me.fontLeft(default, default, default, symbol, default, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, default, default, default, default, default);
-				me.fontRightS(default, default, default, default, default, default);
-				
 				me.fontSizeLeft(normal, normal, small, small, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, small, normal);
 				me.fontSizeCenterS(small, small, small, small, small, small);
@@ -4707,7 +4657,6 @@ var canvas_MCDU_base = {
 			if (managedSpeed.getValue() == 1) {
 				me["Simple_L1"].setText("MANAGED");
 				me["Simple_L4"].setText(" [    ]");
-				me.fontLeft(0, 0, 0, symbol, 0, 0);
 			} else {
 				me["Simple_L1"].setText("SELECTED");
 				if (fmgc.Input.ktsMach.getValue()) {
@@ -4715,7 +4664,6 @@ var canvas_MCDU_base = {
 				} else {
 					me["Simple_L4"].setText(sprintf(" %s", int(getprop("/it-autoflight/input/kts"))));
 				}
-				me.fontLeft(0, 0, 0, default, 0, 0);
 			}
 			
 			if (fmgc.FMGCInternal.costIndexSet) {
@@ -4771,11 +4719,6 @@ var canvas_MCDU_base = {
 				me["Simple_C4B"].hide();
 				showCenterS(me,1, -1, 1, -1, -1, -1);
 				
-				me.fontLeft(default, default, default, symbol, default, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, default, default, default, default, default);
-				me.fontRightS(default, default, default, default, default, default);
-				
 				me.fontSizeLeft(normal, normal, small, small, small, normal);
 				me.fontSizeLeftS(0, 0, 0, 0, small, 0);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -4854,7 +4797,6 @@ var canvas_MCDU_base = {
 			if (managedSpeed.getValue() == 1) {
 				me["Simple_L1"].setText("MANAGED");
 				me["Simple_L4"].setText(" [    ]");
-				me.fontLeft(0, 0, 0, symbol, 0, 0);
 			} else {
 				me["Simple_L1"].setText("SELECTED");
 				if (fmgc.Input.ktsMach.getValue()) {
@@ -4862,7 +4804,6 @@ var canvas_MCDU_base = {
 				} else {
 					me["Simple_L4"].setText(sprintf(" %3.0f", getprop("/it-autoflight/input/kts")));
 				}
-				me.fontLeft(0, 0, 0, default, 0, 0);
 			}
 			
 			if (fmgc.FMGCInternal.costIndexSet) {
@@ -4927,11 +4868,6 @@ var canvas_MCDU_base = {
 				me["Simple_C4B"].hide();
 				showCenterS(me,1, 1, 1, -1, 1, -1);
 				
-				me.fontLeft(symbol, default, default, default, symbol, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, symbol, symbol, default, default, default);
-				me.fontRightS(default, default, default, default, default, default);
-				
 				me.fontSizeLeft(small, small, small, small, small, normal);
 				me.fontSizeRight(normal, small, small, small, normal, normal);
 				me.fontSizeCenter(small, small, small, 0, small, 0);
@@ -4962,10 +4898,8 @@ var canvas_MCDU_base = {
 				} else {
 					me["Simple_L1"].setText(sprintf("%4.0f", dest_qnh.getValue()));
 				}
-				me.fontLeft(default, 0, 0, 0, 0, 0);
 			} else {
 				me["Simple_L1"].setText("[    ]  ");
-				me.fontLeft(symbol, 0, 0, 0, 0, 0);
 			}
 			
 			me["Simple_L2S"].setText("TEMP");
@@ -5013,26 +4947,21 @@ var canvas_MCDU_base = {
 			me["Simple_R2S"].setText("BARO");
 			if (getprop("/FMGC/internal/baro") != 99999) {
 				me["Simple_R2"].setText(sprintf("%.0f", getprop("/FMGC/internal/baro")));
-				me.fontRight(0, default, 0, 0, 0, 0);
 				me.fontSizeRight(0, normal, 0, 0, 0, 0);
 			} else {
 				me["Simple_R2"].setText(" [    ]");
-				me.fontRight(0, symbol, 0, 0, 0, 0);
 				me.fontSizeRight(0, small, 0, 0, 0, 0);
 			}
 			
 			me["Simple_R3S"].setText("RADIO");
 			if (getprop("/FMGC/internal/radio") != 99999) {
 				me["Simple_R3"].setText(sprintf("%.0f", getprop("/FMGC/internal/radio")));
-				me.fontRight(0, 0, default, 0, 0, 0);
 				me.fontSizeRight(0, 0, normal, 0, 0, 0);
 			} else if (fmgc.FMGCInternal.radioNo) {
 				me["Simple_R3"].setText("NO");
-				me.fontRight(0, 0, default, 0, 0, 0);
 				me.fontSizeRight(0, 0, normal, 0, 0, 0);
 			} else {
 				me["Simple_R3"].setText(" [    ]");
-				me.fontRight(0, 0, symbol, 0, 0, 0);
 				me.fontSizeRight(0, 0, small, 0, 0, 0);
 			}
 			
@@ -5061,7 +4990,6 @@ var canvas_MCDU_base = {
 				me["Simple_C3"].setText(sprintf("%3.0f", fmgc.FMGCInternal.clean_appr));
 				me["Simple_C5"].setText(sprintf("%3.0f", fmgc.FMGCInternal.vls_appr));
 				me["Simple_L5"].setText(sprintf("%3.0f", fmgc.FMGCInternal.vapp_appr));
-				me.fontLeft(0, 0, 0, 0, default, 0);
 				if (fmgc.FMGCInternal.vappSpeedSet) {
 					me.fontSizeLeft(0, 0, 0, 0, normal, 0);
 				} else {
@@ -5074,11 +5002,9 @@ var canvas_MCDU_base = {
 				me["Simple_C5"].setText(" ---");
 				if (fmgc.FMGCInternal.vappSpeedSet) {
 					me["Simple_L5"].setText(sprintf("%3.0f", fmgc.FMGCInternal.vapp_appr));
-					me.fontLeft(0, 0, 0, 0, default, 0);
 					me.fontSizeLeft(0, 0, 0, 0, normal, 0);
 				} else {
 					me["Simple_L5"].setText("[    ]  ");
-					me.fontLeft(0, 0, 0, 0, symbol, 0);
 					me.fontSizeLeft(0, 0, 0, 0, small, 0);
 				}
 			}
@@ -5109,11 +5035,6 @@ var canvas_MCDU_base = {
 				me["Simple_C4B"].hide();
 				showCenterS(me,1, 1, 1, -1, -1, -1);
 				
-				me.fontLeft(default, default, default, default, default, default);
-				me.fontLeftS(default, default, default, default, default, default);
-				me.fontRight(default, symbol, 0, 0, default, default);
-				me.fontRightS(default, default, default, default, default, default);
-				
 				me.fontSizeLeft(normal, normal, normal, normal, 0, normal);
 				me.fontSizeRight(normal, small, 0, 0, 0, normal);
 				me.fontSizeCenter(small, small, small, 0, 0, 0);
@@ -5179,9 +5100,8 @@ var canvas_MCDU_base = {
 				
 				me.standardHideExcess();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
+				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
 				
 				me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
 				me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
@@ -5251,8 +5171,6 @@ var canvas_MCDU_base = {
 					me.dynamicPageArrowFunc(myWind[i]);
 					me.colorLeftArrow(myWind[i].arrowsColour[0][0],myWind[i].arrowsColour[0][1],myWind[i].arrowsColour[0][2],myWind[i].arrowsColour[0][3],myWind[i].arrowsColour[0][4],myWind[i].arrowsColour[0][5]);
 					
-					me.dynamicPageFontFunc(myWind[i]);
-					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myWind[i]["L" ~ x], "Simple_L" ~ x);
 					}
@@ -5300,6 +5218,7 @@ var canvas_MCDU_base = {
 					if (myLatRev[i].subtitle[0] != nil) {
 						me["Simple_Center"].show();
 						me["Simple_C1S"].setText(sprintf("%s", myLatRev[i].subtitle[0] ~ "/" ~ myLatRev[i].subtitle[1]));
+						me["Simple_C1S"].setColor(fmgc.flightPlanController.temporaryFlag[i] ? YELLOW : GREEN);
 						me["Simple_C1S"].show();
 						me["Simple_C1"].hide();
 						me["Simple_C2"].hide();
@@ -5319,8 +5238,6 @@ var canvas_MCDU_base = {
 					me.dynamicPageArrowFunc(myLatRev[i]);
 					me.colorLeftArrow(myLatRev[i].arrowsColour[0][0],myLatRev[i].arrowsColour[0][1],myLatRev[i].arrowsColour[0][2],myLatRev[i].arrowsColour[0][3],myLatRev[i].arrowsColour[0][4],myLatRev[i].arrowsColour[0][5]);
 					
-					me.dynamicPageFontFunc(myLatRev[i]);
-					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myLatRev[i]["L" ~ x], "Simple_L" ~ x);
 					}
@@ -5376,9 +5293,6 @@ var canvas_MCDU_base = {
 					me.colorLeftArrow(myVertRev[i].arrowsColour[0][0],myVertRev[i].arrowsColour[0][1],myVertRev[i].arrowsColour[0][2],myVertRev[i].arrowsColour[0][3],myVertRev[i].arrowsColour[0][4],myVertRev[i].arrowsColour[0][5]);
 					me.colorRightArrow(myVertRev[i].arrowsColour[1][0],myVertRev[i].arrowsColour[1][1],myVertRev[i].arrowsColour[1][2],myVertRev[i].arrowsColour[1][3],myVertRev[i].arrowsColour[1][4],myVertRev[i].arrowsColour[1][5]);
 					
-					
-					me.dynamicPageFontFunc(myVertRev[i]);
-					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myVertRev[i]["L" ~ x], "Simple_L" ~ x);
 					}
@@ -5422,7 +5336,6 @@ var canvas_MCDU_base = {
 					me["Simple_Title"].setText(sprintf("%s", myDeparture[i].title[0] ~ myDeparture[i].title[1] ~ myDeparture[i].title[2]));
 					
 					me.dynamicPageArrowFuncDepArr(myDeparture[i]);
-					me.dynamicPageFontFunc(myDeparture[i]);
 					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myDeparture[i]["L" ~ x], "Simple_L" ~ x);
@@ -5470,8 +5383,6 @@ var canvas_MCDU_base = {
 					me.dynamicPageArrowFunc(myDuplicate[i]);
 					me.colorLeftArrow(myDuplicate[i].arrowsColour[0][0],myDuplicate[i].arrowsColour[0][1],myDuplicate[i].arrowsColour[0][2],myDuplicate[i].arrowsColour[0][3],myDuplicate[i].arrowsColour[0][4],myDuplicate[i].arrowsColour[0][5]);
 					
-					me.dynamicPageFontFunc(myDuplicate[i]);
-					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myDuplicate[i]["L" ~ x], "Simple_L" ~ x);
 					}
@@ -5525,7 +5436,6 @@ var canvas_MCDU_base = {
 					me["Simple_Title"].setText(sprintf("%s", myArrival[i].title[0] ~ myArrival[i].title[1] ~ myArrival[i].title[2]));
 					
 					me.dynamicPageArrowFuncDepArr(myArrival[i]);
-					me.dynamicPageFontFunc(myArrival[i]);
 					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myArrival[i]["L" ~ x], "Simple_L" ~ x);
@@ -5563,8 +5473,6 @@ var canvas_MCDU_base = {
 				
 				me.standardHideExcess();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeCenter(normal, normal, normal, small, normal, normal); # if updating watch out - this is needed
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -5578,7 +5486,6 @@ var canvas_MCDU_base = {
 					me["Simple_Title"].setColor(getprop("/MCDUC/colors/" ~ myHold[i].titleColour ~ "/r"), getprop("/MCDUC/colors/" ~ myHold[i].titleColour ~ "/g"), getprop("/MCDUC/colors/" ~ myHold[i].titleColour ~ "/b"));
 					
 					me.dynamicPageArrowFuncDepArr(myHold[i]);
-					me.dynamicPageFontFunc(myHold[i]);
 					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myHold[i]["L" ~ x], "Simple_L" ~ x);
@@ -5616,8 +5523,6 @@ var canvas_MCDU_base = {
 				
 				me.standardHideExcess();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeCenter(normal, normal, normal, small, normal, normal); # if updating watch out - this is needed
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -5631,7 +5536,6 @@ var canvas_MCDU_base = {
 					me["Simple_Title"].setColor(getprop("/MCDUC/colors/" ~ myAirways[i].titleColour ~ "/r"), getprop("/MCDUC/colors/" ~ myAirways[i].titleColour ~ "/g"), getprop("/MCDUC/colors/" ~ myAirways[i].titleColour ~ "/b"));
 					
 					me.dynamicPageArrowFuncDepArr(myAirways[i]);
-					me.dynamicPageFontFunc(myAirways[i]);
 					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myAirways[i]["L" ~ x], "Simple_L" ~ x);
@@ -5680,8 +5584,6 @@ var canvas_MCDU_base = {
 				
 				me.standardHideExcess();
 				
-				me.standardFont();
-				
 				me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
 				me.fontSizeCenter(normal, normal, normal, normal, normal, normal);
 				me.fontSizeRight(normal, normal, normal, normal, normal, normal);
@@ -5695,9 +5597,6 @@ var canvas_MCDU_base = {
 					me["Simple_L6_Arrow"].setColor(getprop("/MCDUC/colors/" ~ myClosestAirport[i].arrowsColour[0][5] ~ "/r"), getprop("/MCDUC/colors/" ~ myClosestAirport[i].arrowsColour[0][5] ~ "/g"), getprop("/MCDUC/colors/" ~ myClosestAirport[i].arrowsColour[0][5] ~ "/b"));
 					me["Simple_R6_Arrow"].setColor(getprop("/MCDUC/colors/" ~ myClosestAirport[i].arrowsColour[1][5] ~ "/r"), getprop("/MCDUC/colors/" ~ myClosestAirport[i].arrowsColour[1][5] ~ "/g"), getprop("/MCDUC/colors/" ~ myClosestAirport[i].arrowsColour[1][5] ~ "/b"));
 					
-					
-					me.dynamicPageFontFunc(myClosestAirport[i]);
-					
 					for (var x = 1; x < 7; x = x + 1) {
 						me.dynamicPageFunc(myClosestAirport[i]["L" ~ x], "Simple_L" ~ x);
 					}
@@ -5758,7 +5657,6 @@ var canvas_MCDU_base = {
 					me["Simple_Title"].setColor(getprop("/MCDUC/colors/" ~ myDirTo[i].titleColour ~ "/r"), getprop("/MCDUC/colors/" ~ myDirTo[i].titleColour ~ "/g"), getprop("/MCDUC/colors/" ~ myDirTo[i].titleColour ~ "/b"));
 					
 					me.dynamicPageArrowFuncDepArr(myDirTo[i]);
-					me.dynamicPageFontFunc(myDirTo[i]);
 					
 					if (fmgc.flightPlanController.temporaryFlag[i] and mcdu.dirToFlag) {
 						me["DIRTO_TMPY_group"].show();
@@ -5963,127 +5861,6 @@ var canvas_MCDU_base = {
 			me["Simple_C6S"].setColor(getprop("/MCDUC/colors/" ~ f ~ "/r"), getprop("/MCDUC/colors/" ~ f ~ "/g"), getprop("/MCDUC/colors/" ~ f ~ "/b"));
 		}
 	},
-	# 0 = ignore
-	fontLeft: func (a, b, c, d, e, f) {
-		if (a != 0) {
-			me["Simple_L1"].setFont(a); 
-		}
-		if (b != 0) {
-			me["Simple_L2"].setFont(b); 
-		}
-		if (c != 0) {
-			me["Simple_L3"].setFont(c); 
-		}
-		if (d != 0) {
-			me["Simple_L4"].setFont(d); 
-		}
-		if (e != 0) {
-			me["Simple_L5"].setFont(e); 
-		}
-		if (f != 0) {
-			me["Simple_L6"].setFont(f); 
-		}
-	},
-	fontLeftS: func (a, b, c, d, e, f) {
-		if (a != 0) {
-			me["Simple_L1S"].setFont(a); 
-		}
-		if (b != 0) {
-			me["Simple_L2S"].setFont(b); 
-		}
-		if (c != 0) {
-			me["Simple_L3S"].setFont(c); 
-		}
-		if (d != 0) {
-			me["Simple_L4S"].setFont(d); 
-		}
-		if (e != 0) {
-			me["Simple_L5S"].setFont(e); 
-		}
-		if (f != 0) {
-			me["Simple_L6S"].setFont(f); 
-		}
-	},
-	fontCenter: func (a, b, c, d, e, f) {
-		if (a != 0) {
-			me["Simple_C1"].setFont(a); 
-		}
-		if (b != 0) {
-			me["Simple_C2"].setFont(b); 
-		}
-		if (c != 0) {
-			me["Simple_C3"].setFont(c); 
-		}
-		if (d != 0) {
-			me["Simple_C4"].setFont(d); 
-		}
-		if (e != 0) {
-			me["Simple_C5"].setFont(e); 
-		}
-		if (f != 0) {
-			me["Simple_C6"].setFont(f); 
-		}
-	},
-	fontCenterS: func (a, b, c, d, e, f) {
-		if (a != 0) {
-			me["Simple_C1S"].setFont(a); 
-		}
-		if (b != 0) {
-			me["Simple_C2S"].setFont(b); 
-		}
-		if (c != 0) {
-			me["Simple_C3S"].setFont(c); 
-		}
-		if (d != 0) {
-			me["Simple_C4S"].setFont(d); 
-		}
-		if (e != 0) {
-			me["Simple_C5S"].setFont(e); 
-		}
-		if (f != 0) {
-			me["Simple_C6S"].setFont(f); 
-		}
-	},
-	fontRight: func (a, b, c, d, e, f) {
-		if (a != 0) {
-			me["Simple_R1"].setFont(a); 
-		}
-		if (b != 0) {
-			me["Simple_R2"].setFont(b); 
-		}
-		if (c != 0) {
-			me["Simple_R3"].setFont(c); 
-		}
-		if (d != 0) {
-			me["Simple_R4"].setFont(d); 
-		}
-		if (e != 0) {
-			me["Simple_R5"].setFont(e); 
-		}
-		if (f != 0) {
-			me["Simple_R6"].setFont(f); 
-		}
-	},
-	fontRightS: func (a, b, c, d, e, f) {
-		if (a != 0) {
-			me["Simple_R1S"].setFont(a); 
-		}
-		if (b != 0) {
-			me["Simple_R2S"].setFont(b); 
-		}
-		if (c != 0) {
-			me["Simple_R3S"].setFont(c); 
-		}
-		if (d != 0) {
-			me["Simple_R4S"].setFont(d); 
-		}
-		if (e != 0) {
-			me["Simple_R5S"].setFont(e); 
-		}
-		if (f != 0) {
-			me["Simple_R6S"].setFont(f); 
-		}
-	},
 	fontSizeLeft: func (a, b, c, d, e, f) {
 		if (a != 0) {
 			me["Simple_L1"].setFontSize(a); 
@@ -6258,24 +6035,6 @@ var canvas_MCDU_base = {
 			}
 		}
 	},
-	dynamicPageFontFunc: func (dynamic) {
-		forindex (var matrixFont; dynamic.fontMatrix) {
-			if (matrixFont == 0) { 
-				var sign = "L"; 
-			} else { 
-				var sign = "R"; 
-			}
-			forindex (var item; dynamic.fontMatrix[matrixFont]) {
-				if (dynamic.fontMatrix[matrixFont][item] == 1) {
-					me["Simple_" ~ sign ~ (item + 1)].setFont(symbol);
-					me["Simple_" ~ sign ~ (item + 1)].setFontSize(small);
-				} else {
-					me["Simple_" ~ sign ~ (item + 1)].setFont(default);
-					me["Simple_" ~ sign ~ (item + 1)].setFontSize(normal);
-				}
-			}
-		}
-	},
 	
 	updateScratchpad: func(i) {
 		me["Scratchpad"].setText(sprintf("%s", mcdu_scratchpad.scratchpads[i].scratchpad));
diff --git a/Nasal/MCDU/AIRWAYS.nas b/Nasal/MCDU/AIRWAYS.nas
index 273c8486..d14be37a 100644
--- a/Nasal/MCDU/AIRWAYS.nas
+++ b/Nasal/MCDU/AIRWAYS.nas
@@ -1,7 +1,6 @@
 var airwaysPage = {
 	title: [nil, nil, nil],
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -45,7 +44,6 @@ var airwaysPage = {
 		me.R1 = [nil, "TO  ", "blu"];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
-		me.fontMatrix = [[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0]];
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
 	},
 	makeTmpy: func() {
@@ -67,7 +65,6 @@ var airwaysPage = {
 		}
 	},
 	updateAirways: func(index, airwayName) {
-		me.fontMatrix[0][index - 1] = 0;
 		if (index == 1) {
 			me.L1[0] = airwayName;
 		} elsif (index == 2) {
diff --git a/Nasal/MCDU/ARRIVAL.nas b/Nasal/MCDU/ARRIVAL.nas
index 07a320ff..655e1261 100644
--- a/Nasal/MCDU/ARRIVAL.nas
+++ b/Nasal/MCDU/ARRIVAL.nas
@@ -5,7 +5,6 @@ var isNoVia = [0, 0, 0];
 var arrivalPage = {
 	title: [nil, nil, nil],
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -132,7 +131,6 @@ var arrivalPage = {
 	_setupPageWithData: func() {
 		me.title = ["ARRIVAL", " TO ", left(me.id, 4)];
 		
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
 		
@@ -178,7 +176,6 @@ var arrivalPage = {
 		me.R4 = [nil, nil, "ack"];
 		me.R5 = [nil, nil, "ack"];
 		me.R6 = [nil, nil, "ack"];
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "ack"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
 	},
diff --git a/Nasal/MCDU/ATC.nas b/Nasal/MCDU/ATC.nas
index c4f45c71..a4b252d9 100644
--- a/Nasal/MCDU/ATC.nas
+++ b/Nasal/MCDU/ATC.nas
@@ -2,7 +2,6 @@ var latReq = {
 	title: [nil, nil, nil],
 	titleColour: "wht",
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
diff --git a/Nasal/MCDU/ATIS.nas b/Nasal/MCDU/ATIS.nas
index 06672670..ef7d1e4f 100644
--- a/Nasal/MCDU/ATIS.nas
+++ b/Nasal/MCDU/ATIS.nas
@@ -1,6 +1,5 @@
 var atisPage = {
 	title: nil,
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -77,7 +76,6 @@ var atisPage = {
 		me.R6 = ["PRINT ", nil, "blu"];
 		me.arrowsMatrix = [[0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "wht", "wht"], ["ack", "ack", "ack", "ack", "ack", "blu"]];
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
 	},
 	update: func() {
diff --git a/Nasal/MCDU/CLOSESTAIRPORT.nas b/Nasal/MCDU/CLOSESTAIRPORT.nas
index fc57dd83..bda13664 100644
--- a/Nasal/MCDU/CLOSESTAIRPORT.nas
+++ b/Nasal/MCDU/CLOSESTAIRPORT.nas
@@ -1,6 +1,5 @@
 var closestAirportPage = {
 	title: nil,
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -40,12 +39,13 @@ var closestAirportPage = {
 		me.title = "CLOSEST AIRPORTS";
 		me.C1[1] = " BRG   DIST";
 		me.R1[1] = "UTC  ";
-		me.L5 = ["[    ]", nil, "blu"];
+		me.L5 = ["[   ]", nil, "blu"];
+		me.C5 = [nil, me.frozen ? "LIST FROZEN" : nil, "grn"];
+		me.R5 = [nil, nil, "grn"];
 		me.L6 = [" FREEZE", nil, "blu"];
 		me.R6 = ["EFOB/WIND ", nil, "wht"];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 1]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "blu"], ["ack", "ack", "ack", "ack", "ack", "wht"]];
-		me.fontMatrix = [[0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0]];
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
 		me.update();
 		me.updateBrgDist();
@@ -98,32 +98,29 @@ var closestAirportPage = {
 		var magvarLocal = magvar();
 		if (size(me.airports) >= 1) {
 			me.cdVector[0] = courseAndDistance(me.airports[0]);
-			me.C1 = [math.round(me.cdVector[0][0] - magvarLocal) ~ "   " ~ math.round(me.cdVector[0][1]), " BRG   DIST", "grn"];
+			me.C1 = [sprintf("%03d",me.cdVector[0][0] - magvarLocal) ~ "°  " ~ math.round(me.cdVector[0][1]), " BRG   DIST", "grn"];
 		}
 		if (size(me.airports) >= 2) {
 			me.cdVector[1] = courseAndDistance(me.airports[1]);
-			me.C2 = [math.round(me.cdVector[1][0] - magvarLocal) ~ "   " ~ math.round(me.cdVector[1][1]) , nil, "grn"];
+			me.C2 = [sprintf("%03d",me.cdVector[1][0] - magvarLocal) ~ "°  " ~ math.round(me.cdVector[1][1]) , nil, "grn"];
 		}
 		if (size(me.airports) >= 3) {
 			me.cdVector[2] = courseAndDistance(me.airports[2]);
-			me.C3 = [math.round(me.cdVector[2][0] - magvarLocal) ~ "   " ~ math.round(me.cdVector[2][1]), nil, "grn"];
+			me.C3 = [sprintf("%03d",me.cdVector[2][0] - magvarLocal) ~ "°  " ~ math.round(me.cdVector[2][1]), nil, "grn"];
 		}
 		if (size(me.airports) >= 4) {
 			me.cdVector[3] = courseAndDistance(me.airports[3]);
-			me.C4 = [math.round(me.cdVector[3][0] - magvarLocal) ~ "   " ~ math.round(me.cdVector[3][1]), nil, "grn"];
+			me.C4 = [sprintf("%03d",me.cdVector[3][0] - magvarLocal) ~ "°  " ~ math.round(me.cdVector[3][1]), nil, "grn"];
 		}
 		if (me.manAirport != nil) {
-			me.C5 = [math.round(courseAndDistance(me.manAirport)[0] - magvarLocal) ~ "   " ~ math.round(courseAndDistance(me.manAirport)[1]), nil, "grn"];
+			me.C5 = [sprintf("%03d",courseAndDistance(me.manAirport)[0] - magvarLocal) ~ "°  " ~ math.round(courseAndDistance(me.manAirport)[1]), me.frozen ? "LIST FROZEN" : nil, "grn"];
 		}
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
 	},
 	manAirportCall: func(id) {
 		if (id == "CLR") {
 			me.manAirport = nil;
-			me.L5 = ["[    ]", nil, "blu"];
-			me.fontMatrix[0][4] = 1;
-			me.C5 = [nil, nil, "grn"];
-			me.R5 = [nil, nil, "grn"];
+			me._setupPageWithData();
 			return;
 		}
 		if (size(id) > 4) {
@@ -135,6 +132,7 @@ var closestAirportPage = {
 			me.fontMatrix[0][4] = 0;
 			me.L5 = [id, nil, "grn"];
 			me.R5 = ["----", nil, "grn"];
+			mcdu_scratchpad.scratchpads[me.computer].empty();
 		}
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
 	}
diff --git a/Nasal/MCDU/DEPARTURE.nas b/Nasal/MCDU/DEPARTURE.nas
index a4a1b0b8..ee3ab6b7 100644
--- a/Nasal/MCDU/DEPARTURE.nas
+++ b/Nasal/MCDU/DEPARTURE.nas
@@ -4,7 +4,6 @@ var isNoTransDep = [0, 0, 0];
 var departurePage = {
 	title: [nil, nil, nil],
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -106,7 +105,6 @@ var departurePage = {
 	_setupPageWithData: func() {
 		me.title = ["DEPARTURE", " FROM ", left(me.id, 4)];
 		
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
 		
@@ -147,7 +145,6 @@ var departurePage = {
 		me.R4 = [nil, nil, "ack"];
 		me.R5 = [nil, nil, "ack"];
 		me.R6 = [nil, nil, "ack"];
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "ack"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
 	},
diff --git a/Nasal/MCDU/DIRTO.nas b/Nasal/MCDU/DIRTO.nas
index 81480ff2..b4c89c49 100644
--- a/Nasal/MCDU/DIRTO.nas
+++ b/Nasal/MCDU/DIRTO.nas
@@ -3,7 +3,6 @@ var dirToFlag = 0;
 var dirTo = {
 	title: [nil],
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -46,7 +45,6 @@ var dirTo = {
 		me.R5 = ["[   ]  ", "RADIAL OUT  ", "blu"];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["ack", "blu", "blu", "blu", "blu", "ack"], ["ack", "blu", "blu", "ack", "ack", "ack"]];
-		me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
 		me.updateFromFpln();
 		me.updateTmpy();
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
@@ -148,7 +146,6 @@ var dirTo = {
 	fieldL1: func(text, override = 0, overrideIndex = -1) {
 		me.makeTmpy();
 		me.L1[0] = text;
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
 		if (size(text) == 16) {
 			# lat lon
 			var lat = split("/", text)[0];
@@ -237,7 +234,6 @@ var dirTo = {
 	leftFieldBtn: func(index) {
 		me.makeTmpy();
 		me.L1[0] = me.vector[index - 2].wp_name;
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
 		fmgc.flightPlanController.directTo(me.vector[index - 2], me.computer);
 		me.arrowsMatrix[0][1] = 0;
 		# FIGURE OUT HOW TO MAKE IT SO IT DOESN'T DELETE THE WAYPOINTS ON DIR TO BUT DOES IN FLIGHTPLAN
@@ -254,7 +250,6 @@ var dirTo = {
 			dirToFlag = 0;
 			fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 0);
 			me.L1 = [" [       ]", " WAYPOINT", "blu"];
-			me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
 			me.R1 = ["----   ---  ", "UTC   DIST  ", "wht"];
 		} else {
 			mcdu_message(me.computer, "NOT ALLOWED");
@@ -265,7 +260,6 @@ var dirTo = {
 			dirToFlag = 0;
 			fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 1);
 			me.L1 = [" [       ]", " WAYPOINT", "blu"];
-			me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
 			me.R1 = ["----   ---  ", "UTC   DIST  ", "wht"];
 			setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA"); # todo - remember horizontal srcoll of f-plna?
 		} else {
diff --git a/Nasal/MCDU/DUPLICATE.nas b/Nasal/MCDU/DUPLICATE.nas
index c5496993..84e70b61 100644
--- a/Nasal/MCDU/DUPLICATE.nas
+++ b/Nasal/MCDU/DUPLICATE.nas
@@ -1,7 +1,6 @@
 var duplicateNamesPage = {
 	title: nil,
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -49,7 +48,6 @@ var duplicateNamesPage = {
 		me.title = "DUPLICATE NAMES";
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		
 		me.distances = [];
 		for (var i = 0; i < size(me.vector); i += 1) {
diff --git a/Nasal/MCDU/F-PLN.nas b/Nasal/MCDU/F-PLN.nas
index c2f22fcc..caad448d 100644
--- a/Nasal/MCDU/F-PLN.nas
+++ b/Nasal/MCDU/F-PLN.nas
@@ -160,22 +160,22 @@ var fplnItem = {
 		if (me.wp.wp_name == "DISCONTINUITY") {
 			canvas_mcdu.myLatRev[me.computer] = latRev.new(4, me.wp, me.index, me.computer);
 		} elsif (fmgc.flightPlanController.temporaryFlag[me.computer]) {
-			if (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
-				canvas_mcdu.myLatRev[me.computer] = latRev.new(1, me.wp, me.index, me.computer);
-			} elsif (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
-				canvas_mcdu.myLatRev[me.computer] = latRev.new(0, me.wp, me.index, me.computer);
-			} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
+			if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
 				canvas_mcdu.myLatRev[me.computer] = latRev.new(2, me.wp, me.index, me.computer);
+			} elsif (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
+				canvas_mcdu.myLatRev[me.computer] = latRev.new(1, me.wp, me.index, me.computer);
+			} elsif (fmgc.flightPlanController.flightplans[me.computer].departure != nil and left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
+				canvas_mcdu.myLatRev[me.computer] = latRev.new(0, me.wp, me.index, me.computer);
 			} else {
 				canvas_mcdu.myLatRev[me.computer] = latRev.new(3, me.wp, me.index, me.computer);
 			}
 		} else {
-			if (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
-				canvas_mcdu.myLatRev[me.computer] = latRev.new(1, me.wp, me.index, me.computer);
-			} elsif (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
-				canvas_mcdu.myLatRev[me.computer] = latRev.new(0, me.wp, me.index, me.computer);
-			} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
+			if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
 				canvas_mcdu.myLatRev[me.computer] = latRev.new(2, me.wp, me.index, me.computer);
+			} elsif (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
+				canvas_mcdu.myLatRev[me.computer] = latRev.new(1, me.wp, me.index, me.computer);
+			} elsif (fmgc.flightPlanController.flightplans[2].departure != nil and left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
+				canvas_mcdu.myLatRev[me.computer] = latRev.new(0, me.wp, me.index, me.computer);
 			} else {
 				canvas_mcdu.myLatRev[me.computer] = latRev.new(3, me.wp, me.index, me.computer);
 			}
@@ -190,22 +190,22 @@ var fplnItem = {
 			canvas_mcdu.myVertRev[me.computer] = nil;
 			
 			if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
-				if (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
-					canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
-				} if (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
-					canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
-				} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
+				if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
 					canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
+				} elsif (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
+					canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
+				} if (fmgc.flightPlanController.flightplans[me.computer].departure != nil and left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
+					canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
 				} else {
 					canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
 				}
 			} else {
-				if (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
-					canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
-				} elsif (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
-					canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
-				} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
+				if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
 					canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
+				} elsif (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
+					canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
+				} elsif (fmgc.flightPlanController.flightplans[2].departure != nil and left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
+					canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
 				} else {
 					canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
 				}
@@ -291,7 +291,6 @@ var staticText = {
 };
 
 var fplnPage = { # this one is only created once, and then updated - remember this
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	L1: [nil, nil, "ack"], # content, title, colour
 	L2: [nil, nil, "ack"],
 	L3: [nil, nil, "ack"],
@@ -509,7 +508,7 @@ var fplnPage = { # this one is only created once, and then updated - remember th
 				setprop("MCDU[" ~ me.computer ~ "]/page", "LATREV");
 			}
 		} else {
-			if (size(me.outputList) >= index) {
+			if (size(me.outputList) >= index and !mcdu_scratchpad.scratchpads[me.computer].showTypeIMsg and !mcdu_scratchpad.scratchpads[me.computer].showTypeIIMsg) {
 				if (size(mcdu_scratchpad.scratchpads[me.computer].scratchpad) > 0) {
 					var returny = fmgc.flightPlanController.scratchpad(mcdu_scratchpad.scratchpads[me.computer].scratchpad, (index - 1 + me.scroll), me.computer);
 					if (returny == 3) {
diff --git a/Nasal/MCDU/HOLD.nas b/Nasal/MCDU/HOLD.nas
index 4b0399da..1bb16b33 100644
--- a/Nasal/MCDU/HOLD.nas
+++ b/Nasal/MCDU/HOLD.nas
@@ -1,7 +1,6 @@
 var holdPage = {
 	title: [nil, nil, nil],
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -41,37 +40,35 @@ var holdPage = {
 		me.title = ["HOLD", " AT ", me.waypoint.wp_name];
 		me.titleColour = "wht";
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0]];
-		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["wht", "wht", "ack", "ack", "ack", "ack"]];
-		me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
+		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["blu", "blu", "ack", "ack", "ack", "ack"]];
 		if (me.waypoint.fly_type == "Hold") {
 			me.makeTmpy();
-			me.L1 = [" " ~ sprintf("%03.0f", me.waypoint.hold_inbound_radial), "INB CRS", "blu"];
-			me.fontMatrix[0][0] = 0;
+			me.L1 = [sprintf("%03.0f°", me.waypoint.hold_inbound_radial), "INB CRS", "blu"];
 			
 			if (me.waypoint.hold_is_left_handed) {
-				me.L2 = [" L", " TURN", "blu"];
+				me.L2 = ["L", " TURN", "blu"];
 			} else {
-				me.L2 = [" R", " TURN", "blu"];
+				me.L2 = ["R", " TURN", "blu"];
 			}
 			
 			if (me.waypoint.hold_is_distance) {
-				me.L2 = [" -.-/" ~ me.waypoint.hold_time_or_distance, "TIME/DIST", "blu"];
+				me.L3 = [" -.-/" ~ me.waypoint.hold_time_or_distance, "TIME/DIST", "blu"];
 			} else {
-				me.L2 = [" " ~ sprintf("%3.1f", (me.waypoint.hold_time_or_distance / 60)) ~ "/----", "TIME/DIST", "blu"];
+				me.L3 = [sprintf("%3.1f", (me.waypoint.hold_time_or_distance / 60)) ~ "/----", "TIME/DIST", "blu"];
 			}
-			me.R1 = ["COMPUTED ", nil, "wht"];
+			me.R1 = ["COMPUTED ", nil, "blu"];
 			me.R2 = ["DATABASE ", nil, "yel"];
 			me.arrowsMatrix[1][1] = 0;
 		} else {
-			me.L1 = [" 100", "INB CRS", "blu"];
-			me.L2 = [" R", " TURN", "blu"];
+			me.L1 = ["100°", "INB CRS", "blu"];
+			me.L2 = ["R", " TURN", "blu"];
 			if (pts.Instrumentation.Altimeter.indicatedFt.getValue() >= 14000) {
-				me.L2 = [" 1.5/----", "TIME/DIST", "blu"];
+				me.L3 = ["1.5/----", "TIME/DIST", "blu"];
 			} else {
-				me.L2 = [" 1.0/----", "TIME/DIST", "blu"];
+				me.L3 = ["1.0/----", "TIME/DIST", "blu"];
 			}
-			me.R1 = ["COMPUTED ", nil, "wht"];
-			me.R2 = ["DATABASE ", nil, "wht"];
+			me.R1 = ["COMPUTED ", nil, "blu"];
+			me.R2 = ["DATABASE ", nil, "blu"];
 		}
 		me.L6 = [" RETURN", nil, "wht"];
 		me.C4 = ["LAST EXIT", nil, "wht"];
@@ -87,6 +84,7 @@ var holdPage = {
 		if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
 			me.L1[2] = "yel";
 			me.L2[2] = "yel";
+			me.L3[2] = "yel";
 			me.L6 = [" F-PLN", " TMPY", "yel"];
 			me.R6 = ["INSERT ", " TMPY", "yel"];
 			me.arrowsColour[0][5] = "yel";
@@ -95,6 +93,7 @@ var holdPage = {
 		} else {
 			me.L1[2] = "blu";
 			me.L2[2] = "blu";
+			me.L3[2] = "blu";
 			me.L6 = [" RETURN", nil, "wht"];
 			me.R6 = [nil, nil, "ack"];
 			me.arrowsColour[0][5] = "wht";
diff --git a/Nasal/MCDU/LATREV.nas b/Nasal/MCDU/LATREV.nas
index 0e0491bd..2f63ed54 100644
--- a/Nasal/MCDU/LATREV.nas
+++ b/Nasal/MCDU/LATREV.nas
@@ -2,7 +2,6 @@ var latRev = {
 	title: [nil, nil, nil],
 	titleColour: "wht",
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -48,22 +47,22 @@ var latRev = {
 	_setupPageWithData: func() {
 		if (me.type == 2) { 
 			me.title = ["LAT REV", " FROM ", "PPOS"];
+			var acPos = geo.aircraft_position();
+			me.subtitle = [dmsToString(sprintf(acPos.lat()), "lat"), dmsToString(sprintf(acPos.lon()), "lon")];
 			me.L2 = [" OFFSET", nil, "wht"];
 			me.L3 = [" HOLD", nil, "wht"];
 			me.L6 = [" RETURN", nil, "wht"];
 			me.R1 = ["FIX INFO ", nil, "wht"];
-			me.R2 = ["[    ]°/[   ]°/[  ]", "LL XING/INCR/NO", "blu"];
+			me.R2 = ["[  ]°/[]°/[]", "LL XING/INCR/NO", "blu"];
 			me.arrowsMatrix = [[0, 1, 1, 0, 0, 1], [1, 0, 0, 0, 0, 0]];
 			me.arrowsColour = [["ack", "wht", "wht", "ack", "ack", "wht"], ["wht", "ack", "ack", "ack", "ack", "ack"]];
-			me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0]];
 		} elsif (me.type == 4) { 
 			me.title = ["LAT REV", " FROM ", "DISCON"];
-			me.R3 = ["[        ]", "NEXT WPT  ", "blu"];
-			me.R4 = ["[     ]", "NEW DEST", "blu"];
+			me.R3 = ["[   ]", "NEXT WPT ", "blu"];
+			me.R4 = ["[   ]", "NEW DEST ", "blu"];
 			me.L6 = [" RETURN", nil, "wht"];
 			me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
 			me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
-			me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0]];
 		} else {
 			if (me.type == 0) {	
 				me.title = ["LAT REV", " FROM ", left(me.wpt.wp_name, 4)];
@@ -72,17 +71,18 @@ var latRev = {
 				} else {
 					me.depAirport = findAirportsByICAO(me.wpt.wp_name);
 				}
-				me.subtitle = [dmsToString(sprintf(me.depAirport[0].lat), "lat"), dmsToString(sprintf(me.depAirport[0].lon), "lon")];
+				if (size(me.depAirport) > 0) {
+					me.subtitle = [dmsToString(sprintf(me.depAirport[0].lat), "lat"), dmsToString(sprintf(me.depAirport[0].lon), "lon")];
+				}
 				me.L1 = [" DEPARTURE", nil, "wht"];
 				me.L2 = [" OFFSET", nil, "wht"];
 				me.L6 = [" RETURN", nil, "wht"];
 				me.R1 = ["FIX INFO ", nil, "wht"];
-				me.R2 = ["[    ]°/[   ]°/[  ]", "LL XING/INCR/NO", "blu"];
-				me.R3 = ["[        ]", "NEXT WPT  ", "blu"];
-				me.R4 = ["[     ]", "NEW DEST", "blu"];
+				me.R2 = ["[  ]°/[]°/[]", "LL XING/INCR/NO", "blu"];
+				me.R3 = ["[   ]", "NEXT WPT ", "blu"];
+				me.R4 = ["[   ]", "NEW DEST ", "blu"];
 				me.arrowsMatrix = [[1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0]];
 				me.arrowsColour = [["wht", "wht", "ack", "ack", "ack", "wht"], ["wht", "ack", "ack", "ack", "ack", "ack"]];
-				me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 0, 0]];
 			} elsif (me.type == 1) {
 				me.title = ["LAT REV", " FROM ", left(me.wpt.wp_name, 4)];
 				me.arrowsMatrix = [[0, 0, 1, 1, 0, 1], [1, 0, 0, 0, 0, 0]];
@@ -92,7 +92,9 @@ var latRev = {
 				} else {
 					me.arrAirport = findAirportsByICAO(me.wpt.wp_name);
 				}
-				me.subtitle = [dmsToString(sprintf(me.arrAirport[0].lat), "lat"), dmsToString(sprintf(me.arrAirport[0].lon), "lon")];
+				if (size(me.arrAirport) > 0) {
+					me.subtitle = [dmsToString(sprintf(me.arrAirport[0].lat), "lat"), dmsToString(sprintf(me.arrAirport[0].lon), "lon")];
+				}
 				me.L3 = [" ALTN", nil, "wht"];
 				if (fmgc.FMGCInternal.altAirportSet) {
 					me.L4 = [" ALTN", " ENABLE", "blu"];
@@ -102,8 +104,7 @@ var latRev = {
 				}
 				me.L6 = [" RETURN", nil, "wht"];
 				me.R1 = ["ARRIVAL ", nil, "wht"];
-				me.R3 = ["[        ]", "NEXT WPT  ", "blu"];
-				me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0]];
+				me.R3 = ["[   ]", "NEXT WPT ", "blu"];
 			} elsif (me.type == 3) {
 				me.title = ["LAT REV", " FROM ", me.wpt.wp_name];
 				me.arrowsMatrix = [[0, 0, 1, 1, 0, 1], [1, 0, 0, 0, 1, 0]];
@@ -121,10 +122,9 @@ var latRev = {
 				}
 				me.L6 = [" RETURN", nil, "wht"];
 				me.R1 = ["FIX INFO ", nil, "wht"];
-				me.R3 = ["[        ]", "NEXT WPT  ", "blu"];
-				me.R4 = ["[     ]", "NEW DEST", "blu"];
+				me.R3 = ["[   ]", "NEXT WPT ", "blu"];
+				me.R4 = ["[   ]", "NEW DEST ", "blu"];
 				me.R5 = ["AIRWAYS ", nil, "wht"];
-				me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0]];
 			}
 		}
 	},
@@ -164,7 +164,7 @@ var dmsToString = func(dms, type) {
 	} else {
 		var sign = degrees >= 0 ? "E" : "W";
 	}
-	return abs(degrees) ~ "g" ~ minutes ~ " " ~ sign;
+	return abs(degrees) ~ "°" ~ minutes ~ sign;
 }
 
 
diff --git a/Nasal/MCDU/MCDU.nas b/Nasal/MCDU/MCDU.nas
index 45d1dfe2..a5765c89 100644
--- a/Nasal/MCDU/MCDU.nas
+++ b/Nasal/MCDU/MCDU.nas
@@ -526,7 +526,7 @@ var lskbutton = func(btn, i) {
 		} else if (page == "PERFAPPR") {
 			perfAPPRInput("L3",i);
 		} else if (page == "STATUS") {
-			statusInput("L3",i);
+			fmgc.switchDatabase();
 		} else if (page == "RADNAV") {
 			radnavInput("L3",i);
 		} else if (page == "DATA") {
@@ -790,7 +790,6 @@ var lskbutton = func(btn, i) {
 			canvas_mcdu.myDuplicate[i].pushButtonLeft(5);
 		} else if (page == "CLOSESTAIRPORT") {
 			canvas_mcdu.myClosestAirport[i].manAirportCall(mcdu_scratchpad.scratchpads[i].scratchpad);
-			mcdu_scratchpad.scratchpads[i].empty();
 		} else if (page == "ATCMENU") {
 			pageNode[i].setValue("NOTIFICATION");
 		} else if (page == "FLTLOG") {
@@ -1188,7 +1187,16 @@ var rskbutton = func(btn, i) {
 			}
 			pageNode[i].setValue("WINDDES");
 		} else if (page == "STATUS") {
-			statusInput("R5",i);
+			if (fmgc.WaypointDatabase.getCount() >= 1) {
+				if (fmgc.WaypointDatabase.confirm[i]) {
+					fmgc.WaypointDatabase.delete(i);
+					fmgc.WaypointDatabase.confirm[i] = 0;
+				} else {
+					fmgc.WaypointDatabase.confirm[i] = 1;
+				}
+			} else {
+				mcdu_message(i, "NOT ALLOWED");
+			}
 		} else if (page == "PERFTO") {
 			perfTOInput("R5",i);
 		} else if (page == "PERFAPPR") {
@@ -1564,11 +1572,18 @@ var button = func(btn, i, event = "") {
 			if (right(mcdu_scratchpad.scratchpads[i].scratchpad, 1) == "-") {
 				mcdu_scratchpad.scratchpads[i].clear();
 				mcdu_scratchpad.scratchpads[i].addChar("+");
+			} else if (right(mcdu_scratchpad.scratchpads[i].scratchpad, 1) == "+") {
+				mcdu_scratchpad.scratchpads[i].clear();
+				mcdu_scratchpad.scratchpads[i].addChar("-");
 			} else {
 				mcdu_scratchpad.scratchpads[i].addChar("-");
 			}
 		} else if (btn == "OVFY") {
-			mcdu_scratchpad.scratchpads[i].addChar("@");
+			if (mcdu_scratchpad.scratchpads[i].scratchpad == "") {
+				mcdu_scratchpad.scratchpads[i].addChar("@");
+			} else {
+				mcdu_message(i, "NOT ALLOWED");
+			}
 		} else {
 			mcdu_scratchpad.scratchpads[i].addChar(btn);
 		}
diff --git a/Nasal/MCDU/PILOTWAYPOINT.nas b/Nasal/MCDU/PILOTWAYPOINT.nas
index b238183b..ffc67c56 100644
--- a/Nasal/MCDU/PILOTWAYPOINT.nas
+++ b/Nasal/MCDU/PILOTWAYPOINT.nas
@@ -1,6 +1,5 @@
 var pilotWaypointPage = {
 	title: nil,
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
diff --git a/Nasal/MCDU/RECEIVEDMESSAGES.nas b/Nasal/MCDU/RECEIVEDMESSAGES.nas
index 13018346..f2c683ba 100644
--- a/Nasal/MCDU/RECEIVEDMESSAGES.nas
+++ b/Nasal/MCDU/RECEIVEDMESSAGES.nas
@@ -1,6 +1,5 @@
 var receivedMessagesPage = {
 	title: nil,
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -63,7 +62,6 @@ var receivedMessagesPage = {
 		me.L6 = [" RETURN", nil, "wht"];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["blu", "blu", "blu", "blu", "blu", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
 	},
 	update: func() {
@@ -155,8 +153,6 @@ var receivedMessagesPage = {
 
 var receivedMessagePage = {
 	title: nil,
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
-	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
 	L2: [nil, nil, "ack"],
@@ -229,7 +225,6 @@ var receivedMessagePage = {
 		me.L6 = [" RETURN", nil, "wht"];
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["blu", "blu", "blu", "blu", "blu", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
-		me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
 	},
 	update: func() {
diff --git a/Nasal/MCDU/STATUS.nas b/Nasal/MCDU/STATUS.nas
deleted file mode 100644
index 715e28cc..00000000
--- a/Nasal/MCDU/STATUS.nas
+++ /dev/null
@@ -1,16 +0,0 @@
-# A3XX mCDU by Joshua Davidson (Octal450), Jonathan Redpath, and Matthew Maring (mattmaring)
-
-# Copyright (c) 2022 Josh Davidson (Octal450)
-
-var statusInput = func(key, i) {
-	if (key == "L3") {
-		fmgc.switchDatabase();
-	} elsif (key == "R5") {
-		if (fmgc.WaypointDatabase.confirm[i]) {
-			fmgc.WaypointDatabase.delete(i);
-			fmgc.WaypointDatabase.confirm[i] = 0;
-		} else {
-			fmgc.WaypointDatabase.confirm[i] = 1;
-		}
-	}
-}
diff --git a/Nasal/MCDU/VERTREV.nas b/Nasal/MCDU/VERTREV.nas
index 6cd6df08..d76f34d5 100644
--- a/Nasal/MCDU/VERTREV.nas
+++ b/Nasal/MCDU/VERTREV.nas
@@ -4,7 +4,6 @@ var scratchpadSplit = nil;
 var vertRev = {
 	title: [nil, nil, nil],
 	subtitle: [nil, nil],
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -85,20 +84,16 @@ var vertRev = {
 			me.R2 = ["RTA ", nil, "wht"];
 			me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
 			me.arrowsColour = [["ack", "ack", "ack", "wht", "wht", "wht"], ["ack", "wht", "ack", "ack", "wht", "wht"]];
-			me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 		} elsif (me.type == 2) { 
 			me.title = ["VERT REV", " AT ", me.id];
-			me.fontMatrix = [[0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 0]];
 			me.L1 = ["", "  EFOB ---.-", "wht"];
 			me.R1 = ["", "EXTRA ---.- ", "wht"];
 			me.L2 = [fmgc.FMGCInternal.clbSpdLim ~ "/" ~ fmgc.FMGCInternal.clbSpdLimAlt, " CLB SPD LIM", "mag"];
 			me.speed = me.getSpd();
 			if (me.speed[0] == nil) {
-				me.L3 = [" [    ]", " SPD CSTR", "blu"];
-				me.fontMatrix[0][2] = 1;
+				me.L3 = ["[   ]", " SPD CSTR", "blu"];
 			} else {
 				me.L3 = [me.speed[0], " SPD CSTR", me.speed[1]];
-				me.fontMatrix[0][2] = 0;
 			}
 			me.L4 = [" CONSTANT MACH", nil, "wht"];
 			me.L5 = [" WIND DATA", nil, "wht"];
@@ -106,11 +101,9 @@ var vertRev = {
 			me.R2 = ["RTA ", nil, "wht"];
 			me.alt = me.getAlt();
 			if (me.alt[0] == nil) {
-				me.R3 = ["[      ] ", "ALT CSTR  ", "blu"];
-				me.fontMatrix[1][2] = 1;
+				me.R3 = ["[     ]", "ALT CSTR ", "blu"];
 			} else {
-				me.R3 = [me.alt[0], "ALT CSTR  ", me.alt[1]];
-				me.fontMatrix[1][2] = 0;
+				me.R3 = [me.alt[0], "ALT CSTR ", me.alt[1]];
 			}
 			me.R6 = ["DES ", nil, "amb"];
 			# When the system does vertical planning, L6 should be RETURN and R6 not used if the MCDU knows the waypoint is during climb or descent.
@@ -138,7 +131,6 @@ var vertRev = {
 				me.R2 = ["RTA ", nil, "wht"];
 				me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
 				me.arrowsColour = [["ack", "ack", "ack", "wht", "wht", "wht"], ["ack", "wht", "ack", "ack", "wht", "wht"]];
-				me.fontMatrix = [[0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 			} elsif (me.type == 1) {
 				if (size(me.id) > 4) {
 					me.arrAirport = findAirportsByICAO(left(me.id, 4));
@@ -155,7 +147,6 @@ var vertRev = {
 				me.R3 = ["3000", "G/S INTCP", "grn"];
 				me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
 				me.arrowsColour = [["ack", "ack", "ack", "wht", "wht", "wht"], ["ack", "wht", "ack", "ack", "wht", "wht"]];
-				me.fontMatrix = [[0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
 			}
 		}
 		me.updateR5();
diff --git a/Nasal/MCDU/WINDCLB.nas b/Nasal/MCDU/WINDCLB.nas
index 88923868..bc9a7909 100644
--- a/Nasal/MCDU/WINDCLB.nas
+++ b/Nasal/MCDU/WINDCLB.nas
@@ -5,7 +5,6 @@
 var windCLBPage = {
 	title: nil,
 	titleColour: "wht",
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -46,7 +45,6 @@ var windCLBPage = {
 		me.titleColour = "wht";
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "ack"], ["wht", "ack", "ack", "ack", "wht", "ack"]];
-		me.fontMatrix = [[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0]];
 		
 		var computer_temp = 2;
 		if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
@@ -69,10 +67,8 @@ var windCLBPage = {
 			var windStore = fmgc.windController.clb_winds[computer_temp].wind5;
 			if (windStore.set) {
 				me.L5 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-				me.fontMatrix[0][4] = 1;
 			} else {
-				me.L5 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-				me.fontMatrix[0][4] = 1;
+				me.L5 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 			}
 		} else {
 			me.L5 = [nil, nil, "ack"];
@@ -82,10 +78,8 @@ var windCLBPage = {
 			var windStore = fmgc.windController.clb_winds[computer_temp].wind4;
 			if (windStore.set) {
 				me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-				me.fontMatrix[0][3] = 1;
 			} else {
-				me.L4 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-				me.fontMatrix[0][3] = 1;
+				me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 			}
 		} else {
 			me.L4 = [nil, nil, "ack"];
@@ -95,10 +89,8 @@ var windCLBPage = {
 			var windStore = fmgc.windController.clb_winds[computer_temp].wind3;
 			if (windStore.set) {
 				me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-				me.fontMatrix[0][2] = 1;
 			} else {
-				me.L3 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-				me.fontMatrix[0][2] = 1;
+				me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 			}
 		} else {
 			me.L3 = [nil, nil, "ack"];
@@ -108,10 +100,8 @@ var windCLBPage = {
 			var windStore = fmgc.windController.clb_winds[computer_temp].wind2;
 			if (windStore.set) {
 				me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-				me.fontMatrix[0][1] = 1;
 			} else {
-				me.L2 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-				me.fontMatrix[0][1] = 1;
+				me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 			}
 		} else {
 			me.L2 = [nil, nil, "ack"];
@@ -120,17 +110,15 @@ var windCLBPage = {
 		if (me.items >= 1) {
 			var windStore = fmgc.windController.clb_winds[computer_temp].wind1;
 			if (windStore.set) {
-				me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
-				me.fontMatrix[0][0] = 1;
+				me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "  TRU WIND/ALT", "blu"];
 			} else {
-				me.L1 = ["[  ]°/[  ]/[   ]", "TRU WIND/ALT", "blu"];
-				me.fontMatrix[0][0] = 1;
+				me.L1 = ["[ ]°/[ ]/[ ]", "  TRU WIND/ALT", "blu"];
 			}
 		}
 		
 		me.L6 = [" RETURN", nil, "wht"];
-		me.R1 = [" HISTORY ", "WIND ", "wht"];
-		me.R3 = [" REQUEST ", "WIND ", "amb"];
+		me.R1 = ["WIND ", "HISTORY ", "wht"];
+		me.R3 = ["REQUEST ", "WIND ", "amb"];
 		me.R5 = [" PHASE ", "NEXT ", "wht"];
 		
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
diff --git a/Nasal/MCDU/WINDCRZ.nas b/Nasal/MCDU/WINDCRZ.nas
index 3ff01aba..1df45a69 100644
--- a/Nasal/MCDU/WINDCRZ.nas
+++ b/Nasal/MCDU/WINDCRZ.nas
@@ -5,7 +5,6 @@
 var windCRZPage = {
 	title: [nil, nil, nil],
 	titleColour: "wht",
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -60,7 +59,6 @@ var windCRZPage = {
 		me.titleColour = "wht";
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 1, 1, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "wht", "wht", "ack"]];
-		me.fontMatrix = [[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0]];
 		
 		var computer_temp = 2;
 		if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
@@ -96,10 +94,8 @@ var windCRZPage = {
 				var windStore = fmgc.windController.crz_winds[computer_temp].wind4;
 				if (windStore.set) {
 					me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-					me.fontMatrix[0][3] = 1;
 				} else {
-					me.L4 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-					me.fontMatrix[0][3] = 1;
+					me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 				}
 			} else {
 				me.L4 = [nil, nil, "ack"];
@@ -109,10 +105,8 @@ var windCRZPage = {
 				var windStore = fmgc.windController.crz_winds[computer_temp].wind3;
 				if (windStore.set) {
 					me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-					me.fontMatrix[0][2] = 1;
 				} else {
-					me.L3 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-					me.fontMatrix[0][2] = 1;
+					me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 				}
 			} else {
 				me.L3 = [nil, nil, "ack"];
@@ -122,10 +116,8 @@ var windCRZPage = {
 				var windStore = fmgc.windController.crz_winds[computer_temp].wind2;
 				if (windStore.set) {
 					me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-					me.fontMatrix[0][1] = 1;
 				} else {
-					me.L2 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-					me.fontMatrix[0][1] = 1;
+					me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 				}
 			} else {
 				me.L2 = [nil, nil, "ack"];
@@ -134,31 +126,25 @@ var windCRZPage = {
 			if (me.items >= 1) {
 				var windStore = fmgc.windController.crz_winds[computer_temp].wind1;
 				if (windStore.set) {
-					me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
-					me.fontMatrix[0][0] = 1;
+					me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "  TRU WIND/ALT", "blu"];
 				} else {
-					me.L1 = ["[  ]°/[  ]/[   ]", "TRU WIND/ALT", "blu"];
-					me.fontMatrix[0][0] = 1;
+					me.L1 = ["[ ]°/[ ]/[ ]", "  TRU WIND/ALT", "blu"];
 				}
 			}
 			
 			var windStore = fmgc.windController.crz_winds[computer_temp].sat1;
 			if (windStore.set) {
 				me.L5 = [windStore.temp ~ "/" ~ windStore.altitude, "SAT / ALT", "blu"];
-				me.fontMatrix[0][4] = 1;
 			} else {
-				me.L5 = ["[  ]/[   ]", "SAT / ALT", "blu"];
-				me.fontMatrix[0][4] = 1;
+				me.L5 = ["[ ]/[  ]", "SAT / ALT", "blu"];
 			}
 		} else {
 			if (me.items >= 4) {
 				var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind4;
 				if (windStore.set) {
 					me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-					me.fontMatrix[0][3] = 1;
 				} else {
-					me.L4 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-					me.fontMatrix[0][3] = 1;
+					me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 				}
 			} else {
 				me.L4 = [nil, nil, "ack"];
@@ -168,10 +154,8 @@ var windCRZPage = {
 				var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind3;
 				if (windStore.set) {
 					me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-					me.fontMatrix[0][2] = 1;
 				} else {
-					me.L3 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-					me.fontMatrix[0][2] = 1;
+					me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 				}
 			} else {
 				me.L3 = [nil, nil, "ack"];
@@ -181,10 +165,8 @@ var windCRZPage = {
 				var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind2;
 				if (windStore.set) {
 					me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-					me.fontMatrix[0][1] = 1;
 				} else {
-					me.L2 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-					me.fontMatrix[0][1] = 1;
+					me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 				}
 			} else {
 				me.L2 = [nil, nil, "ack"];
@@ -193,21 +175,17 @@ var windCRZPage = {
 			if (me.items >= 1) {
 				var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind1;
 				if (windStore.set) {
-					me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
-					me.fontMatrix[0][0] = 1;
+					me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "  TRU WIND/ALT", "blu"];
 				} else {
-					me.L1 = ["[  ]°/[  ]/[   ]", "TRU WIND/ALT", "blu"];
-					me.fontMatrix[0][0] = 1;
+					me.L1 = ["[ ]°/[ ]/[ ]", "  TRU WIND/ALT", "blu"];
 				}
 			}
 			
 			var windStore = fmgc.windController.winds[computer_temp][me.match_location].sat1;
 			if (windStore.set) {
 				me.L5 = [windStore.temp ~ "/" ~ windStore.altitude, "SAT / ALT", "blu"];
-				me.fontMatrix[0][4] = 1;
 			} else {
-				me.L5 = ["[  ]/[   ]", "SAT / ALT", "blu"];
-				me.fontMatrix[0][4] = 1;
+				me.L5 = ["[ ]/[  ]", "SAT / ALT", "blu"];
 			}
 		}
 		
diff --git a/Nasal/MCDU/WINDDES.nas b/Nasal/MCDU/WINDDES.nas
index ad7ced64..f5ce0145 100644
--- a/Nasal/MCDU/WINDDES.nas
+++ b/Nasal/MCDU/WINDDES.nas
@@ -8,7 +8,6 @@ var magVar = nil;
 var windDESPage = {
 	title: nil,
 	titleColour: "wht",
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -50,7 +49,6 @@ var windDESPage = {
 		me.titleColour = "wht";
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 1, 0, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "wht", "ack", "ack"]];
-		me.fontMatrix = [[1, 1, 1, 1, 1, 0], [1, 0, 0, 0, 0, 0]];
 		
 		var computer_temp = 2;
 		if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
@@ -73,10 +71,8 @@ var windDESPage = {
 			var windStore = fmgc.windController.des_winds[computer_temp].wind5;
 			if (windStore.set) {
 				me.L5 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-				me.fontMatrix[0][4] = 1;
 			} else {
 				me.L5 = ["[  ]/°[  ]/[   ]", nil, "blu"];
-				me.fontMatrix[0][4] = 1;
 			}
 		} else {
 			me.L5 = [nil, nil, "ack"];
@@ -86,10 +82,8 @@ var windDESPage = {
 			var windStore = fmgc.windController.des_winds[computer_temp].wind4;
 			if (windStore.set) {
 				me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-				me.fontMatrix[0][3] = 1;
 			} else {
-				me.L4 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-				me.fontMatrix[0][3] = 1;
+				me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 			}
 		} else {
 			me.L4 = [nil, nil, "ack"];
@@ -99,10 +93,8 @@ var windDESPage = {
 			var windStore = fmgc.windController.des_winds[computer_temp].wind3;
 			if (windStore.set) {
 				me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-				me.fontMatrix[0][2] = 1;
 			} else {
-				me.L3 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-				me.fontMatrix[0][2] = 1;
+				me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 			}
 		} else {
 			me.L3 = [nil, nil, "ack"];
@@ -112,10 +104,8 @@ var windDESPage = {
 			var windStore = fmgc.windController.des_winds[computer_temp].wind2;
 			if (windStore.set) {
 				me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
-				me.fontMatrix[0][1] = 1;
 			} else {
-				me.L2 = ["[  ]°/[  ]/[   ]", nil, "blu"];
-				me.fontMatrix[0][1] = 1;
+				me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
 			}
 		} else {
 			me.L2 = [nil, nil, "ack"];
@@ -125,10 +115,8 @@ var windDESPage = {
 			var windStore = fmgc.windController.des_winds[computer_temp].wind1;
 			if (windStore.set) {
 				me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
-				me.fontMatrix[0][0] = 1;
 			} else {
-				me.L1 = ["[  ]°/[  ]/[   ]", "TRU WIND/ALT", "blu"];
-				me.fontMatrix[0][0] = 1;
+				me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
 			}
 		}
 		
@@ -137,11 +125,9 @@ var windDESPage = {
 		if (fmgc.FMGCInternal.altAirportSet) {
 			var windStore = fmgc.windController.des_winds[computer_temp].alt1;
 			if (windStore.set) {
-				me.R1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude), "ALTN WIND ", "blu"];
-				me.fontMatrix[1][0] = 1;
+				me.R1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude), "ALTN WIND", "blu"];
 			} else {
-				me.R1 = ["[  ]°/[  ]", "ALTN WIND ", "blu"];
-				me.fontMatrix[1][0] = 1;
+				me.R1 = ["[ ]°/[ ]", "ALTN WIND", "blu"];
 			}
 		} else {
 			me.R1 = ["", "", "blu"];
diff --git a/Nasal/MCDU/WINDHIST.nas b/Nasal/MCDU/WINDHIST.nas
index ba5bfc21..e5b058f0 100644
--- a/Nasal/MCDU/WINDHIST.nas
+++ b/Nasal/MCDU/WINDHIST.nas
@@ -4,7 +4,6 @@
 
 var windHISTPage = {
 	title: nil,
-	fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
 	arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
 	L1: [nil, nil, "ack"], # content, title, colour
@@ -137,7 +136,6 @@ var windHISTPage = {
 
 		me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
 		me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
-		me.fontMatrix = [[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0]];
 		canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
 	},
 	# makeTmpy: func() {
diff --git a/Systems/a320-misc.xml b/Systems/a320-misc.xml
index d011f01b..15d49452 100644
--- a/Systems/a320-misc.xml
+++ b/Systems/a320-misc.xml
@@ -488,7 +488,7 @@
 		
 	</channel>
 	
-	<channel name="FMGC">
+	<channel name="FMGC" execrate="8">
 		
 		<fcs_function name="/FMGC/internal/kts-to-mach-factor">
 			<function>
@@ -510,4 +510,58 @@
 		
 	</channel>
 	
+	<channel name="IESI" execrate="8">
+		
+		<switch name="/instrumentation/iesi/display/show-mach">
+			<default value="0"/>
+			<test logic="OR" value="1">
+				/instrumentation/airspeed-indicator/indicated-mach ge 0.5
+			</test>
+			<test logic="AND" value="1">
+				/instrumentation/airspeed-indicator/indicated-mach ge 0.45
+				/instrumentation/iesi/display/show-mach eq 1
+			</test>
+		</switch>
+		
+		<switch name="/instrumentation/iesi/power/power-command">
+			<default value="0"/>
+			<test logic="OR" value="1">
+				/systems/electrical/bus/dc-ess ge 25
+				<test logic="AND">
+					/systems/electrical/sources/si-1/inverter-control/relay-7xb ne 0
+					/systems/electrical/bus/sub-bus/dc-hot-1-703 ge 25
+				</test>
+			</test>
+		</switch>
+		
+		<actuator name="/instrumentation/iesi/power/power-transient-timer">
+			<input>/instrumentation/iesi/power/power-command</input>
+			<rate_limit sense="decr">5</rate_limit>
+			<rate_limit sene="incr">100</rate_limit>
+		</actuator>
+		
+		<switch name="/instrumentation/iesi/power/power-on">
+			<default value="0"/>
+			<test logic="OR" value="1">
+				/instrumentation/iesi/power/power-transient-timer ne 0
+			</test>
+		</switch>
+		
+		<fcs_function name="/instrumentation/iesi/power/power-consumption-w">
+			<function>
+				<sum>
+					<product>
+						<value>16</value>
+						<property>/instrumentation/iesi/power/power-on</property>
+					</product>
+					<product>
+						<value>4</value>
+						<property>/controls/lighting/DU/iesi</property>
+					</product>
+				</sum>
+			</function>
+		</fcs_function>
+		
+	</channel>
+	
 </system>