diff --git a/Aircraft/c172p/Models/bumpspec-fuselage.eff b/Aircraft/c172p/Models/Effects/bumpspec-fuselage.eff
similarity index 100%
rename from Aircraft/c172p/Models/bumpspec-fuselage.eff
rename to Aircraft/c172p/Models/Effects/bumpspec-fuselage.eff
diff --git a/Aircraft/c172p/Models/bumpspec-tail.eff b/Aircraft/c172p/Models/Effects/bumpspec-tail.eff
similarity index 100%
rename from Aircraft/c172p/Models/bumpspec-tail.eff
rename to Aircraft/c172p/Models/Effects/bumpspec-tail.eff
diff --git a/Aircraft/c172p/Models/bumpspec-wing.eff b/Aircraft/c172p/Models/Effects/bumpspec-wing.eff
similarity index 100%
rename from Aircraft/c172p/Models/bumpspec-wing.eff
rename to Aircraft/c172p/Models/Effects/bumpspec-wing.eff
diff --git a/Aircraft/c172p/Models/Liveries/EI-MCF.xml b/Aircraft/c172p/Models/Liveries/EI-MCF.xml
index 6e48e03a7..06b0f9eb6 100644
--- a/Aircraft/c172p/Models/Liveries/EI-MCF.xml
+++ b/Aircraft/c172p/Models/Liveries/EI-MCF.xml
@@ -3,33 +3,30 @@
 <PropertyList>
   <sim>
     <model>
-     
+	 <livery>
+	  <name type="string">EI-MCF</name>
+	  <index type="int">2</index>
+	  <texture>Liveries/fuselage-eimcf.png</texture>
+	 </livery>
       
-      
-      <livery>
-        <name type="string">EI-MCF</name>
-	 <index type="int">2</index>
-	<texture>Liveries/fuselage.eimcf.png</texture>
-	      </livery>
-      
-       <liverytail>
-	     <name type="string">EI-MCF</name>
-	     <index type="int">2</index>
-	    <texture>Liveries/tail.png</texture>
-	    	    </liverytail>
+	 <liverytail>
+	  <name type="string">EI-MCF</name>
+	  <index type="int">2</index>
+	  <texture>Liveries/tail.png</texture>
+	 </liverytail>
 	    
 	 <liverywing>
-	    <name type="string">EI-MCF</name>
-	     <index type="int">2</index>
-	    <texture>Liveries/wing.png</texture>
-	    	    </liverywing>
+	  <name type="string">EI-MCF</name>
+	  <index type="int">2</index>
+	  <texture>Liveries/wing.png</texture>
+	 </liverywing>
 	    
-	    <c172p>
-	     <immat>false</immat>
+	 <c172p>
+	  <immat>false</immat>
       <fairing1>true</fairing1>
       <fairing2>false</fairing2>
       <fairing3>false</fairing3>
-      </c172p>
+     </c172p>
       
     </model>
   </sim>
diff --git a/Aircraft/c172p/Models/fuselage.eimcf.png b/Aircraft/c172p/Models/Liveries/fuselage-eimcf.png
similarity index 100%
rename from Aircraft/c172p/Models/fuselage.eimcf.png
rename to Aircraft/c172p/Models/Liveries/fuselage-eimcf.png
diff --git a/Aircraft/c172p/Models/Liveries/fuselage.n301dp.png b/Aircraft/c172p/Models/Liveries/fuselage-n301dp.png
similarity index 100%
rename from Aircraft/c172p/Models/Liveries/fuselage.n301dp.png
rename to Aircraft/c172p/Models/Liveries/fuselage-n301dp.png
diff --git a/Aircraft/c172p/Models/c172.14-fuselage.rgb b/Aircraft/c172p/Models/c172.14-fuselage.rgb
deleted file mode 100644
index a8da40225..000000000
Binary files a/Aircraft/c172p/Models/c172.14-fuselage.rgb and /dev/null differ
diff --git a/Aircraft/c172p/Models/c172.15-fuselage.rgb b/Aircraft/c172p/Models/c172.15-fuselage.rgb
deleted file mode 100644
index 50a306a4d..000000000
Binary files a/Aircraft/c172p/Models/c172.15-fuselage.rgb and /dev/null differ
diff --git a/Aircraft/c172p/Models/c172.16-fuselage.rgb b/Aircraft/c172p/Models/c172.16-fuselage.rgb
deleted file mode 100644
index f63bc314b..000000000
Binary files a/Aircraft/c172p/Models/c172.16-fuselage.rgb and /dev/null differ
diff --git a/Aircraft/c172p/Models/c172p-01.png b/Aircraft/c172p/Models/c172p-01.png
new file mode 100644
index 000000000..a5dd6636b
Binary files /dev/null and b/Aircraft/c172p/Models/c172p-01.png differ
diff --git a/Aircraft/c172p/Models/c172p-01.rgb b/Aircraft/c172p/Models/c172p-01.rgb
deleted file mode 100644
index b79aa20da..000000000
Binary files a/Aircraft/c172p/Models/c172p-01.rgb and /dev/null differ
diff --git a/Aircraft/c172p/Models/c172p-02.png b/Aircraft/c172p/Models/c172p-02.png
new file mode 100644
index 000000000..bce9c6303
Binary files /dev/null and b/Aircraft/c172p/Models/c172p-02.png differ
diff --git a/Aircraft/c172p/Models/c172p-02.rgb b/Aircraft/c172p/Models/c172p-02.rgb
deleted file mode 100644
index f4213b53f..000000000
Binary files a/Aircraft/c172p/Models/c172p-02.rgb and /dev/null differ
diff --git a/Aircraft/c172p/Models/c172p-2d-panel.xml b/Aircraft/c172p/Models/c172p-2d-panel.xml
index 161235788..4a2b3dcdf 100644
--- a/Aircraft/c172p/Models/c172p-2d-panel.xml
+++ b/Aircraft/c172p/Models/c172p-2d-panel.xml
@@ -17,7 +17,7 @@ Legacy 2D instruments and actions for the 3D C172P cockpit.
  <instruments>
 
 <!-- labels -->
-  <instrument include="/labels/labelbcn.xml">
+  <instrument include="/Labels/labelbcn.xml">
    <name>labelbcn</name>
    <x>495</x>
    <y>-270</y>
@@ -26,7 +26,7 @@ Legacy 2D instruments and actions for the 3D C172P cockpit.
   </instrument>
 
 <!-- labels -->
-  <instrument include="/labels/labelnav.xml">
+  <instrument include="/Labels/labelnav.xml">
    <name>labelnav</name>
    <x>458</x>
    <y>-270</y>
@@ -35,7 +35,7 @@ Legacy 2D instruments and actions for the 3D C172P cockpit.
   </instrument>
 
 <!-- labels -->
-  <instrument include="/labels/labelpto.xml">
+  <instrument include="/Labels/labelpto.xml">
    <name>labelpto</name>
    <x>422</x>
    <y>-270</y>
@@ -44,7 +44,7 @@ Legacy 2D instruments and actions for the 3D C172P cockpit.
   </instrument>
 
 <!-- labels -->
-  <instrument include="/labels/labelsto.xml">
+  <instrument include="/Labels/Labelsto.xml">
    <name>labelsto</name>
    <x>525</x>
    <y>-270</y>
@@ -53,7 +53,7 @@ Legacy 2D instruments and actions for the 3D C172P cockpit.
   </instrument>
 
 <!-- labels -->
-  <instrument include="/labels/labeltax.xml">
+  <instrument include="/Labels/labeltax.xml">
    <name>labeltax</name>
    <x>493</x>
    <y>-204</y>
@@ -62,7 +62,7 @@ Legacy 2D instruments and actions for the 3D C172P cockpit.
   </instrument>
 
 <!-- labels -->
-  <instrument include="/labels/labellng.xml">
+  <instrument include="/Labels/labellng.xml">
    <name>labellng</name>
    <x>525</x>
    <y>-204</y>
diff --git a/Aircraft/c172p/Models/fuselage.n301dp.png b/Aircraft/c172p/Models/c172p-fuselage-skyhawk.png
similarity index 100%
rename from Aircraft/c172p/Models/fuselage.n301dp.png
rename to Aircraft/c172p/Models/c172p-fuselage-skyhawk.png
diff --git a/Aircraft/c172p/Models/c172p-int-01.png b/Aircraft/c172p/Models/c172p-int-01.png
new file mode 100644
index 000000000..48a52a179
Binary files /dev/null and b/Aircraft/c172p/Models/c172p-int-01.png differ
diff --git a/Aircraft/c172p/Models/c172p-int-01.rgb b/Aircraft/c172p/Models/c172p-int-01.rgb
deleted file mode 100644
index 433d0eecc..000000000
Binary files a/Aircraft/c172p/Models/c172p-int-01.rgb and /dev/null differ
diff --git a/Aircraft/c172p/Models/c172p-int-02.png b/Aircraft/c172p/Models/c172p-int-02.png
new file mode 100644
index 000000000..8495d62e2
Binary files /dev/null and b/Aircraft/c172p/Models/c172p-int-02.png differ
diff --git a/Aircraft/c172p/Models/c172p-int-02.rgb b/Aircraft/c172p/Models/c172p-int-02.rgb
deleted file mode 100644
index e2e65a9d2..000000000
Binary files a/Aircraft/c172p/Models/c172p-int-02.rgb and /dev/null differ
diff --git a/Aircraft/c172p/Models/c172p.ac b/Aircraft/c172p/Models/c172p.ac
index eb59600a4..e2e65b2b7 100644
--- a/Aircraft/c172p/Models/c172p.ac
+++ b/Aircraft/c172p/Models/c172p.ac
@@ -44,7 +44,7 @@ name "BottomLink"
 loc 0.0176049 -0.0188099 0
 data 8
 Mesh.009
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 4
 -1.048 -0.921304 0.020872
@@ -65,7 +65,7 @@ name "TopLink"
 loc 0.0274526 -0.0318764 0
 data 8
 Mesh.009
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 4
 -0.881331 -0.859786 0.020872
@@ -6481,7 +6481,7 @@ OBJECT poly
 name "Panel_1"
 data 8
 Mesh.026
-texture "c172p-int-02.rgb"
+texture "c172p-int-02.png"
 crease 80.000000
 numvert 27
 -0.596017 0.059132 0.497091
@@ -21670,7 +21670,7 @@ OBJECT poly
 name "BackSeat"
 data 8
 Mesh.099
-texture "c172p-int-01.rgb"
+texture "c172p-int-01.png"
 crease 30.000000
 numvert 28
 1.0541 -0.62155 -0.460064
@@ -22051,7 +22051,7 @@ OBJECT poly
 name "BeaconSwitch"
 data 16
 RockerSwitch.006
-texture "c172p-int-01.rgb"
+texture "c172p-int-01.png"
 crease 30.000000
 numvert 10
 -0.355953 -0.258566 0.147111
@@ -25546,7 +25546,7 @@ OBJECT poly
 name "CopilotSeat"
 data 13
 FrontSeat.002
-texture "c172p-int-01.rgb"
+texture "c172p-int-01.png"
 crease 30.000000
 numvert 24
 0.324408 -0.59928 -0.432994
@@ -25811,7 +25811,7 @@ OBJECT poly
 name "Exhaust"
 data 8
 Mesh.108
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 16
 -1.29585 -0.770666 -0.290534
@@ -26519,7 +26519,7 @@ OBJECT poly
 name "LandingLightSwitch"
 data 16
 RockerSwitch.007
-texture "c172p-int-01.rgb"
+texture "c172p-int-01.png"
 crease 30.000000
 numvert 10
 -0.355953 -0.210915 0.122068
@@ -26847,7 +26847,7 @@ OBJECT poly
 name "LeftWheel"
 data 8
 Mesh.013
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 64
 0.660989 -1.02105 1.09349
@@ -27364,7 +27364,7 @@ OBJECT poly
 name "LeftWheelStrut"
 data 8
 Mesh.014
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 24
 0.764081 -0.650906 0.414912
@@ -30339,7 +30339,7 @@ OBJECT poly
 name "NavLightSwitch"
 data 16
 RockerSwitch.008
-texture "c172p-int-01.rgb"
+texture "c172p-int-01.png"
 crease 30.000000
 numvert 10
 -0.355953 -0.258566 0.17285
@@ -30410,7 +30410,7 @@ OBJECT poly
 name "NoseWheel"
 data 8
 Mesh.003
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 64
 -1.0174 -1.06218 -0.04389
@@ -30927,7 +30927,7 @@ OBJECT poly
 name "NoseWheelStrut"
 data 8
 Mesh.005
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 24
 -0.951212 -0.69659 0.025989
@@ -33719,7 +33719,7 @@ OBJECT poly
 name "PilotSeat"
 data 13
 FrontSeat.003
-texture "c172p-int-01.rgb"
+texture "c172p-int-01.png"
 crease 30.000000
 numvert 24
 0.324408 -0.59928 0.05193
@@ -33926,7 +33926,7 @@ OBJECT poly
 name "PitotHeatSwitch"
 data 16
 RockerSwitch.009
-texture "c172p-int-01.rgb"
+texture "c172p-int-01.png"
 crease 30.000000
 numvert 10
 -0.355953 -0.258566 0.198937
@@ -33997,7 +33997,7 @@ OBJECT poly
 name "PitotTube"
 data 8
 Mesh.111
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 9
 -0.227717 0.464279 1.53536
@@ -35166,7 +35166,7 @@ OBJECT poly
 name "Propeller"
 data 8
 Mesh.102
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 26
 -1.80489 -0.18863 0.878791
@@ -35401,7 +35401,7 @@ OBJECT poly
 name "Propeller.Fast"
 data 8
 Mesh.136
-texture "c172p-01.rgb"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 32
 -1.78664 0.657935 -0.710061
@@ -35622,7 +35622,7 @@ OBJECT poly
 name "Propeller.Slow"
 data 8
 Mesh.137
-texture "c172p-01.rgb"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 32
 -1.78664 0.657935 -0.710061
@@ -36100,7 +36100,7 @@ OBJECT poly
 name "RightWheel"
 data 8
 Mesh.070
-texture "c172p-02.rgb"
+texture "c172p-02.png"
 crease 30.000000
 numvert 64
 0.66085 -1.02854 -1.22172
@@ -36617,7 +36617,7 @@ OBJECT poly
 name "RightWheelStrut"
 data 8
 Mesh.004
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 24
 0.576418 -1.10992 -1.08343
@@ -36692,7 +36692,7 @@ OBJECT poly
 name "StrobeSwitch"
 data 16
 RockerSwitch.010
-texture "c172p-int-02.rgb"
+texture "c172p-int-02.png"
 crease 30.000000
 numvert 10
 -0.355953 -0.258566 0.122068
@@ -36763,7 +36763,7 @@ OBJECT poly
 name "TaxiLightSwitch"
 data 16
 RockerSwitch.011
-texture "c172p-int-01.rgb"
+texture "c172p-int-01.png"
 crease 30.000000
 numvert 10
 -0.355953 -0.211263 0.147111
@@ -42563,7 +42563,7 @@ OBJECT poly
 name "baggagedoor"
 data 8
 Mesh.072
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 44
 1.45499 -0.166666 0.478551
@@ -44122,7 +44122,7 @@ OBJECT poly
 name "charniere3"
 data 8
 Mesh.191
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 55.000000
 numvert 28
 -0.128478 -0.335913 0.535157
@@ -44317,7 +44317,7 @@ OBJECT poly
 name "charniere4"
 data 8
 Mesh.141
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 55.000000
 numvert 28
 -0.128478 -0.335913 -0.535158
@@ -45270,7 +45270,7 @@ OBJECT poly
 name "fairing1"
 data 9
 Plane.019
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 324
 -1.17802 -1.00328 0.034077
@@ -47857,7 +47857,7 @@ OBJECT poly
 name "fairing2"
 data 9
 Plane.021
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 324
 0.444673 -0.918008 1.18589
@@ -50444,7 +50444,7 @@ OBJECT poly
 name "fairing3"
 data 9
 Plane.020
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 324
 0.444673 -0.913253 -1.14083
@@ -53222,7 +53222,7 @@ OBJECT poly
 name "fuselage_1"
 data 8
 Mesh.073
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 80.000000
 numvert 1166
 1.73839 0.167172 0
@@ -64254,7 +64254,7 @@ OBJECT poly
 name "leftdoor"
 data 8
 Mesh.074
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 125
 -0.10498 -0.63518 0.50491
@@ -78790,7 +78790,7 @@ OBJECT poly
 name "rightdoor"
 data 8
 Mesh.075
-texture "fuselage.n301dp.png"
+texture "c172p-fuselage-skyhawk.png"
 crease 30.000000
 numvert 125
 -0.10498 -0.63518 -0.504908
diff --git a/Aircraft/c172p/Models/c172p.xml b/Aircraft/c172p/Models/c172p.xml
index 6c5b0e21c..ddc67f296 100644
--- a/Aircraft/c172p/Models/c172p.xml
+++ b/Aircraft/c172p/Models/c172p.xml
@@ -2499,7 +2499,7 @@
    <object-name>LeftWheelStrut</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
@@ -2508,7 +2508,7 @@
    <object-name>fairing1</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
@@ -2517,7 +2517,7 @@
    <object-name>fairing2</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
@@ -2526,7 +2526,7 @@
    <object-name>fairing3</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
@@ -2535,7 +2535,7 @@
    <object-name>fuselage</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
@@ -2547,7 +2547,7 @@
    <object-name>charniere4</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
@@ -2556,7 +2556,7 @@
    <object-name>leftdoor</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
@@ -2565,7 +2565,7 @@
    <object-name>rightdoor</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
@@ -2574,7 +2574,7 @@
    <object-name>baggagedoor</object-name>
    <property-base>sim/model/livery/</property-base>
    <texture-prop>texture</texture-prop>
-   <texture>fuselage.n301dp.png</texture>
+   <texture>fuselage-n301dp.png</texture>
  </animation>
 
  <animation>
diff --git a/Aircraft/c172p/Models/glass_shader.rgb b/Aircraft/c172p/Models/glass_shader.rgb
deleted file mode 100644
index 2e89c032e..000000000
Binary files a/Aircraft/c172p/Models/glass_shader.rgb and /dev/null differ
diff --git a/Effects/cloud.eff b/Effects/cloud.eff
index c1f5c4183..bb6d3c31e 100644
--- a/Effects/cloud.eff
+++ b/Effects/cloud.eff
@@ -36,7 +36,7 @@
         <write-mask>false</write-mask>
       </depth>
       <render-bin>
-        <bin-number>9</bin-number>
+        <bin-number>10</bin-number>
         <bin-name>DepthSortedBin</bin-name>
       </render-bin>
       <texture-unit>
diff --git a/Effects/cropgrass.eff b/Effects/cropgrass.eff
index 72d1b554c..ee78881ce 100644
--- a/Effects/cropgrass.eff
+++ b/Effects/cropgrass.eff
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <PropertyList>
   <name>Effects/cropgrass</name>
-  <inherits-from>Effects/terrain-default</inherits-from>
+  <inherits-from>Effects/crop</inherits-from>
   <parameters>
     <texture n="2">
         <image>Textures/Terrain/cropgrass.png</image>
@@ -18,92 +18,4 @@
     </texture>
     <snow-level><use>/sim/rendering/snow-level-m</use></snow-level>
   </parameters>
-  <technique n="9">
-    <predicate>
-      <and>
-        <property>/sim/rendering/crop-shader</property>
-        <property>/sim/rendering/shader-effects</property>
-        <or>
-          <less-equal>
-            <value type="float">2.0</value>
-            <glversion/>
-          </less-equal>
-          <and>
-            <extension-supported>GL_ARB_shader_objects</extension-supported>
-            <extension-supported>GL_ARB_shading_language_100</extension-supported>
-            <extension-supported>GL_ARB_vertex_shader</extension-supported>
-            <extension-supported>GL_ARB_fragment_shader</extension-supported>
-          </and>
-        </or>
-      </and>
-    </predicate>
-    <pass>
-      <lighting>true</lighting>
-      <!-- Use material values that are either inherited from the
-           terrain-default effect or supplied by an effect derived
-           from this one e.g., one created in the materials library. -->
-      <material>
-        <ambient><use>material/ambient</use></ambient>
-        <diffuse><use>material/diffuse</use></diffuse>
-        <specular><use>material/specular</use></specular>
-        <color-mode>ambient-and-diffuse</color-mode>
-      </material>
-      <blend><use>transparent</use></blend>
-      <alpha-test><use>transparent</use></alpha-test>
-      <shade-model>smooth</shade-model>
-      <cull-face>back</cull-face>
-      <render-bin>
-        <bin-number><use>render-bin/bin-number</use></bin-number>
-        <bin-name><use>render-bin/bin-name</use></bin-name>
-      </render-bin>
-      <texture-unit>
-        <unit>0</unit>
-        <type>noise</type>
-      </texture-unit>
-      <texture-unit>
-        <unit>1</unit>
-          <image><use>texture[2]/image</use></image>
-          <filter><use>texture[2]/filter</use></filter>
-          <wrap-s><use>texture[2]/wrap-s</use></wrap-s>
-          <wrap-t><use>texture[2]/wrap-t</use></wrap-t>
-          <internal-format>
-            <use>texture[2]/internal-format</use>
-          </internal-format>
-      </texture-unit>
-      <texture-unit>
-        <unit>2</unit>
-          <type>1d</type>
-          <image><use>texture[3]/image</use></image>
-          <filter><use>texture[3]/filter</use></filter>
-          <wrap-s><use>texture[3]/wrap-s</use></wrap-s>
-          <internal-format>
-            <use>texture[3]/internal-format</use>
-          </internal-format>
-      </texture-unit>
-      <program>
-        <vertex-shader>Shaders/crop.vert</vertex-shader>
-        <fragment-shader>Shaders/crop.frag</fragment-shader>
-      </program>
-      <uniform>
-        <name>NoiseTex</name>
-        <type>sampler-3d</type>
-        <value type="int">0</value>
-      </uniform>
-      <uniform>
-        <name>SampleTex</name>
-        <type>sampler-2d</type>
-        <value type="int">1</value>
-      </uniform>
-      <uniform>
-        <name>ColorsTex</name>
-        <type>sampler-1d</type>
-        <value type="int">2</value>
-      </uniform>
-      <uniform>
-        <name>snowlevel</name>
-        <type>float</type>
-        <value><use>snow-level</use></value>
-      </uniform>
-    </pass>
-  </technique>
 </PropertyList>
diff --git a/Effects/forest.eff b/Effects/forest.eff
index e189b587a..438d30dfa 100644
--- a/Effects/forest.eff
+++ b/Effects/forest.eff
@@ -49,7 +49,7 @@
   <technique n="9">
     <predicate>
       <and>
-        <property>/sim/rendering/crop-shader</property>
+        <property>/sim/rendering/transition-shader</property>
         <property>/sim/rendering/shader-effects</property>
         <or>
           <less-equal>
diff --git a/Effects/glacier.eff b/Effects/glacier.eff
index da9a06146..c5fb1f2db 100644
--- a/Effects/glacier.eff
+++ b/Effects/glacier.eff
@@ -49,7 +49,7 @@
   <technique n="9">
     <predicate>
       <and>
-        <property>/sim/rendering/crop-shader</property>
+        <property>/sim/rendering/transition-shader</property>
         <property>/sim/rendering/shader-effects</property>
         <or>
           <less-equal>
diff --git a/Effects/herbtundra.eff b/Effects/herbtundra.eff
index 5f97c2112..6b819d16e 100644
--- a/Effects/herbtundra.eff
+++ b/Effects/herbtundra.eff
@@ -49,7 +49,7 @@
   <technique n="9">
     <predicate>
       <and>
-        <property>/sim/rendering/crop-shader</property>
+        <property>/sim/rendering/transition-shader</property>
         <property>/sim/rendering/shader-effects</property>
         <or>
           <less-equal>
diff --git a/Environment/environment.xml b/Environment/environment.xml
index 71e44e61e..69884a074 100644
--- a/Environment/environment.xml
+++ b/Environment/environment.xml
@@ -113,7 +113,7 @@
    <aloft>
 
     <entry>
-     <elevation-ft>3000</elevation-ft>
+     <elevation-ft>5000</elevation-ft>
      <wind-from-heading-deg>300</wind-from-heading-deg>
      <wind-speed-kt>10</wind-speed-kt>
      <visibility-m>16093.44</visibility-m>
@@ -128,7 +128,7 @@
     </entry>
 
     <entry>
-     <elevation-ft>6000</elevation-ft>
+     <elevation-ft>10000</elevation-ft>
      <wind-from-heading-deg>310</wind-from-heading-deg>
      <wind-speed-kt>20</wind-speed-kt>
      <turbulence>
@@ -141,7 +141,7 @@
     </entry>
 
     <entry>
-     <elevation-ft>9000</elevation-ft>
+     <elevation-ft>18000</elevation-ft>
      <wind-from-heading-deg>320</wind-from-heading-deg>
      <wind-speed-kt>30</wind-speed-kt>
      <wind-heading-change-deg>35</wind-heading-change-deg>
@@ -149,7 +149,7 @@
     </entry>
 
      <entry>
-       <elevation-ft>30000</elevation-ft>
+       <elevation-ft>24000</elevation-ft>
        <wind-from-heading-deg>330</wind-from-heading-deg>
        <wind-speed-kt>50</wind-speed-kt>
        <wind-heading-change-deg>35</wind-heading-change-deg>
@@ -157,7 +157,7 @@
      </entry>
 
      <entry>
-       <elevation-ft>40000</elevation-ft>
+       <elevation-ft>30000</elevation-ft>
        <wind-from-heading-deg>340</wind-from-heading-deg>
        <wind-speed-kt>70</wind-speed-kt>
        <wind-heading-change-deg>35</wind-heading-change-deg>
diff --git a/Environment/metarinterpolator.xml b/Environment/metarinterpolator.xml
index 35775635f..d1b28e41f 100644
--- a/Environment/metarinterpolator.xml
+++ b/Environment/metarinterpolator.xml
@@ -111,7 +111,7 @@
   <!-- split the wind vector into it's components -->
 
   <filter>
-    <name>MetarController:wind-from-north-kt</name>
+    <name>MetarController:wind-from-north-fps</name>
     <type>exponential</type>
     <filter-time>30</filter-time>
     <enable>
@@ -119,22 +119,12 @@
         <property>/environment/metar/valid</property>
       </condition>
     </enable>
-    <input>
-      <expression>
-        <cos>
-          <product>
-            <property>/environment/metar/base-wind-dir-deg</property>
-            <value>0.0174533</value>
-          </product>
-        </cos>
-      </expression>
-      <scale>/environment/metar/base-wind-speed-kt</scale>
-    </input>
-    <output>/environment/metar/base-wind-from-north-kt</output>
+    <input>/environment/metar/base-wind-from-north-fps</input>
+    <output>/environment/config/boundary/entry[0]/wind-from-north-fps</output>
   </filter>
 
   <filter>
-    <name>MetarController:wind-from-east-kt</name>
+    <name>MetarController:wind-from-east-fps</name>
     <type>exponential</type>
     <filter-time>30</filter-time>
     <enable>
@@ -142,71 +132,8 @@
         <property>/environment/metar/valid</property>
       </condition>
     </enable>
-    <input>
-      <expression>
-        <sin>
-          <product>
-            <property>/environment/metar/base-wind-dir-deg</property>
-            <value>0.0174533</value>
-          </product>
-        </sin>
-      </expression>
-      <scale>/environment/metar/base-wind-speed-kt</scale>
-    </input>
-    <output>/environment/metar/base-wind-from-east-kt</output>
-  </filter>
-
-  <filter>
-    <name>MetarController::wind-speed-kt</name>
-    <enable>
-      <condition>
-        <property>/environment/metar/valid</property>
-      </condition>
-    </enable>
-    <input>
-      <expression>
-        <!-- pythagoras in markup language -->
-        <sqrt>
-          <sum>
-            <product>
-              <property>/environment/metar/base-wind-from-east-kt</property>
-              <property>/environment/metar/base-wind-from-east-kt</property>
-            </product>
-            <product>
-              <property>/environment/metar/base-wind-from-north-kt</property>
-              <property>/environment/metar/base-wind-from-north-kt</property>
-            </product>
-          </sum>
-        </sqrt>
-      </expression>
-    </input>
-    <output>/environment/config/boundary/entry[0]/wind-speed-kt</output>
-    <type>gain</type>
-    <gain>1.0</gain>
-  </filter>
-
-  <filter>
-    <name>MetarController:wind-from-heading-deg</name>
-    <enable>
-      <condition>
-        <property>/environment/metar/valid</property>
-      </condition>
-    </enable>
-    <input>
-      <expression>
-        <atan2>
-          <property>/environment/metar/base-wind-from-east-kt</property>
-          <property>/environment/metar/base-wind-from-north-kt</property>
-        </atan2>
-      </expression>
-    </input>
-    <output>/environment/config/boundary/entry[0]/wind-from-heading-deg</output>
-    <type>gain</type>
-    <gain>57.3</gain> <!-- radians to degree -->
-    <period>
-      <min>0</min>
-      <max>360</max>
-    </period>
+    <input>/environment/metar/base-wind-from-east-fps</input>
+    <output>/environment/config/boundary/entry[0]/wind-from-east-fps</output>
   </filter>
 
   <!-- Adjust the wind-vector for the layers -->
diff --git a/Nasal/seaport.nas b/Nasal/seaport.nas
new file mode 100644
index 000000000..5d9cb7fdb
--- /dev/null
+++ b/Nasal/seaport.nas
@@ -0,0 +1,11 @@
+_setlistener("/sim/presets/latitude-deg", func {
+	print("*** NEW LOCATION ***");
+	settimer(func {
+		var typ = getprop("/sim/type");
+		var lat = getprop("/position/latitude-deg");
+		var lon = getprop("/position/longitude-deg");
+		var g = geodinfo(lat, lon);
+		if ((g != nil and g[1] != nil and g[1].solid) and (typ == "seaplane") )
+			fgcommand("dialog-show", props.Node.new({ "dialog-name": "seaport" }));
+	}, 8);
+}, 1);
diff --git a/Nasal/wildfire.nas b/Nasal/wildfire.nas
index 710cc103a..accd57801 100644
--- a/Nasal/wildfire.nas
+++ b/Nasal/wildfire.nas
@@ -127,6 +127,7 @@ var MP_share_pp           = "environment/wildfire/share-events";
 var save_on_exit_pp       = "environment/wildfire/save-on-exit";
 var restore_on_startup_pp = "environment/wildfire/restore-on-startup";
 var crash_fire_pp         = "environment/wildfire/fire-on-crash";
+var impact_fire_pp        = "environment/wildfire/fire-on-impact";
 var report_score_pp       = "environment/wildfire/report-score";
 # Internal properties to control the models
 var models_enabled_pp     = "environment/wildfire/models/enabled";
@@ -820,6 +821,7 @@ _setlistener("/sim/signals/nasal-dir-initialized", func {
   });
   props.globals.initNode(MP_share_pp, 1, "BOOL");
   props.globals.initNode(crash_fire_pp, 1, "BOOL");
+  props.globals.initNode(impact_fire_pp, 1, "BOOL");
   props.globals.initNode(save_on_exit_pp, 0, "BOOL");
   props.globals.initNode(restore_on_startup_pp, 0, "BOOL");
   props.globals.initNode(models_enabled_pp, 1, "BOOL");
@@ -855,6 +857,22 @@ _setlistener("/sim/signals/nasal-dir-initialized", func {
       wildfire.ignite(geo.aircraft_position());
   });
 
+# Detect impact
+  var impact_node = props.globals.getNode("sim/ai/aircraft/impact/bomb", 1);
+  setlistener("sim/ai/aircraft/impact/bomb", func(n) {
+
+      if (getprop(impact_fire_pp) and n.getBoolValue()){
+          var node = props.globals.getNode(n.getValue(), 1);
+          var impactpos = geo.Coord.new();
+          impactpos.set_latlon(
+              node.getNode("impact/latitude-deg").getValue(),
+              node.getNode("impact/longitude-deg").getValue()
+              );
+          wildfire.ignite(impactpos);
+      }
+
+  });
+
   printlog("info", "Wildfire ... initialized.");
 });
 ###############################################################################
@@ -917,6 +935,7 @@ var dialog = {
                          ["Share over MP", MP_share_pp],
                          ["Show 3d models", models_enabled_pp],
                          ["Crash starts fire", crash_fire_pp],
+                         ["Impact starts fire", impact_fire_pp],
                          ["Report score", report_score_pp],
                          ["Save on exit", save_on_exit_pp]]) {
             var w = content.addChild("checkbox");
diff --git a/Shaders/crop.frag b/Shaders/crop.frag
index 555e673a2..c3534bc41 100644
--- a/Shaders/crop.frag
+++ b/Shaders/crop.frag
@@ -9,6 +9,8 @@ uniform sampler3D NoiseTex;
 uniform sampler2D SampleTex;
 uniform sampler1D ColorsTex;
 
+varying vec4 constantColor;
+
 uniform float snowlevel; // From /sim/rendering/snow-level-m
 
 const float scale = 1.0;
@@ -57,7 +59,7 @@ void main (void)
 	c1 = mix(c1, clamp(n+nvL[2]*4.1+vec4(0.1, 0.1, nvL[2]*2.2, 1.0), 0.7, 1.0), smoothstep(snowlevel+300.0, snowlevel+360.0, (rawpos.z)+nvL[1]*3000.0));
 
     vec3 diffuse = gl_Color.rgb * max(0.0, dot(VNormal, gl_LightSource[0].position.xyz));
-    vec4 ambient_light = gl_LightSource[0].diffuse * vec4(diffuse, 1.0);
+    vec4 ambient_light = constantColor + gl_LightSource[0].diffuse * vec4(diffuse, 1.0);
 
 	c1 *= ambient_light;
 	vec4 finalColor = c1;
diff --git a/Shaders/crop.vert b/Shaders/crop.vert
index b5c7314a5..9e70bfa6d 100644
--- a/Shaders/crop.vert
+++ b/Shaders/crop.vert
@@ -4,6 +4,7 @@ varying vec4 rawpos;
 varying vec4 ecPosition;
 varying vec3 VNormal;
 varying vec3 Normal;
+varying vec4 constantColor;
 
 void main(void)
 {
@@ -14,6 +15,10 @@ void main(void)
 	VNormal = normalize(gl_NormalMatrix * gl_Normal);
 	Normal = normalize(gl_Normal);
 	
-    gl_FrontColor = gl_Color;
+	gl_FrontColor = gl_Color;
+	
+	constantColor = gl_FrontMaterial.emission
+		+ gl_Color * (gl_LightModel.ambient + gl_LightSource[0].ambient);
+	
 	gl_Position = ftransform();
 }
\ No newline at end of file
diff --git a/Shaders/forest.frag b/Shaders/forest.frag
index 4641a8000..b0b08697f 100644
--- a/Shaders/forest.frag
+++ b/Shaders/forest.frag
@@ -7,6 +7,7 @@ varying vec3 VBinormal;
 varying vec3 VNormal;
 varying vec3 Normal;
 varying float bump;
+varying float fogCoord;
 
 uniform sampler3D NoiseTex;
 uniform sampler2D SampleTex;
@@ -98,13 +99,11 @@ void main (void)
 	
 	float vegetationlevel = (rawpos.z)+nvL[2]*3000.0;
 
-	float fogFactor;
-	float fogCoord = ecPosition.z;
 	const float LOG2 = 1.442695;
-	fogFactor = exp2(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord * LOG2);
+	float fogFactor = exp(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord);
 	float biasFactor = exp2(-0.00000002 * fogCoord * fogCoord * LOG2);
 
-	float n=0.06;
+	float n = 0.06;
 	n += nvL[0]*0.4;
 	n += nvL[1]*0.6;
 	n += nvL[2]*2.0;
@@ -114,7 +113,9 @@ void main (void)
 
 	n += noisevec[2]*0.8;
 	n += noisevec[3]*2.1;
-	n = mix(0.6, n, biasFactor);
+	
+	//very low n/biasFactor mix, to keep forest color
+	n = mix(0.05, n, biasFactor);
 	
 	vec4 c1;
 	c1 = basecolor * vec4(smoothstep(-1.3, 0.5, n), smoothstep(-1.3, 0.5, n), smoothstep(-2.0, 0.9, n), 0.0);
diff --git a/Shaders/forest.vert b/Shaders/forest.vert
index de27c5ac3..8cf6cbb7e 100644
--- a/Shaders/forest.vert
+++ b/Shaders/forest.vert
@@ -6,6 +6,7 @@ varying vec3  VBinormal;
 varying vec3  Normal;
 varying vec4  constantColor;
 varying float bump;
+varying float fogCoord;
 
 attribute vec3 tangent;
 attribute vec3 binormal;
@@ -25,4 +26,7 @@ void main(void)
 		+ gl_FrontColor * (gl_LightModel.ambient + gl_LightSource[0].ambient);  
 	gl_Position = ftransform();
 	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	
+    fogCoord = abs(ecPosition.z / ecPosition.w);
+	
 }
diff --git a/gui/dialogs/rendering.xml b/gui/dialogs/rendering.xml
index 114f1f0ca..29e42dbc8 100644
--- a/gui/dialogs/rendering.xml
+++ b/gui/dialogs/rendering.xml
@@ -270,6 +270,15 @@
             <command>dialog-apply</command>
           </binding>
         </checkbox>
+        
+        <checkbox>
+          <halign>left</halign>
+          <label>Transition effects</label>
+          <property>/sim/rendering/transition-shader</property>
+          <binding>
+            <command>dialog-apply</command>
+          </binding>
+        </checkbox>
 
         <checkbox>
           <halign>left</halign>
diff --git a/gui/dialogs/seaport.xml b/gui/dialogs/seaport.xml
new file mode 100644
index 000000000..08fab29ef
--- /dev/null
+++ b/gui/dialogs/seaport.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+
+<PropertyList>
+	<name>seaport</name>
+	<layout>vbox</layout>
+
+	<nasal>
+		<!--
+			Our coastlines are too unrealiable to just teleport to the nearest seaport.
+			We may have to search around its reported location until we actually find water.
+		-->
+		<open>
+			var label = cmdarg().getNode("text/label");
+			var apt = airportinfo("seaport");
+			var rwys = apt.runways;
+			var lat = apt.lat;
+			var lon = apt.lon;
+
+			label.setValue("  The nearest seaport is \"" ~ apt.name ~ "\" (" ~ apt.id ~ ")  ");
+
+			var goto_seaport = func {
+				var rwyid = keys(rwys)[0];
+				var rwy = rwys[rwyid];
+				print("SP: going to seaport ", apt.id, "/", rwyid, "  (\"", apt.name, "\")");
+				setprop("/sim/presets/airport-id", apt.id);
+				teleport(rwy.lat, rwy.lon);
+				settimer(verify, 4);
+			}
+
+			var verify = func {
+				var p = geo.aircraft_position();
+				if (on_water(p.lat(), p.lon())) {
+					print("SP: seaport center is on water");
+					return;
+				}
+
+				foreach (var r; keys(rwys)) {
+					print("SP: trying runway ", r);
+					var lat = rwys[r].lat;
+					var lon = rwys[r].lon;
+					if (on_water(lat, lon)) {
+						setprop("/sim/presets/runway", r);
+						setprop("/sim/presets/heading-deg", rwys[r].heading);
+						print("SP: runway ", r, " is on water");
+						return teleport(lat, lon);
+					}
+				}
+
+				print("SP: trying circle");
+				for (var dist = 500; dist &lt;= 1500; dist += 500) {
+					print("SP:\tat distance ", dist, " m");
+
+					for (var course = 0; course &lt; 360; course += 60) {
+						print("SP:\t\tat course ", course, " degree");
+
+						p.set_latlon(apt.lat, apt.lon);
+						p.apply_course_distance(course, dist);
+						if (on_water(p.lat(), p.lon())) {
+							print("SP: found water");
+							setprop("/sim/presets/heading-deg", course);
+							return teleport(p.lat(), p.lon());
+						}
+					}
+				}
+
+				print("SP: no water found");
+			}
+
+			var teleport = func(lat, lon) {
+				setprop("/sim/presets/latitude-deg", lat);
+				setprop("/sim/presets/longitude-deg", lon);
+				fgcommand("presets-commit");
+			}
+
+			var on_water = func(lat, lon) {
+				var g = geodinfo(lat, lon);
+				return g != nil and g[1] != nil and !g[1].solid;
+			}
+		</open>
+	</nasal>
+
+	<group>
+		<layout>hbox</layout>
+		<empty><stretch>1</stretch></empty>
+
+		<text>
+			<label>Location inappropriate for a seaplane</label>
+		</text>
+
+		<empty><stretch>1</stretch></empty>
+	</group>
+
+	<hrule/>
+
+	<text>
+		<label></label>
+	</text>
+
+	<group>
+		<layout>hbox</layout>
+		<button>
+			<legend>Stay anyway</legend>
+			<equal>1</equal>
+			<key>Esc</key>
+			<binding>
+				<command>dialog-close</command>
+			</binding>
+		</button>
+
+		<button>
+			<legend>Go to seaport</legend>
+			<default>1</default>
+			<equal>1</equal>
+			<binding>
+				<command>nasal</command>
+				<script>goto_seaport()</script>
+			</binding>
+			<binding>
+				<command>dialog-close</command>
+			</binding>
+		</button>
+	</group>
+</PropertyList>
diff --git a/preferences.xml b/preferences.xml
index c3f8c3327..0c4debbd9 100644
--- a/preferences.xml
+++ b/preferences.xml
@@ -596,7 +596,10 @@ Started September 2000 by David Megginson, david@megginson.com
 
   <traffic-manager>
      <enabled type="bool">true</enabled>
+     <heuristics type="bool">true</heuristics>
+     <datafile type="string"></datafile>
      <instantaneous-action type="bool">false</instantaneous-action>
+     <dumpdata type="bool">false</dumpdata>
      <proportion>1.0</proportion>
   </traffic-manager>