diff --git a/A320-100-CFM.xml b/A320-100-CFM.xml
index e79ddbcd..eeb5ebf1 100644
--- a/A320-100-CFM.xml
+++ b/A320-100-CFM.xml
@@ -160,7 +160,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
 		</tank>
 	</propulsion>
 	
-	<system file="glass-effect1"/>
+	<system file="glass-effect"/>
 	<system file="a320-fcs"/>
 	<system file="a320-fuel"/>
 	<system file="a320-fwc"/>
diff --git a/A320-200-CFM.xml b/A320-200-CFM.xml
index c731d0f4..b0a11a23 100644
--- a/A320-200-CFM.xml
+++ b/A320-200-CFM.xml
@@ -159,7 +159,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
 		</tank>
 	</propulsion>
 	
-	<system file="glass-effect1"/>
+	<system file="glass-effect"/>
 	<system file="a320-fcs"/>
 	<system file="a320-adr"/>
 	<system file="a320-fuel"/>
diff --git a/A320-200-IAE.xml b/A320-200-IAE.xml
index fd7dac96..872f5b88 100644
--- a/A320-200-IAE.xml
+++ b/A320-200-IAE.xml
@@ -159,7 +159,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
 		</tank>
 	</propulsion>
 	
-	<system file="glass-effect1"/>
+	<system file="glass-effect"/>
 	<system file="a320-fcs"/>
 	<system file="a320-fuel"/>
 	<system file="a320-fwc"/>
diff --git a/A320-main.xml b/A320-main.xml
index e71fd2dd..723e6698 100644
--- a/A320-main.xml
+++ b/A320-main.xml
@@ -45,7 +45,7 @@
 					<ice-inches>0.0</ice-inches>
 					<salvage-control>/controls/deice/windowprobeheat</salvage-control>
 					<sensitivity type="double">0.5</sensitivity>
-					<!-- not relevant for fdm, ignore output-property -->
+					<output-property>/environment/aircraft-effects/frost-level</output-property>
 				</iceable>
 				<iceable>
 					<name>Fuselage</name>
@@ -1676,6 +1676,33 @@
 					<script>libraries.resetView();</script>
 				</binding>
 			</key>
+			<key n="105">
+				<name>i</name>
+				<desc>Change view to lights</desc>
+				<repeatable type="bool">true</repeatable>
+				<binding>
+					<command>nasal</command>
+					<script>libraries.lightsView();</script>
+				</binding>
+			</key>
+			<key n="111">
+				<name>o</name>
+				<desc>Change view to overhead</desc>
+				<repeatable type="bool">true</repeatable>
+				<binding>
+					<command>nasal</command>
+					<script>libraries.overheadView();</script>
+				</binding>
+			</key>
+			<key n="117">
+				<name>u</name>
+				<desc>Change view to pedestal</desc>
+				<repeatable type="bool">true</repeatable>
+				<binding>
+					<command>nasal</command>
+					<script>libraries.pedestalView();</script>
+				</binding>
+			</key>
 			<key n="120">
 				<name>x</name>
 				<desc>Decrease field of view</desc>
@@ -1685,6 +1712,15 @@
 					<script>libraries.fovZoom(-1);</script>
 				</binding>
 			</key>
+			<key n="121">
+				<name>y</name>
+				<desc>Change view to autopilot</desc>
+				<repeatable type="bool">true</repeatable>
+				<binding>
+					<command>nasal</command>
+					<script>libraries.autopilotView();</script>
+				</binding>
+			</key>
 			<key n="127">
 				<name>DEL</name>
 				<desc>Simple Engage/Disengage reversers</desc>
@@ -1800,6 +1836,12 @@
 					<value>0</value>
 					<value>1</value>
 				</binding>
+				<binding>
+					<command>property-cycle</command>
+					<property>sim/rendering/als-secondary-lights/use-searchlight</property>
+					<value>0</value>
+					<value>1</value>
+				</binding>
 			</key>
 		</keyboard>
 	</input>
@@ -1926,6 +1968,9 @@
 			<file>Aircraft/A320-family/gui/dialogs/refuel.nas</file>
 			<file>Aircraft/A320-family/gui/dialogs/rmp.nas</file>
 		</Dialogs>
+		<save>
+			<file>Aircraft/A320-family/Nasal/Systems/save.nas</file>
+		</save>
 	</nasal>
 
 </PropertyList>
diff --git a/A320neo-CFM.xml b/A320neo-CFM.xml
index 67cb63e2..e19a453e 100644
--- a/A320neo-CFM.xml
+++ b/A320neo-CFM.xml
@@ -159,7 +159,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
 		</tank>
 	</propulsion>
 	
-	<system file="glass-effect1"/>
+	<system file="glass-effect"/>
 	<system file="a320-fcs"/>
 	<system file="a320-fuel"/>
 	<system file="a320-fwc"/>
diff --git a/A320neo-PW.xml b/A320neo-PW.xml
index 78827afc..7d3de32e 100644
--- a/A320neo-PW.xml
+++ b/A320neo-PW.xml
@@ -159,7 +159,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
 		</tank>
 	</propulsion>
 	
-	<system file="glass-effect1"/>
+	<system file="glass-effect"/>
 	<system file="a320-fcs"/>
 	<system file="a320-fuel"/>
 	<system file="a320-fwc"/>
diff --git a/AircraftConfig/acconfig.nas b/AircraftConfig/acconfig.nas
index ca215827..5f875208 100644
--- a/AircraftConfig/acconfig.nas
+++ b/AircraftConfig/acconfig.nas
@@ -96,6 +96,7 @@ setprop("systems/acconfig/options/weight-kgs", 0);
 setprop("systems/acconfig/options/adirs-skip", 0);
 setprop("systems/acconfig/options/welcome-skip", 0);
 setprop("systems/acconfig/options/no-rendering-warn", 0);
+setprop("systems/acconfig/options/save-state", 0);
 setprop("systems/acconfig/options/pfd-rate", 1);
 setprop("systems/acconfig/options/nd-rate", 1);
 setprop("systems/acconfig/options/uecam-rate", 1);
@@ -187,9 +188,17 @@ setlistener("/sim/signals/fdm-initialized", func {
 	}
 	setprop("systems/acconfig/options/revision", current_revision);
 	writeSettings();
+	if (getprop("options/system/save-state") == 1)
+	{
+		save.restore(save.default, getprop("/sim/fg-home") ~ "/Export/" ~ getprop("/sim/aircraft") ~ "-save.xml");
+	}
 	spinning.stop();
 });
 
+setlistener("/sim/signals/exit", func {
+	save.save(save.default, getprop("/sim/fg-home") ~ "/Export/" ~ getprop("/sim/aircraft") ~ "-save.xml");
+});
+
 var renderingSettings = {
 	check: func() {
 		var rembrandt = getprop("sim/rendering/rembrandt/enabled");
@@ -223,6 +232,7 @@ var readSettings = func {
 	io.read_properties(getprop("sim/fg-home") ~ "/Export/A320-family-config.xml", "/systems/acconfig/options");
 	setprop("options/system/keyboard-mode", getprop("systems/acconfig/options/keyboard-mode"));
 	setprop("options/system/weight-kgs", getprop("systems/acconfig/options/weight-kgs"));
+	setprop("options/system/save-state", getprop("systems/acconfig/options/save-state"));
 	setprop("controls/adirs/skip", getprop("systems/acconfig/options/adirs-skip"));
 	setprop("sim/model/autopush/route/show", getprop("systems/acconfig/options/autopush/show-route"));
 	setprop("sim/model/autopush/route/show-wingtip", getprop("systems/acconfig/options/autopush/show-wingtip"));
@@ -232,6 +242,7 @@ var readSettings = func {
 var writeSettings = func {
 	setprop("systems/acconfig/options/keyboard-mode", getprop("options/system/keyboard-mode"));
 	setprop("systems/acconfig/options/weight-kgs", getprop("options/system/weight-kgs"));
+	setprop("systems/acconfig/options/save-state", getprop("options/system/save-state"));
 	setprop("systems/acconfig/options/adirs-skip", getprop("controls/adirs/skip"));
 	setprop("systems/acconfig/options/autopush/show-route", getprop("sim/model/autopush/route/show"));
 	setprop("systems/acconfig/options/autopush/show-wingtip", getprop("sim/model/autopush/route/show-wingtip"));
diff --git a/AircraftConfig/main.xml b/AircraftConfig/main.xml
index 84620273..f3e266a1 100644
--- a/AircraftConfig/main.xml
+++ b/AircraftConfig/main.xml
@@ -426,6 +426,27 @@
 				</binding>
 				<live>true</live>
 			</checkbox>
+
+			<checkbox>
+				<!-- TODO there might be a better way to formulate this. -->
+				<label>Save states between sessions</label>
+				<halign>left</halign>
+				<property>/systems/acconfig/options/save-state</property>
+				<binding>
+					<command>property-toggle</command>
+					<property>/options/system/save-state</property>
+				</binding>
+				<binding>
+					<command>dialog-apply</command>
+				</binding>
+				<binding>
+					<command>nasal</command>
+					<script>
+					acconfig.writeSettings();
+					</script>
+				</binding>
+				<live>true</live>
+			</checkbox>
 			
 			<group>
 				<layout>hbox</layout>
diff --git a/Models/FlightDeck/res/0001.png b/Models/FlightDeck/res/0001.png
deleted file mode 100644
index 7576ebdb..00000000
Binary files a/Models/FlightDeck/res/0001.png and /dev/null differ
diff --git a/Models/FlightDeck/res/0002.png b/Models/FlightDeck/res/0002.png
deleted file mode 100644
index 0f12d744..00000000
Binary files a/Models/FlightDeck/res/0002.png and /dev/null differ
diff --git a/Models/FlightDeck/res/0003.png b/Models/FlightDeck/res/0003.png
deleted file mode 100644
index 22947c41..00000000
Binary files a/Models/FlightDeck/res/0003.png and /dev/null differ
diff --git a/Models/FlightDeck/res/0004.png b/Models/FlightDeck/res/0004.png
deleted file mode 100644
index f6b69c03..00000000
Binary files a/Models/FlightDeck/res/0004.png and /dev/null differ
diff --git a/Models/FlightDeck/res/0005.png b/Models/FlightDeck/res/0005.png
deleted file mode 100644
index f6b69c03..00000000
Binary files a/Models/FlightDeck/res/0005.png and /dev/null differ
diff --git a/Models/FlightDeck/res/0006.png b/Models/FlightDeck/res/0006.png
deleted file mode 100644
index f6b69c03..00000000
Binary files a/Models/FlightDeck/res/0006.png and /dev/null differ
diff --git a/Models/FlightDeck/res/ped_sw_1.png b/Models/FlightDeck/res/ped_sw_1.png
deleted file mode 100644
index 6ce04102..00000000
Binary files a/Models/FlightDeck/res/ped_sw_1.png and /dev/null differ
diff --git a/Models/FlightDeck/res/ped_sw_2.png b/Models/FlightDeck/res/ped_sw_2.png
deleted file mode 100644
index e2e6336a..00000000
Binary files a/Models/FlightDeck/res/ped_sw_2.png and /dev/null differ
diff --git a/Models/FlightDeck/res/ped_xtra.png b/Models/FlightDeck/res/ped_xtra.png
deleted file mode 100644
index 8ca5b7ff..00000000
Binary files a/Models/FlightDeck/res/ped_xtra.png and /dev/null differ
diff --git a/Models/Fuselages/A320-100/fuselage.xml b/Models/Fuselages/A320-100/fuselage.xml
index 4877bde7..3a74a144 100644
--- a/Models/Fuselages/A320-100/fuselage.xml
+++ b/Models/Fuselages/A320-100/fuselage.xml
@@ -14,7 +14,7 @@
     
 	<effect>
 		<inherits-from>Effects/glass</inherits-from>
-		<object-name>Windshield</object-name>
+		<object-name>Windsheild</object-name>
 		<object-name>Windows</object-name>
 		<object-name>glass</object-name>
 		<object-name>glass1</object-name>
diff --git a/Models/Fuselages/A320/fuselage.xml b/Models/Fuselages/A320/fuselage.xml
index 4877bde7..3a74a144 100644
--- a/Models/Fuselages/A320/fuselage.xml
+++ b/Models/Fuselages/A320/fuselage.xml
@@ -14,7 +14,7 @@
     
 	<effect>
 		<inherits-from>Effects/glass</inherits-from>
-		<object-name>Windshield</object-name>
+		<object-name>Windsheild</object-name>
 		<object-name>Windows</object-name>
 		<object-name>glass</object-name>
 		<object-name>glass1</object-name>
diff --git a/Models/Fuselages/A320neo/fuselage.xml b/Models/Fuselages/A320neo/fuselage.xml
index 4877bde7..3a74a144 100644
--- a/Models/Fuselages/A320neo/fuselage.xml
+++ b/Models/Fuselages/A320neo/fuselage.xml
@@ -14,7 +14,7 @@
     
 	<effect>
 		<inherits-from>Effects/glass</inherits-from>
-		<object-name>Windshield</object-name>
+		<object-name>Windsheild</object-name>
 		<object-name>Windows</object-name>
 		<object-name>glass</object-name>
 		<object-name>glass1</object-name>
diff --git a/Models/Instruments/ND/canvas/res/airbus_vor.old.svg b/Models/Instruments/ND/canvas/res/airbus_vor.old.svg
deleted file mode 100644
index 43b3ef98..00000000
--- a/Models/Instruments/ND/canvas/res/airbus_vor.old.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="50"
-   height="50"
-   id="svg3076"
-   version="1.1"
-   inkscape:version="0.48.2 r9819"
-   sodipodi:docname="airbus-vor.svg">
-  <metadata
-     id="metadata3092">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <defs
-     id="defs3090" />
-  <sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1248"
-     inkscape:window-height="703"
-     id="namedview3088"
-     showgrid="false"
-     inkscape:zoom="1.6619718"
-     inkscape:cx="-33.09322"
-     inkscape:cy="71"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="0"
-     inkscape:current-layer="svg3076" />
-  <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
-  <g
-     id="g3078" 
-     inkscape:groupmode="layer" 
-     transform="matrix(0.34013605,0,0,0.33783784,0.84746249,0.78240397)">
-    <title
-       id="title3080">Layer 1</title>
-    <g
-       id="svg_7">
-      <line
-         id="svg_3"
-         y2="71"
-         x2="142"
-         y1="71"
-         x1="112"
-         style="fill:none;stroke:#b00064;stroke-width:5" />
-      <circle
-         id="svg_2"
-         r="39.115215"
-         cy="71.5"
-         cx="71"
-         sodipodi:cx="71"
-         sodipodi:cy="71.5"
-         sodipodi:rx="39.115215"
-         sodipodi:ry="39.115215"
-         style="fill:none;stroke:#b00064;stroke-width:5"
-         d="m 110.11522,71.5 c 0,21.602737 -17.512483,39.11522 -39.11522,39.11522 -21.602737,0 -39.115215,-17.512483 -39.115215,-39.11522 0,-21.602737 17.512478,-39.115215 39.115215,-39.115215 21.602737,0 39.11522,17.512478 39.11522,39.115215 z" />
-      <line
-         id="svg_4"
-         y2="71"
-         x2="30"
-         y1="71"
-         x1="0"
-         style="fill:none;stroke:#b00064;stroke-width:5" />
-      <line
-         transform="matrix(0,1,-1,0,198,58)"
-         id="svg_5"
-         y2="128"
-         x2="85"
-         y1="128"
-         x1="55"
-         style="fill:none;stroke:#b00064;stroke-width:5" />
-      <line
-         id="svg_6"
-         transform="matrix(0,1,-1,0,85,-55)"
-         y2="15"
-         x2="85"
-         y1="15"
-         x1="55"
-         style="fill:none;stroke:#b00064;stroke-width:5" />
-    </g>
-  </g>
-</svg>
diff --git a/Models/Instruments/ND/res/A320neo_symbols.png b/Models/Instruments/ND/res/A320neo_symbols.png
deleted file mode 100644
index ca6e434b..00000000
Binary files a/Models/Instruments/ND/res/A320neo_symbols.png and /dev/null differ
diff --git a/Models/Instruments/ND/res/Main_Displays.png b/Models/Instruments/ND/res/Main_Displays.png
deleted file mode 100644
index a881fd18..00000000
Binary files a/Models/Instruments/ND/res/Main_Displays.png and /dev/null differ
diff --git a/Models/Instruments/ND/res/airbus_symbols.png b/Models/Instruments/ND/res/airbus_symbols.png
deleted file mode 100644
index 41a1c584..00000000
Binary files a/Models/Instruments/ND/res/airbus_symbols.png and /dev/null differ
diff --git a/Models/Instruments/ND/res/hsi2a.png b/Models/Instruments/ND/res/hsi2a.png
deleted file mode 100644
index 633ff531..00000000
Binary files a/Models/Instruments/ND/res/hsi2a.png and /dev/null differ
diff --git a/Models/Instruments/ND/res/hsiarc.png b/Models/Instruments/ND/res/hsiarc.png
deleted file mode 100644
index 2c410ed8..00000000
Binary files a/Models/Instruments/ND/res/hsiarc.png and /dev/null differ
diff --git a/Models/Instruments/ND/res/mask.png b/Models/Instruments/ND/res/mask.png
deleted file mode 100644
index 74bad34d..00000000
Binary files a/Models/Instruments/ND/res/mask.png and /dev/null differ
diff --git a/Models/Instruments/ND/res/maskfull.png b/Models/Instruments/ND/res/maskfull.png
deleted file mode 100644
index ed8892c3..00000000
Binary files a/Models/Instruments/ND/res/maskfull.png and /dev/null differ
diff --git a/Models/Instruments/ND/res/od_wxradar.png b/Models/Instruments/ND/res/od_wxradar.png
deleted file mode 100644
index 159304c1..00000000
Binary files a/Models/Instruments/ND/res/od_wxradar.png and /dev/null differ
diff --git a/Models/Instruments/ND/res/symbols.png b/Models/Instruments/ND/res/symbols.png
deleted file mode 100644
index 7f663882..00000000
Binary files a/Models/Instruments/ND/res/symbols.png and /dev/null differ
diff --git a/Models/Instruments/PFD/PFD.nas b/Models/Instruments/PFD/PFD.nas
index 6bbfacdd..c76c2b2a 100644
--- a/Models/Instruments/PFD/PFD.nas
+++ b/Models/Instruments/PFD/PFD.nas
@@ -1261,9 +1261,6 @@ var canvas_PFD_1 = {
 				}
 				
 				tgt_flap = 200;
-				if (ind_spd >= 210) {
-					tgt_flap = 215;
-				}
 				me.flaptrgt = tgt_flap - 30 - me.ASI;
 				
 				me.SPDflaptrgtdiff = tgt_flap - ind_spd;
@@ -1881,9 +1878,6 @@ var canvas_PFD_2 = {
 				}
 				
 				tgt_flap = 200;
-				if (ind_spd >= 210) {
-					tgt_flap = 215;
-				}
 				me.flaptrgt = tgt_flap - 30 - me.ASI;
 				
 				me.SPDflaptrgtdiff = tgt_flap - ind_spd;
diff --git a/Models/LandingGears/a320.mlg.left.xml b/Models/LandingGears/a320.mlg.left.xml
index 26fad8f5..22709509 100644
--- a/Models/LandingGears/a320.mlg.left.xml
+++ b/Models/LandingGears/a320.mlg.left.xml
@@ -112,7 +112,7 @@
 		<object-name>ACTUTATOR</object-name>
 		<object-name>Main Tires</object-name>
 		<object-name>Compression lower scissor</object-name>
-		<property>gear/gear[1]/compression-ft</property>
+		<property>gear/gear[1]/compression-norm</property>
 		<factor>0.305</factor>
 		<axis>
 			<x1-m>0</x1-m>
diff --git a/Models/LandingGears/a320.mlg.right.xml b/Models/LandingGears/a320.mlg.right.xml
index 0dab8028..c225ccf8 100644
--- a/Models/LandingGears/a320.mlg.right.xml
+++ b/Models/LandingGears/a320.mlg.right.xml
@@ -112,7 +112,7 @@
 		<object-name>ACTUTATOR</object-name>
 		<object-name>Main Tires</object-name>
 		<object-name>Compression lower scissor</object-name>
-		<property>gear/gear[2]/compression-ft</property>
+		<property>gear/gear[2]/compression-norm</property>
 		<factor>0.305</factor>
 		<axis>
 			<x1-m>0</x1-m>
diff --git a/Models/LandingGears/a320.nlg.xml b/Models/LandingGears/a320.nlg.xml
index 9f57dd4f..db90103d 100644
--- a/Models/LandingGears/a320.nlg.xml
+++ b/Models/LandingGears/a320.nlg.xml
@@ -112,7 +112,7 @@
 		<object-name>AXLE</object-name>
 		<object-name>Nose Tires</object-name>
 		<object-name>Compression lower scissor</object-name>
-		<property>gear/gear[0]/compression-ft</property>
+		<property>gear/gear[0]/compression-norm</property>
 		<factor>0.305</factor>
 		<axis>
 			<x1-m>-0.366</x1-m>
diff --git a/Nasal/Sim/libraries.nas b/Nasal/Sim/libraries.nas
index 6995097d..251f2ff0 100644
--- a/Nasal/Sim/libraries.nas
+++ b/Nasal/Sim/libraries.nas
@@ -731,9 +731,125 @@ var resetView = func() {
 		}
 		
 		interpolate("sim/current-view/field-of-view", 63, 0.66);
-		interpolate("sim/current-view/heading-offset-deg", hd_t,0.66);
-		interpolate("sim/current-view/pitch-offset-deg", -14.6,0.66);
+		interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
+		interpolate("sim/current-view/pitch-offset-deg", -14.6, 0.66);
+		interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
+		interpolate("sim/current-view/x-offset-m", -0.45, 0.66); 
+		interpolate("sim/current-view/y-offset-m", 2.34, 0.66); 
+		interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
+		
+		if (_shakeFlag) {
+			setprop("sim/rendering/headshake/enabled", 1);
+		}
+	} 
+}
+
+var autopilotView = func() {
+	if (getprop("sim/current-view/view-number") == 0) {
+		if (getprop("sim/rendering/headshake/enabled")) {
+			var _shakeFlag = 1;
+			setprop("sim/rendering/headshake/enabled", 0);
+		} else {
+			var _shakeFlag = 0;
+		}
+		
+		var hd = getprop("sim/current-view/heading-offset-deg");
+		var hd_t = 341.7;
+		if (hd < 180) {
+		  hd_t = hd_t - 360;
+		}
+		
+		interpolate("sim/current-view/field-of-view", 63, 0.66);
+		interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
+		interpolate("sim/current-view/pitch-offset-deg", -16.4, 0.66);
+		interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
+		interpolate("sim/current-view/x-offset-m", -0.45, 0.66); 
+		interpolate("sim/current-view/y-offset-m", 2.34, 0.66); 
+		interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
+		
+		if (_shakeFlag) {
+			setprop("sim/rendering/headshake/enabled", 1);
+		}
+	} 
+}
+
+var overheadView = func() {
+	if (getprop("sim/current-view/view-number") == 0) {
+		if (getprop("sim/rendering/headshake/enabled")) {
+			var _shakeFlag = 1;
+			setprop("sim/rendering/headshake/enabled", 0);
+		} else {
+			var _shakeFlag = 0;
+		}
+		
+		var hd = getprop("sim/current-view/heading-offset-deg");
+		var hd_t = 348;
+		if (hd < 180) {
+		  hd_t = hd_t - 360;
+		}
+		
+		interpolate("sim/current-view/field-of-view", 105.8, 0.66);
+		interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
+		interpolate("sim/current-view/pitch-offset-deg", 65.25, 0.66);
 		interpolate("sim/current-view/roll-offset-deg", 0,0.66);
+		interpolate("sim/current-view/x-offset-m", -0.12, 0.66); 
+		interpolate("sim/current-view/y-offset-m", 2.34, 0.66); 
+		interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
+		
+		if (_shakeFlag) {
+			setprop("sim/rendering/headshake/enabled", 1);
+		}
+	} 
+}
+
+var pedestalView = func() {
+	if (getprop("sim/current-view/view-number") == 0) {
+		if (getprop("sim/rendering/headshake/enabled")) {
+			var _shakeFlag = 1;
+			setprop("sim/rendering/headshake/enabled", 0);
+		} else {
+			var _shakeFlag = 0;
+		}
+		
+		var hd = getprop("sim/current-view/heading-offset-deg");
+		var hd_t = 315;
+		if (hd < 180) {
+		  hd_t = hd_t - 360;
+		}
+		
+		interpolate("sim/current-view/field-of-view", 63, 0.66);
+		interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
+		interpolate("sim/current-view/pitch-offset-deg", -46.3, 0.66);
+		interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
+		interpolate("sim/current-view/x-offset-m", -0.45, 0.66); 
+		interpolate("sim/current-view/y-offset-m", 2.34, 0.66); 
+		interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
+		
+		if (_shakeFlag) {
+			setprop("sim/rendering/headshake/enabled", 1);
+		}
+	} 
+}
+
+var lightsView = func() {
+	if (getprop("sim/current-view/view-number") == 0) {
+		if (getprop("sim/rendering/headshake/enabled")) {
+			var _shakeFlag = 1;
+			setprop("sim/rendering/headshake/enabled", 0);
+		} else {
+			var _shakeFlag = 0;
+		}
+		
+		var hd = getprop("sim/current-view/heading-offset-deg");
+		var hd_t = 329;
+		if (hd < 180) {
+		  hd_t = hd_t - 360;
+		}
+		
+		interpolate("sim/current-view/field-of-view", 63, 0.66);
+		interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
+		interpolate("sim/current-view/pitch-offset-deg", 17.533, 0.66);
+		interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
 		interpolate("sim/current-view/x-offset-m", -0.45, 0.66); 
 		interpolate("sim/current-view/y-offset-m", 2.34, 0.66); 
 		interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
diff --git a/Nasal/Systems/icing.nas b/Nasal/Systems/icing.nas
index 9ffffad4..35262a8e 100644
--- a/Nasal/Systems/icing.nas
+++ b/Nasal/Systems/icing.nas
@@ -3,17 +3,100 @@
 
 # Copyright (c) 2019 Joshua Davidson (Octal450)
 
-var dewpoint = 0;
-var temperature = 0;
-var speed = 0;
-var visibility = 0;
-var visibLclWx = 0;
-var severity = 0;
-var factor = 0;
+
+### Ice sensitive components definition.
+var Iceable = {
+	new: func(node) {
+		var m = { parents: [Iceable] };
+		m.ice_inches = node.getNode("ice-inches", 1);
+		m.sensitivity = node.getNode("sensitivity", 1);
+
+		var deice_prop = node.getValue("salvage-control");
+		m.deice = deice_prop ? props.globals.getNode(deice_prop, 1) : nil;
+		var output_prop = node.getValue("output-property");
+		m.output = output_prop ? props.globals.getNode(output_prop, 1): nil;
+
+		return m;
+	},
+
+	update: func(factor, melt) {
+		var icing = me.ice_inches.getValue();
+		if(me.deice != nil and me.deice.getBoolValue()) {
+			icing += melt;
+		} else {
+			icing += factor * me.sensitivity.getValue();
+		}
+		if(icing < 0) icing = 0;
+
+		me.ice_inches.setValue(icing);
+		if(me.output != nil) me.output.setValue(icing);
+	},
+};
+
+
+### Icing parameters computation.
+# Environmental parameters of the icing model.
+var environment = {
+	dewpoint: props.globals.getNode("environment/dewpoint-degc"),
+	temperature: props.globals.getNode("environment/temperature-degc"),
+	visibility: props.globals.getNode("environment/effective-visibility-m"),
+	visibLclWx: props.globals.getNode("environment/visibility-m"),
+};
+
+var effects = {
+	frost_inch: props.globals.getNode("environment/aircraft-effects/frost-inch", 1),
+	frost_norm: props.globals.getNode("environment/aircraft-effects/frost-level"),
+};
+
+
+# Icing factor computation.
 var maxSpread = 0;
-var icingCond = 0;
+
+var severity_factor_table = [
+	-0.00000166,
+	0.00000277,
+	0.00000277,
+	0.00000554,
+	0.00001108,
+	0.00002216,
+];
+
+var melt_factor = -0.00005;
+
+var icing_factor = func() {
+	var temperature = environment.temperature.getValue();
+	var dewpoint = environment.dewpoint.getValue();
+	var visibility = environment.visibility.getValue();
+	var visibLclWx = environment.visibLclWx.getValue();
+
+	# Do we create ice?
+	var spread = temperature - dewpoint;
+	# freezing fog or low temp and below dp or in advanced wx cloud
+	var icingCond = ((spread < maxSpread or visibility < 1000 or visibLclWx < 5000)
+					 and temperature < 0);
+
+	# todo: turn this into a table or something
+	var severity = 0;
+	if (icingCond) {
+		if (temperature >= -2) {
+			severity = 1;
+		} else if (temperature >= -12) {
+			severity = 3;
+		} else if (temperature >= -30) {
+			severity = 5;
+		} else if (temperature >= -40) {
+			severity = 3;
+		} else if (temperature >= -99) {
+			severity = 1;
+		}
+	}
+
+	return severity_factor_table[severity];
+}
+
+
+var speed = 0;
 var pause = 0;
-var melt = 0;
 var windowprobe = 0;
 var wingBtn = 0;
 var wingFault = 0;
@@ -31,40 +114,13 @@ var lengAnti = 0;
 var rengAnti = 0;
 var WingHasBeenTurnedOff = 0;
 var GroundModeFinished = 0;
-var icing1 = 0;
-var sensitive1 = 0;
-var v = 0;
-var a = 0;
-var icing2 = 0;
-var sensitive2 = 0;
-var u = 0;
-var b = 0;
-var icing3 = 0;
-var sensitive3 = 0;
-var t = 0;
-var c = 0;
-var icing4 = 0;
-var sensitive4 = 0;
-var s = 0;
-var d = 0;
-var icing5 = 0;
-var sensitive5 = 0;
-var r = 0;
-var icing6 = 0;
-var sensitive6 = 0;
-var q = 0;
-var e = 0;
-var spread = 0;
 var windowprb = 0;
 var stateL = 0;
 var stateR = 0;
 
+var iceables = [];
+
 var icingInit = func {
-	setprop("systems/icing/severity", "0"); # maximum severity: we will make it random
-	setprop("systems/icing/factor", 0.0); # the factor is how many inches we add per second
-	setprop("systems/icing/max-spread-degc", 0.0);
-	setprop("systems/icing/melt-w-heat-factor", -0.00005000);
-	setprop("systems/icing/icingcond", 0);
 	setprop("controls/switches/windowprobeheat", 0);
 	setprop("controls/switches/wing", 0);
 	setprop("controls/switches/wingfault", 0);
@@ -80,21 +136,18 @@ var icingInit = func {
 	setprop("systems/pitot/failed", 1);
 	setprop("controls/deice/WingHasBeenTurnedOff", 0);
 	setprop("controls/deice/GroundModeFinished", 0);
+
+	iceables = props.globals.getNode("sim/model/icing", 1).getChildren("iceable");
+	forindex(var i; iceables) {
+		iceables[i] = Iceable.new(iceables[i]);
+	}
+
 	icing_timer.start();
 }
 
 var icingModel = func {
-	dewpoint = getprop("environment/dewpoint-degc");
-	temperature = getprop("environment/temperature-degc");
 	speed = getprop("velocities/airspeed-kt");
-	visibility = getprop("environment/effective-visibility-m");
-	visibLclWx = getprop("environment/visibility-m");
-	severity = getprop("systems/icing/severity");
-	factor = getprop("systems/icing/factor");
-	maxSpread = getprop("systems/icing/max-spread-degc");
-	icingCond = getprop("systems/icing/icingcond");
 	pause = getprop("sim/freeze/master");
-	melt = getprop("systems/icing/melt-w-heat-factor");
 	windowprobe = getprop("controls/deice/windowprobeheat");
 	wingBtn = getprop("controls/switches/wing");
 	wingFault = getprop("controls/switches/wingfault");
@@ -112,104 +165,19 @@ var icingModel = func {
 	rengAnti = getprop("controls/deice/rengine");
 	WingHasBeenTurnedOff = getprop("controls/deice/WingHasBeenTurnedOff");
 	GroundModeFinished = getprop("controls/deice/GroundModeFinished");
-	
-	if (temperature >= 0 or !icingCond) {
-		setprop("systems/icing/severity", "0");
-	} else if (temperature < 0 and temperature >= -2 and icingCond) {
-		setprop("systems/icing/severity", "1");
-	} else if (temperature < -2 and temperature >= -12 and icingCond) {
-		setprop("systems/icing/severity", "3");
-	} else if (temperature < -12 and temperature >= -30 and icingCond) {
-		setprop("systems/icing/severity", "5");
-	} else if (temperature < -30 and temperature >= -40 and icingCond) {
-		setprop("systems/icing/severity", "3");
-	} else if (temperature < -40 and temperature >= -99 and icingCond) {
-		setprop("systems/icing/severity", "1");
-	}
-	
-	icing1 = getprop("sim/model/icing/iceable[0]/ice-inches");
-	sensitive1 = getprop("sim/model/icing/iceable[0]/sensitivity");
-	v = icing1 + (factor * sensitive1);
-	a = icing1 + melt;
-	if (icing1 < 0.0 and !pause) {
-		setprop("sim/model/icing/iceable[0]/ice-inches", 0.0);
-	} else if (wingAnti) {
-		setprop("sim/model/icing/iceable[0]/ice-inches", a);
-	} else if (!pause and !wingAnti) {
-		setprop("sim/model/icing/iceable[0]/ice-inches", v);
-	}
-	
-	icing2 = getprop("sim/model/icing/iceable[1]/ice-inches");
-	sensitive2 = getprop("sim/model/icing/iceable[1]/sensitivity");
-	u = icing2 + (factor * sensitive2);
-	b = icing2 + melt;
-	if (icing2 < 0.0 and !pause) {
-		setprop("sim/model/icing/iceable[1]/ice-inches", 0.0);
-	} else if (lengAnti) {
-		setprop("sim/model/icing/iceable[1]/ice-inches", b);
-	} else if (!pause and !lengAnti) {
-		setprop("sim/model/icing/iceable[1]/ice-inches", u);
-	}
-	
-	icing3 = getprop("sim/model/icing/iceable[2]/ice-inches");
-	sensitive3 = getprop("sim/model/icing/iceable[2]/sensitivity");
-	t = icing3 + (factor * sensitive3);
-	c = icing3 + melt;
-	if (icing3 < 0.0 and !pause) {
-		setprop("sim/model/icing/iceable[2]/ice-inches", 0.0);
-	} else if (rengAnti) {
-		setprop("sim/model/icing/iceable[2]/ice-inches", c);
-	} else if (!pause and !rengAnti) {
-		setprop("sim/model/icing/iceable[2]/ice-inches", t);
-	}
-	
-	icing4 = getprop("sim/model/icing/iceable[3]/ice-inches");
-	sensitive4 = getprop("sim/model/icing/iceable[3]/sensitivity");
-	s = icing4 + (factor * sensitive4);
-	d = icing4 + melt;
-	if (icing4 < 0.0 and !pause) {
-		setprop("sim/model/icing/iceable[3]/ice-inches", 0.0);
-	} else if (windowprobe) {
-		setprop("sim/model/icing/iceable[3]/ice-inches", d);
-	} else if (!pause and !windowprobe) {
-		setprop("sim/model/icing/iceable[3]/ice-inches", s);
-	}
-	
-	icing5 = getprop("sim/model/icing/iceable[4]/ice-inches");
-	sensitive5 = getprop("sim/model/icing/iceable[4]/sensitivity");
-	r = icing5 + (factor * sensitive5);
-	if (icing5 < 0.0 and !pause) {
-		setprop("sim/model/icing/iceable[4]/ice-inches", 0.0);
-	} else if (!pause) {
-		setprop("sim/model/icing/iceable[4]/ice-inches", r);
-	}
-	
-	icing6 = getprop("sim/model/icing/iceable[5]/ice-inches");
-	sensitive6 = getprop("sim/model/icing/iceable[5]/sensitivity");
-	q = icing6 + (factor * sensitive6);
-	e = icing6 + melt;
-	if (icing6 < 0.0 and !pause) {
-		setprop("sim/model/icing/iceable[5]/ice-inches", 0.0);
-	} else if (windowprobe) {
-		setprop("sim/model/icing/iceable[5]/ice-inches", e);
-	} else if (!pause and !windowprobe) {
-		setprop("sim/model/icing/iceable[5]/ice-inches", q);
-	}
-	
-	# Do we create ice?
-	spread = temperature - dewpoint;
-	# freezing fog or low temp and below dp or in advanced wx cloud
-	if ((spread < maxSpread and temperature < 0) or (temperature < 0 and visibility < 1000) or (visibLclWx < 5000 and temperature < 0)) { 
-		setprop("systems/icing/icingcond", 1);
-	} else {
-		setprop("systems/icing/icingcond", 0);
+
+	var factor = icing_factor();
+	foreach(iceable; iceables) {
+		iceable.update(factor, melt_factor);
 	}
+
+	effects.frost_norm.setDoubleValue(effects.frost_inch.getValue() * 50);
 	
 	if (WingHasBeenTurnedOff and !wowl and !wowr and GroundModeFinished) {
 		setprop("controls/deice/wing", 1);
 		setprop("controls/switches/WingHasBeenTurnedOff", 0);
 	}
-		
+
 	# If we have low pressure we have a fault
 	if (PSI < 10) {
 		setprop("controls/switches/wingfault", 1);
@@ -232,7 +200,7 @@ var icingModel = func {
 			setprop("systems/pitot/failed", 0);
 		}
 	}
-	
+
 	# if ((getprop("systems/electrical/bus/dc-1") == 0 or getprop("systems/electrical/bus/dc-2") == 0) and getprop("fdm/jsbsim/position/wow") == 0) {
 	#	setprop("controls/switches/leng", 1);
 	#	setprop("controls/switches/reng", 1);
@@ -364,3 +332,4 @@ var update_Icing = func {
 }
 
 var icing_timer = maketimer(0.2, update_Icing);
+icing_timer.simulatedTime = 1;
diff --git a/Nasal/Systems/save.nas b/Nasal/Systems/save.nas
new file mode 100644
index 00000000..f91cf4f2
--- /dev/null
+++ b/Nasal/Systems/save.nas
@@ -0,0 +1,74 @@
+# Copyright (C) 2020 Merspieler, merspieler _at_ airmail.cc
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+# Save and restore properties between sessions
+
+# To add more properties to autosave, just add them here.
+var default = [
+	# CONSUMABLES
+	# Fuel
+	"/consumables/fuel/tank[0]/level-lbs",
+	"/consumables/fuel/tank[1]/level-lbs",
+	"/consumables/fuel/tank[2]/level-lbs",
+	"/consumables/fuel/tank[3]/level-lbs",
+	"/consumables/fuel/tank[4]/level-lbs",
+	# CONTROLS
+	# rmp
+	"/controls/radio/rmp[0]/on",
+	"/controls/radio/rmp[1]/on",
+	"/controls/radio/rmp[2]/on",
+	# efis
+	"/instrumentation/efis[0]/inputs/range-nm",
+	"/instrumentation/efis[0]/nd/display-mode",
+	"/instrumentation/efis[0]/input/lh-vor-adf",
+	"/instrumentation/efis[0]/input/rh-vor-adf",
+	"/instrumentation/efis[1]/inputs/range-nm",
+	"/instrumentation/efis[1]/nd/display-mode",
+	"/instrumentation/efis[1]/input/lh-vor-adf",
+	"/instrumentation/efis[1]/input/rh-vor-adf",
+	# parking brake
+	"/controls/gear/brake-parking"
+];
+
+var save = func (saved_props, file) {
+	print("Saving state...");
+	for (var i = 0; i < size(saved_props); i += 1)
+	{
+		setprop("/save" ~ saved_props[i], getprop(saved_props[i]));
+	}
+
+	var saveNode = props.globals.getNode("/save", 0);
+
+	io.write_properties(file, saveNode);
+	print("State saved");
+}
+
+var restore = func (saved_props, file) {
+	print("Loading saved state...");
+	var readNode = props.globals.initNode("/save", );
+
+	io.read_properties(file, readNode);
+
+	for (var i = 0; i < size(saved_props); i += 1)
+	{
+		var val = getprop("/save" ~ saved_props[i]);
+		if (val != nil)
+		{
+			setprop(saved_props[i], val);
+		}
+	}
+	print("Saved state loaded");
+}
diff --git a/Sounds/GPWS/500-above.wav b/Sounds/GPWS/500-above.wav
deleted file mode 100644
index a0b40540..00000000
Binary files a/Sounds/GPWS/500-above.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-10.wav b/Sounds/GPWS/altitude-10.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-10.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-100.wav b/Sounds/GPWS/altitude-100.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-100.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-1000.wav b/Sounds/GPWS/altitude-1000.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-1000.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-20.wav b/Sounds/GPWS/altitude-20.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-20.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-200.wav b/Sounds/GPWS/altitude-200.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-200.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-30.wav b/Sounds/GPWS/altitude-30.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-30.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-300.wav b/Sounds/GPWS/altitude-300.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-300.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-40.wav b/Sounds/GPWS/altitude-40.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-40.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-400.wav b/Sounds/GPWS/altitude-400.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-400.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-50.wav b/Sounds/GPWS/altitude-50.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-50.wav and /dev/null differ
diff --git a/Sounds/GPWS/altitude-500.wav b/Sounds/GPWS/altitude-500.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/altitude-500.wav and /dev/null differ
diff --git a/Sounds/GPWS/application-data-base-failed.wav b/Sounds/GPWS/application-data-base-failed.wav
deleted file mode 100644
index b7c57ae7..00000000
Binary files a/Sounds/GPWS/application-data-base-failed.wav and /dev/null differ
diff --git a/Sounds/GPWS/bank-angle-inop.wav b/Sounds/GPWS/bank-angle-inop.wav
deleted file mode 100644
index 0c4c8bac..00000000
Binary files a/Sounds/GPWS/bank-angle-inop.wav and /dev/null differ
diff --git a/Sounds/GPWS/bank-angle.wav b/Sounds/GPWS/bank-angle.wav
deleted file mode 100644
index 8dbde954..00000000
Binary files a/Sounds/GPWS/bank-angle.wav and /dev/null differ
diff --git a/Sounds/GPWS/callouts-inop.wav b/Sounds/GPWS/callouts-inop.wav
deleted file mode 100644
index 47e2ceeb..00000000
Binary files a/Sounds/GPWS/callouts-inop.wav and /dev/null differ
diff --git a/Sounds/GPWS/configuration-type-invalid.wav b/Sounds/GPWS/configuration-type-invalid.wav
deleted file mode 100644
index 3dfa69ab..00000000
Binary files a/Sounds/GPWS/configuration-type-invalid.wav and /dev/null differ
diff --git a/Sounds/GPWS/glideslope-inop.wav b/Sounds/GPWS/glideslope-inop.wav
deleted file mode 100644
index 0840c4ba..00000000
Binary files a/Sounds/GPWS/glideslope-inop.wav and /dev/null differ
diff --git a/Sounds/GPWS/gpws-inop.wav b/Sounds/GPWS/gpws-inop.wav
deleted file mode 100644
index 54b78da4..00000000
Binary files a/Sounds/GPWS/gpws-inop.wav and /dev/null differ
diff --git a/Sounds/GPWS/minimums.wav b/Sounds/GPWS/minimums.wav
deleted file mode 100644
index 59c8e62a..00000000
Binary files a/Sounds/GPWS/minimums.wav and /dev/null differ
diff --git a/Systems/glass-effect.xml b/Systems/glass-effect.xml
new file mode 100644
index 00000000..4022bc78
--- /dev/null
+++ b/Systems/glass-effect.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+
+<!-- Copyright (c) 2019 Joshua Davidson (Octal450) -->
+
+<system name="glass-effect">
+    <channel name="rain">
+        <fcs_function name="glass-effects/splashx">
+            <function>
+                <table>
+                    <independentVar>velocities/u-aero-fps</independentVar>
+                    <tableData>
+                        0   0.01
+                        7   0.01
+                        8   -0.01
+                        25  -0.5
+                        50  -1.2
+                        120 -2
+                    </tableData>
+                </table>
+            </function>
+            <output>/environment/aircraft-effects/splash-vector-x</output>
+        </fcs_function>
+
+        <fcs_function name="glass-effects/splashy">
+            <function>
+                <table>
+                    <independentVar>velocities/v-aero-fps</independentVar>
+                    <tableData>
+                        -25 -0.1
+                        -8  0
+                        8   0
+                        25  0.1
+                    </tableData>
+                </table>
+            </function>
+            <output>/environment/aircraft-effects/splash-vector-y</output>
+        </fcs_function>
+
+        <fcs_function name="glass-effects/splashz">
+            <function>
+                <table>
+                    <independentVar>velocities/u-aero-fps</independentVar>
+                    <tableData>
+                        0   1.2
+                        7   1.2
+                        8   0.9
+                        25  0.9
+                        50  -0.2
+                        120 -0.5
+                    </tableData>
+                </table>
+            </function>
+            <output>/environment/aircraft-effects/splash-vector-z</output>
+        </fcs_function>
+    </channel>
+</system>
diff --git a/Systems/glass-effect1.xml b/Systems/glass-effect1.xml
deleted file mode 100644
index 654426e3..00000000
--- a/Systems/glass-effect1.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Copyright (c) 2019 Joshua Davidson (Octal450) -->
-
-<system name="glass-effect1">
-
-    <channel name="rain">
-
-        <fcs_function name="glass-effects/airspeed-clamped-sqrt">
-            <function>
-                <sqrt>
-                    <quotient>
-                        <min>
-                            <property>/velocities/airspeed-kt</property>
-                            <value>40</value>
-                        </min>
-                        <value>40</value>
-                    </quotient>
-                </sqrt>
-            </function>
-        </fcs_function>
-
-        <fcs_function name="glass-effects/splashx">
-            <function>
-                <difference>
-                    <value>-0.1</value>
-                    <product>
-                        <value>2.0</value>
-                        <property>/fdm/jsbsim/glass-effects/airspeed-clamped-sqrt</property>
-                    </product>
-                </difference>
-            </function>
-            <output>/environment/aircraft-effects/splash-vector-x</output>
-        </fcs_function>
-
-        <fcs_function name="glass-effects/splashy">
-            <function>
-               <value>0.0</value>
-            </function>
-            <output>/environment/aircraft-effects/splash-vector-y</output>
-        </fcs_function>
-
-        <fcs_function name="glass-effects/splashz">
-            <function>
-                <difference>
-                    <value>1.0</value>
-                    <product>
-                        <value>1.35</value>
-                        <property>/fdm/jsbsim/glass-effects/airspeed-clamped-sqrt</property>
-                    </product>
-                </difference>
-            </function>
-            <output>/environment/aircraft-effects/splash-vector-z</output>
-        </fcs_function>
-
-    </channel>
-
-</system>
diff --git a/Systems/glass-effect2.xml b/Systems/glass-effect2.xml
deleted file mode 100644
index aea5dfbb..00000000
--- a/Systems/glass-effect2.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- Copyright (c) 2019 Joshua Davidson (Octal450) -->
-
-<PropertyList>
-
-    <filter>
-        <name>splashX</name>
-        <type>gain</type>
-        <input>
-            <property>/fdm/jsbsim/glass-effects/splashx</property>
-        </input>
-        <output>
-            <property>/environment/aircraft-effects/splash-vector-x</property>
-        </output>
-    </filter>
-
-    <filter>
-        <name>splashY</name>
-        <type>gain</type>
-        <input>
-            <value>0.0</value>
-        </input>
-        <output>
-            <property>/environment/aircraft-effects/splash-vector-y</property>
-        </output>
-    </filter>
-
-    <filter>
-        <name>splashZ</name>
-        <type>gain</type>
-        <input>
-            <property>/fdm/jsbsim/glass-effects/splashz</property>
-        </input>
-        <output>
-            <property>/environment/aircraft-effects/splash-vector-z</property>
-        </output>
-    </filter>
-
-</PropertyList>
diff --git a/Systems/libraries.xml b/Systems/libraries.xml
index 06bb51a4..acd2b244 100644
--- a/Systems/libraries.xml
+++ b/Systems/libraries.xml
@@ -608,27 +608,6 @@
 		<output>/systems/pressurization/targetvs</output>   
 	</filter>
 	
-	<filter>
-		<name>Icing Severity</name>
-		<type>gain</type>
-		<gain>1.0</gain>
-		<update-interval-secs type="double">0.1</update-interval-secs>
-		<input>
-			<expression>
-				<table>
-					<property>/systems/icing/severity</property>
-					<entry><ind>0</ind><dep>-0.00000166</dep></entry>
-					<entry><ind>1</ind><dep> 0.00000277</dep></entry>
-					<entry><ind>2</ind><dep> 0.00000277</dep></entry>
-					<entry><ind>3</ind><dep> 0.00000554</dep></entry>
-					<entry><ind>4</ind><dep> 0.00001108</dep></entry>
-					<entry><ind>5</ind><dep> 0.00002216</dep></entry>
-				</table>
-			</expression>
-		</input>
-		<output>/systems/icing/factor</output>
-	</filter>
-	
 	<filter>
 		<name>TAS</name>
 		<type>gain</type>