diff --git a/Nasal/FMGC/FMGC.nas b/Nasal/FMGC/FMGC.nas
index 9d0bc95a..66053ab2 100644
--- a/Nasal/FMGC/FMGC.nas
+++ b/Nasal/FMGC/FMGC.nas
@@ -114,7 +114,7 @@ setprop("/FMGC/internal/adf2-mcdu", "999.99/XXX");
 
 var FMGCinit = func {
 	setprop("/FMGC/status/to-state", 0);
-	setprop("/FMGC/status/phase", 0); # 0 is Preflight 1 is Takeoff 2 is Climb 3 is Cruise 4 is Descent 5 is Decel/Approach 6 is Go Around 7 is Done
+	fmgc.FMGCInternal.phase = 0; # 0 is Preflight 1 is Takeoff 2 is Climb 3 is Cruise 4 is Descent 5 is Decel/Approach 6 is Go Around 7 is Done
 	setprop("/FMGC/internal/maxspeed", 338);
 	setprop("/FMGC/internal/mng-spd", 157);
 	setprop("/FMGC/internal/mng-spd-cmd", 157);
@@ -450,55 +450,55 @@ var masterFMGC = maketimer(0.2, func {
 	thr2 = getprop("/controls/engines/engine[1]/throttle-pos");
 	altSel = getprop("/it-autoflight/input/alt");
 	
-	if ((n1_left < 85 or n1_right < 85) and gs < 90 and mode == " " and gear0 and FMGCInternal.FMGCInternal.phase == 1) { # rejected takeoff
+	if ((n1_left < 85 or n1_right < 85) and gs < 90 and mode == " " and gear0 and FMGCInternal.phase == 1) { # rejected takeoff
 		FMGCInternal.phase = 0;
 		setprop("systems/pressurization/mode", "GN");
 	}
 	
-	if (gear0 and FMGCInternal.FMGCInternal.phase == 0 and ((n1_left >= 85 and n1_right >= 85 and mode == "SRS") or gs >= 90)) {
+	if (gear0 and FMGCInternal.phase == 0 and ((n1_left >= 85 and n1_right >= 85 and mode == "SRS") or gs >= 90)) {
 		FMGCInternal.phase = 1;
 		setprop("systems/pressurization/mode", "TO");
 	}
 	
-	if (FMGCInternal.FMGCInternal.phase == 1 and ((mode != "SRS" and mode != " ") or alt >= accel_agl_ft)) {
+	if (FMGCInternal.phase == 1 and ((mode != "SRS" and mode != " ") or alt >= accel_agl_ft)) {
 		FMGCInternal.phase = 2;
 		setprop("systems/pressurization/mode", "TO");
 	}
 	
-	if (FMGCInternal.FMGCInternal.phase == 2 and (mode == "ALT CRZ" or mode == "ALT CRZ*")) {
+	if (FMGCInternal.phase == 2 and (mode == "ALT CRZ" or mode == "ALT CRZ*")) {
 		FMGCInternal.phase = 3;
 		setprop("systems/pressurization/mode", "CR");
 	}
 	
 	if (FMGCInternal.crzFl >= 200) {
-		if (FMGCInternal.FMGCInternal.phase == 3 and (flightPlanController.arrivalDist <= 200 or altSel < 20000)) {
+		if (FMGCInternal.phase == 3 and (flightPlanController.arrivalDist <= 200 or altSel < 20000)) {
 			FMGCInternal.phase = 4;
 			setprop("systems/pressurization/mode", "DE");
 		}
 	} else {
-		if (FMGCInternal.FMGCInternal.phase == 3 and (flightPlanController.arrivalDist <= 200 or altSel < (FMGCInternal.crzFl * 100))) { # todo - not sure about crzFl condition, investigate what happens!
+		if (FMGCInternal.phase == 3 and (flightPlanController.arrivalDist <= 200 or altSel < (FMGCInternal.crzFl * 100))) { # todo - not sure about crzFl condition, investigate what happens!
 			FMGCInternal.phase = 4;
 			setprop("systems/pressurization/mode", "DE");
 		}
 	}
 	
-	if (FMGCInternal.FMGCInternal.phase == 4 and getprop("/FMGC/internal/decel")) {
+	if (FMGCInternal.phase == 4 and getprop("/FMGC/internal/decel")) {
 		FMGCInternal.phase = 5;
 	}
 
 	if (flightPlanController.num[2].getValue() > 0 and getprop("/FMGC/flightplan[2]/active") == 1 and flightPlanController.arrivalDist <= 15 and (modelat == "NAV" or modelat == "LOC" or modelat == "LOC*") and aglalt < 9500) { #todo decel pseudo waypoint
 		setprop("/FMGC/internal/decel", 1);
-	} else if (getprop("/FMGC/internal/decel") == 1 and (FMGCInternal.FMGCInternal.phase == 0 or FMGCInternal.FMGCInternal.phase == 6)) {
+	} else if (getprop("/FMGC/internal/decel") == 1 and (FMGCInternal.phase == 0 or FMGCInternal.phase == 6)) {
 		setprop("/FMGC/internal/decel", 0);
 	}
 	
-	if ((FMGCInternal.FMGCInternal.phase == 5) and state1 == "TOGA" and state2 == "TOGA") {
+	if ((FMGCInternal.phase == 5) and state1 == "TOGA" and state2 == "TOGA") {
 		FMGCInternal.phase = 6;
 		setprop("systems/pressurization/mode", "TO");
 		setprop("/it-autoflight/input/toga", 1);
 	}
 	
-	if (FMGCInternal.FMGCInternal.phase == 6 and alt >= accel_agl_ft) { # todo when insert altn or new dest
+	if (FMGCInternal.phase == 6 and alt >= accel_agl_ft) { # todo when insert altn or new dest
 		FMGCInternal.phase = 2;
 	}
 	
@@ -556,7 +556,7 @@ var masterFMGC = maketimer(0.2, func {
 	}
 	
 	# predicted takeoff speeds
-	if (FMGCInternal.FMGCInternal.phase == 1) {
+	if (FMGCInternal.phase == 1) {
 		setprop("/FMGC/internal/computed-speeds/clean_to", getprop("/FMGC/internal/computed-speeds/clean"));
 		setprop("/FMGC/internal/computed-speeds/vs1g_clean_to", getprop("/FMGC/internal/computed-speeds/vs1g_clean"));
 		setprop("/FMGC/internal/computed-speeds/vs1g_conf_2_to", getprop("/FMGC/internal/computed-speeds/vs1g_conf_2"));
@@ -579,7 +579,7 @@ var masterFMGC = maketimer(0.2, func {
 	}
 	
 	# predicted approach (temp go-around) speeds
-	if (FMGCInternal.FMGCInternal.phase == 5 or FMGCInternal.FMGCInternal.phase == 6) {
+	if (FMGCInternal.phase == 5 or FMGCInternal.phase == 6) {
 		setprop("/FMGC/internal/computed-speeds/clean_appr", getprop("/FMGC/internal/computed-speeds/clean"));
 		setprop("/FMGC/internal/computed-speeds/vs1g_clean_appr", getprop("/FMGC/internal/computed-speeds/vs1g_clean"));
 		setprop("/FMGC/internal/computed-speeds/vs1g_conf_2_appr", getprop("/FMGC/internal/computed-speeds/vs1g_conf_2"));
@@ -742,7 +742,7 @@ var masterFMGC = maketimer(0.2, func {
 });
 
 var reset_FMGC = func {
-	setprop("/FMGC/status/phase", 0);
+	fmgc.FMGCInternal.phase = 0;
 	fd1 = getprop("/it-autoflight/input/fd1");
 	fd2 = getprop("/it-autoflight/input/fd2");
 	spd = getprop("/it-autoflight/input/kts");
@@ -915,22 +915,22 @@ var ManagedSPD = maketimer(0.25, func {
 			mng_alt_mach_cmd = getprop("/FMGC/internal/mng-alt-mach");
 			mng_alt_mach = math.round(mng_alt_mach_cmd, 0.001);
 			
-			if (mach > mng_alt_mach and (FMGCInternal.FMGCInternal.phase == 2 or FMGCInternal.FMGCInternal.phase == 3)) {
+			if (mach > mng_alt_mach and (FMGCInternal.phase == 2 or FMGCInternal.phase == 3)) {
 				setprop("/FMGC/internal/mach-switchover", 1);
 			}
 			
-			if (ias > mng_alt_spd and (FMGCInternal.FMGCInternal.phase == 4 or FMGCInternal.FMGCInternal.phase == 5)) {
+			if (ias > mng_alt_spd and (FMGCInternal.phase == 4 or FMGCInternal.phase == 5)) {
 				setprop("/FMGC/internal/mach-switchover", 0);
 			}
 			
-			if ((mode == " " or mode == "SRS") and (FMGCInternal.FMGCInternal.phase == 0 or FMGCInternal.FMGCInternal.phase == 1)) {
+			if ((mode == " " or mode == "SRS") and (FMGCInternal.phase == 0 or FMGCInternal.phase == 1)) {
 				if (mngktsmach) {
 					setprop("/FMGC/internal/mng-kts-mach", 0);
 				}
 				if (mng_spd_cmd != srsSPD) {
 					setprop("/FMGC/internal/mng-spd-cmd", srsSPD);
 				}
-			} else if ((FMGCInternal.FMGCInternal.phase == 2 or FMGCInternal.FMGCInternal.phase == 3) and altitude <= 10050) {
+			} else if ((FMGCInternal.phase == 2 or FMGCInternal.phase == 3) and altitude <= 10050) {
 				if (mngktsmach) {
 					setprop("/FMGC/internal/mng-kts-mach", 0);
 				}
@@ -939,35 +939,35 @@ var ManagedSPD = maketimer(0.25, func {
 				} else if (mng_spd_cmd != minspeed and decel) {
 					setprop("/FMGC/internal/mng-spd-cmd", minspeed);
 				}
-			} else if ((FMGCInternal.FMGCInternal.phase == 2 or FMGCInternal.FMGCInternal.phase == 3) and altitude > 10070 and !mach_switchover) {
+			} else if ((FMGCInternal.phase == 2 or FMGCInternal.phase == 3) and altitude > 10070 and !mach_switchover) {
 				if (mngktsmach) {
 					setprop("/FMGC/internal/mng-kts-mach", 0);
 				}
 				if (mng_spd_cmd != mng_alt_spd) {
 					setprop("/FMGC/internal/mng-spd-cmd", mng_alt_spd);
 				}
-			} else if ((FMGCInternal.FMGCInternal.phase == 2 or FMGCInternal.FMGCInternal.phase == 3) and altitude > 10070 and mach_switchover) {
+			} else if ((FMGCInternal.phase == 2 or FMGCInternal.phase == 3) and altitude > 10070 and mach_switchover) {
 				if (!mngktsmach) {
 					setprop("/FMGC/internal/mng-kts-mach", 1);
 				}
 				if (mng_spd_cmd != mng_alt_mach) {
 					setprop("/FMGC/internal/mng-spd-cmd", mng_alt_mach);
 				}
-			} else if (FMGCInternal.FMGCInternal.phase == 4 and altitude > 11000 and !mach_switchover) {
+			} else if (FMGCInternal.phase == 4 and altitude > 11000 and !mach_switchover) {
 				if (mngktsmach) {
 					setprop("/FMGC/internal/mng-kts-mach", 0);
 				}
 				if (mng_spd_cmd != mng_alt_spd) {
 					setprop("/FMGC/internal/mng-spd-cmd", mng_alt_spd);
 				}
-			} else if (FMGCInternal.FMGCInternal.phase == 4 and altitude > 11000 and mach_switchover) {
+			} else if (FMGCInternal.phase == 4 and altitude > 11000 and mach_switchover) {
 				if (!mngktsmach) {
 					setprop("/FMGC/internal/mng-kts-mach", 1);
 				}
 				if (mng_spd_cmd != mng_alt_mach) {
 					setprop("/FMGC/internal/mng-spd-cmd", mng_alt_mach);
 				}
-			} else if ((FMGCInternal.FMGCInternal.phase == 4 or FMGCInternal.FMGCInternal.phase == 5 or FMGCInternal.FMGCInternal.phase == 6) and altitude > 11000 and !mach_switchover) {
+			} else if ((FMGCInternal.phase == 4 or FMGCInternal.phase == 5 or FMGCInternal.phase == 6) and altitude > 11000 and !mach_switchover) {
 				if (mngktsmach) {
 					setprop("/FMGC/internal/mng-kts-mach", 0);
 				}
@@ -976,7 +976,7 @@ var ManagedSPD = maketimer(0.25, func {
 				} else if (mng_spd_cmd != minspeed and decel) {
 					setprop("/FMGC/internal/mng-spd-cmd", minspeed);
 				}
-			} else if ((FMGCInternal.FMGCInternal.phase == 4 or FMGCInternal.FMGCInternal.phase == 5 or FMGCInternal.FMGCInternal.phase == 6) and altitude <= 10980) {
+			} else if ((FMGCInternal.phase == 4 or FMGCInternal.phase == 5 or FMGCInternal.phase == 6) and altitude <= 10980) {
 				if (mngktsmach) {
 					setprop("/FMGC/internal/mng-kts-mach", 0);
 				}
@@ -1108,7 +1108,7 @@ setlistener("/FMGC/internal/fuel-calculating", func() {
 # Maketimers
 var timer30secLanding = maketimer(1, func() {
 	if (pts.Sim.Time.elapsedSec.getValue() > getprop("/FMGC/internal/landing-time") + 30) {
-		setprop("/FMGC/status/phase", 7);
+		fmgc.FMGCInternal.phase = 7;
 		if (FMGCInternal.costIndexSet) {
 			setprop("/FMGC/internal/last-cost-index", FMGCInternal.costIndex);
 		} else {
diff --git a/Nasal/MCDU/F-PLN.nas b/Nasal/MCDU/F-PLN.nas
index 27d87e1c..19f4d5c5 100644
--- a/Nasal/MCDU/F-PLN.nas
+++ b/Nasal/MCDU/F-PLN.nas
@@ -94,7 +94,7 @@ var fplnItem = {
 		return sprintf("%03.0f", math.round(me.trk));
 	},
 	getSpd: func() {
-		if (me.index == 0 and fmgc.FMGCInternal.v1set) {
+		if (me.index == 0 and left(me.wp.wp_name, 4) == fmgc.FMGCInternal.depApt and fmgc.FMGCInternal.v1set) {
 			return [sprintf("%3.0f", math.round(fmgc.FMGCInternal.v1)), "mag"];
 		} elsif (me.wp.speed_cstr != nil and me.wp.speed_cstr != 0) {
 			return [sprintf("%3.0f", me.wp.speed_cstr), "mag"];
diff --git a/Nasal/MCDU/PERFCLB.nas b/Nasal/MCDU/PERFCLB.nas
index e9f3b4bf..ee8d6536 100644
--- a/Nasal/MCDU/PERFCLB.nas
+++ b/Nasal/MCDU/PERFCLB.nas
@@ -37,7 +37,7 @@ var perfCLBInput = func(key, i) {
 			if (getprop("/FMGC/internal/activate-once") == 1) {
 				if (getprop("/FMGC/internal/activate-twice") == 0) {
 					setprop("/FMGC/internal/activate-twice", 1);
-					setprop("/FMGC/status/phase", 5);
+					fmgc.FMGCInternal.phase = 5;
 					setprop("/FMGC/internal/decel", 1);
 					setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
 				} else {
diff --git a/Nasal/MCDU/PERFCRZ.nas b/Nasal/MCDU/PERFCRZ.nas
index dbb003f8..5622cbb0 100644
--- a/Nasal/MCDU/PERFCRZ.nas
+++ b/Nasal/MCDU/PERFCRZ.nas
@@ -31,7 +31,7 @@ var perfCRZInput = func(key, i) {
 			if (getprop("/FMGC/internal/activate-once") == 1) {
 				if (getprop("/FMGC/internal/activate-twice") == 0) {
 					setprop("/FMGC/internal/activate-twice", 1);
-					setprop("/FMGC/status/phase", 5);
+					fmgc.FMGCInternal.phase = 5;
 					setprop("/FMGC/internal/decel", 1);
 					setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
 				} else {
diff --git a/Nasal/MCDU/PERFDES.nas b/Nasal/MCDU/PERFDES.nas
index ea5bb443..608850d2 100644
--- a/Nasal/MCDU/PERFDES.nas
+++ b/Nasal/MCDU/PERFDES.nas
@@ -31,7 +31,7 @@ var perfDESInput = func(key, i) {
 			if (getprop("/FMGC/internal/activate-once") == 1) {
 				if (getprop("/FMGC/internal/activate-twice") == 0) {
 					setprop("/FMGC/internal/activate-twice", 1);
-					setprop("/FMGC/status/phase", 5);
+					fmgc.FMGCInternal.phase = 5;
 					setprop("/FMGC/internal/decel", 1);
 					setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
 				} else {
diff --git a/Nasal/MCDU/PROGCLB.nas b/Nasal/MCDU/PROGCLB.nas
index 8319d135..66770ddd 100644
--- a/Nasal/MCDU/PROGCLB.nas
+++ b/Nasal/MCDU/PROGCLB.nas
@@ -6,7 +6,7 @@ var progCLBInput = func(key, i) {
 		if (scratchpad == "CLR") {
 			fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
 			if (fmgc.FMGCInternal.phase == 5) {
-				setprop("/FMGC/status/phase", 3);
+				fmgc.FMGCInternal.phase = 3;
 				setprop("/FMGC/internal/activate-once", 0);
 				setprop("/FMGC/internal/activate-twice", 0);
 				setprop("/FMGC/internal/decel", 0);
@@ -18,7 +18,7 @@ var progCLBInput = func(key, i) {
 				fmgc.FMGCInternal.crzProg = scratchpad;
 				mcdu_scratchpad.scratchpads[i].empty();
 				if (fmgc.FMGCInternal.phase == 5) {
-					setprop("/FMGC/status/phase", 3);
+					fmgc.FMGCInternal.phase = 3;
 					setprop("/FMGC/internal/activate-once", 0);
 					setprop("/FMGC/internal/activate-twice", 0);
 					setprop("/FMGC/internal/decel", 0);
diff --git a/Nasal/MCDU/PROGCRZ.nas b/Nasal/MCDU/PROGCRZ.nas
index 428344d5..7d188609 100644
--- a/Nasal/MCDU/PROGCRZ.nas
+++ b/Nasal/MCDU/PROGCRZ.nas
@@ -6,7 +6,7 @@ var progCRZInput = func(key, i) {
 		if (scratchpad == "CLR") {
 			fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
 			if (fmgc.FMGCInternal.phase == 5) {
-				setprop("/FMGC/status/phase", 3);
+				fmgc.FMGCInternal.phase = 3;
 				setprop("/FMGC/internal/activate-once", 0);
 				setprop("/FMGC/internal/activate-twice", 0);
 				setprop("/FMGC/internal/decel", 0);
@@ -18,7 +18,7 @@ var progCRZInput = func(key, i) {
 				fmgc.FMGCInternal.crzProg = scratchpad;
 				mcdu_scratchpad.scratchpads[i].empty();
 				if (fmgc.FMGCInternal.phase == 5) {
-					setprop("/FMGC/status/phase", 3);
+					fmgc.FMGCInternal.phase = 3;
 					setprop("/FMGC/internal/activate-once", 0);
 					setprop("/FMGC/internal/activate-twice", 0);
 					setprop("/FMGC/internal/decel", 0);
diff --git a/Nasal/MCDU/PROGDES.nas b/Nasal/MCDU/PROGDES.nas
index b81437f0..c915f35f 100644
--- a/Nasal/MCDU/PROGDES.nas
+++ b/Nasal/MCDU/PROGDES.nas
@@ -6,7 +6,7 @@ var progDESInput = func(key, i) {
 		if (scratchpad == "CLR") {
 			fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
 			if (fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
-				setprop("/FMGC/status/phase", 3);
+				fmgc.FMGCInternal.phase = 3;
 				setprop("/FMGC/internal/activate-once", 0);
 				setprop("/FMGC/internal/activate-twice", 0);
 				setprop("/FMGC/internal/decel", 0);
@@ -18,7 +18,7 @@ var progDESInput = func(key, i) {
 				fmgc.FMGCInternal.crzProg = scratchpad;
 				mcdu_scratchpad.scratchpads[i].empty();
 				if (fmgc.FMGCInternal.phase == 4 or fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
-					setprop("/FMGC/status/phase", 3);
+					fmgc.FMGCInternal.phase = 3;
 					setprop("/FMGC/internal/activate-once", 0);
 					setprop("/FMGC/internal/activate-twice", 0);
 					setprop("/FMGC/internal/decel", 0);