diff --git a/Environment/environment.xml b/Environment/environment.xml
index 2d773f391..25f43c064 100644
--- a/Environment/environment.xml
+++ b/Environment/environment.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?> 
+<?xml version="1.0" ?>
 <!--
  This file is part of FlightGear, the free flight simulator
  http://www.flightgear.org/
@@ -15,199 +15,212 @@
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  General Public License for more details.
 -->
- <PropertyList>
+<PropertyList>
   <weather-scenarios>
     <scenario>
-      <name>Disabled</name>
-      <description>METAR weather generation is disabled. Use the above controls to setup your weather.</description>
+      <name type="string">Disabled</name>
+      <description type="string">METAR weather generation is disabled. Use the above controls to setup your weather.</description>
     </scenario>
     <scenario>
-      <name>Live data</name>
-      <description>Fetch live weather data for your nearest airport from noaa.gov. You need a working internet connection.
-                   All the controls in this dialog are computed automatically, once a valid METAR is received.
+      <name type="string">Live data</name>
+      <description type="string">
+        Fetch live weather data for your nearest airport from noaa.gov. You need a working internet connection.
+        All the controls in this dialog are computed automatically, once a valid METAR is received.
       </description>
     </scenario>
     <scenario>
-      <name>Manual input</name>
-      <description>Enter your favorite METAR weather in the textbox below. A valid METAR syntax is required.</description>
+      <name type="string">Manual input</name>
+      <description type="string">Enter your favorite METAR weather in the textbox below. A valid METAR syntax is required.</description>
     </scenario>
     <scenario>
-      <name>Fair weather</name>
-      <metar>XXXX 012345Z 15003KT 12SM SCT041 FEW200 20/08 Q1015 NOSIG</metar>
-      <description>A lovely day for trip to your favorite 100$ hamburger airfield</description>
+      <name type="string">Fair weather</name>
+      <metar type="string">XXXX 012345Z 15003KT 12SM SCT041 FEW200 20/08 Q1015 NOSIG</metar>
+      <description type="string">A lovely day for trip to your favorite 100$ hamburger airfield</description>
     </scenario>
     <scenario>
-      <name>Thunderstorm</name>
-      <metar>XXXX 012345Z 15012G25KT 4000 TSRA FEW030CB SCT035TCU 27/24 Q0995</metar>
-      <description>A hot and damp summer day with thunderstorms developing in the afternoon.
-                   Be prepared for reduction of visibility in showers and strong gusts
-                   near thunderstorms</description>
+      <name type="string">Thunderstorm</name>
+      <metar type="string">XXXX 012345Z 15012G25KT 4000 TSRA FEW030CB SCT035TCU 27/24 Q0995</metar>
+      <description type="string">
+        A hot and damp summer day with thunderstorms developing in the afternoon.
+        Be prepared for reduction of visibility in showers and strong gusts
+        near thunderstorms
+      </description>
     </scenario>
     <scenario>
-      <name>Stormy Monday</name>
-      <metar>XXXX 012345Z 28035G50KT 250V300 9999 TSRA SCT022CB BKN030 13/09 Q1005</metar>
-      <description>You're out for an adventure? Gusty winds blowing from the west
-                   and isolated thunderstorms should be avoided. Fasten your seatbelt!</description>
+      <name type="string">Stormy Monday</name>
+      <metar type="string">XXXX 012345Z 28035G50KT 250V300 9999 TSRA SCT022CB BKN030 13/09 Q1005</metar>
+      <description type="string">
+        You're out for an adventure? Gusty winds blowing from the west
+        and isolated thunderstorms should be avoided. Fasten your seatbelt!
+      </description>
     </scenario>
     <scenario>
-      <name>Marginal VFR</name>
-      <metar>XXXX 012345Z 23010KT 5000 SHRA SCT012 BKN018 OVC060 15/11 Q1010</metar>
-      <description>After the storm - limited visibility and some showers. 
-                   Go or No-Go?</description>
+      <name type="string">Marginal VFR</name>
+      <metar type="string">XXXX 012345Z 23010KT 5000 SHRA SCT012 BKN018 OVC060 15/11 Q1010</metar>
+      <description type="string">
+        After the storm - limited visibility and some showers.
+        Go or No-Go?
+      </description>
     </scenario>
     <scenario>
-      <name>CAT I minimum</name>
-      <metar>XXXX 012345Z 15015KT 0800 -RA BKN002 OVC004 08/06 Q0990</metar>
-      <description>If you just got your IFR rating, this is what you are allowed to do. But can you?</description>
+      <name type="string">CAT I minimum</name>
+      <metar type="string">XXXX 012345Z 15015KT 0800 -RA BKN002 OVC004 08/06 Q0990</metar>
+      <description type="string">If you just got your IFR rating, this is what you are allowed to do. But can you?</description>
     </scenario>
     <scenario>
-      <name>CAT II minimum</name>
-      <metar>XXXX 012345Z 15010KT 0400 -RA BKN001 OVC002 08/06 Q0990</metar>
-      <description>With just a 1/4 mile visibility and clouds at 100ft, you don't see much of the runway until
-                   seconds before touchdown. Trust your instruments to stay alive.</description>
+      <name type="string">CAT II minimum</name>
+      <metar type="string">XXXX 012345Z 15010KT 0400 -RA BKN001 OVC002 08/06 Q0990</metar>
+      <description type="string">
+        With just a 1/4 mile visibility and clouds at 100ft, you don't see much of the runway until
+        seconds before touchdown. Trust your instruments to stay alive.
+      </description>
     </scenario>
     <scenario>
-      <name>CAT IIIb minimum</name>
-      <metar>XXXX 012345Z VRB01KT 0100 -RA FG OVC001 OVC002 02/02 Q0990</metar>
-      <description>This is expert level. You will barely see the taxiway from the cockpit, even if you are
-                   on ground. Fog and light drizzle, freezing level at 1000ft.</description>
+      <name type="string">CAT IIIb minimum</name>
+      <metar type="string">XXXX 012345Z VRB01KT 0100 -RA FG OVC001 OVC002 02/02 Q0990</metar>
+      <description type="string">
+        This is expert level. You will barely see the taxiway from the cockpit, even if you are
+        on ground. Fog and light drizzle, freezing level at 1000ft.
+      </description>
     </scenario>
 
     <scenario>
-      <name>Early morning fog</name>
-      <metar>XXXX 012345Z 00000KT 0800 FG NCD 08/08 A3030</metar>
-      <description>Fog developed this autumn's morning. Expect good visibility above the layer. 
-                   However - getting through it can be a challenge. Stay alive for a 500' climb
-                   and you'll see the sun!</description>
+      <name type="string">Early morning fog</name>
+      <metar type="string">XXXX 012345Z 00000KT 0800 FG NCD 08/08 A3030</metar>
+      <description type="string">
+        Fog developed this autumn's morning. Expect good visibility above the layer.
+        However - getting through it can be a challenge. Stay alive for a 500' climb
+        and you'll see the sun!
+      </description>
     </scenario>
   </weather-scenarios>
-  <weather-scenario>Fair weather</weather-scenario>
+  <weather-scenario type="string">Fair weather</weather-scenario>
   <config>
 
-   <boundary-transition-ft>500</boundary-transition-ft>
+    <boundary-transition-ft type="double">500</boundary-transition-ft>
 
-   <boundary>
+    <boundary>
 
-    <entry>
-     <elevation-ft>0</elevation-ft>
-     <wind-from-heading-deg>270</wind-from-heading-deg>
-     <wind-speed-kt>3</wind-speed-kt>
-     <visibility-m>16093.44</visibility-m>
-     <pressure-sea-level-inhg>29.92</pressure-sea-level-inhg>
-     <temperature-degc>15.0</temperature-degc>
-     <dewpoint-degc>5.0</dewpoint-degc>
-     <turbulence>
-      <factor>0.2</factor>
-      <magnitude-norm>0.0</magnitude-norm>
-      <rate-hz>1.0</rate-hz>
-     </turbulence>
-     <wind-heading-change-deg>0</wind-heading-change-deg>
-     <wind-speed-change-rel>0</wind-speed-change-rel>
-    </entry>
+      <entry>
+        <elevation-ft type="double">0</elevation-ft>
+        <wind-from-heading-deg type="double">270</wind-from-heading-deg>
+        <wind-speed-kt type="double">3</wind-speed-kt>
+        <visibility-m type="double">16093.44</visibility-m>
+        <pressure-sea-level-inhg type="double">29.92</pressure-sea-level-inhg>
+        <temperature-degc type="double">15.0</temperature-degc>
+        <dewpoint-degc type="double">5.0</dewpoint-degc>
+        <turbulence>
+          <factor type="double">0.2</factor>
+          <magnitude-norm type="double">0.0</magnitude-norm>
+          <rate-hz type="double">1.0</rate-hz>
+        </turbulence>
+        <wind-heading-change-deg type="double">0</wind-heading-change-deg>
+        <wind-speed-change-rel type="double">0</wind-speed-change-rel>
+      </entry>
 
-    <entry>
-     <elevation-ft>500</elevation-ft>
-     <wind-from-heading-deg>280</wind-from-heading-deg>
-     <wind-speed-kt>6</wind-speed-kt>
-     <turbulence>
-      <factor>1.0</factor>
-      <magnitude-norm>0.1</magnitude-norm>
-      <rate-hz>1.0</rate-hz>
-     </turbulence>
-     <wind-heading-change-deg>5</wind-heading-change-deg>
-     <wind-speed-change-rel>0.3</wind-speed-change-rel>
-    </entry>
+      <entry>
+        <elevation-ft type="double">500</elevation-ft>
+        <wind-from-heading-deg type="double">280</wind-from-heading-deg>
+        <wind-speed-kt type="double">6</wind-speed-kt>
+        <turbulence>
+          <factor type="double">1.0</factor>
+          <magnitude-norm type="double">0.1</magnitude-norm>
+          <rate-hz type="double">1.0</rate-hz>
+        </turbulence>
+        <wind-heading-change-deg type="double">5</wind-heading-change-deg>
+        <wind-speed-change-rel type="double">0.3</wind-speed-change-rel>
+      </entry>
 
-   </boundary>
+    </boundary>
 
-   <aloft>
+    <aloft>
 
-    <entry>
-     <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>
-     <pressure-sea-level-inhg>29.92</pressure-sea-level-inhg>
-     <turbulence>
-      <factor>0.5</factor>
-      <magnitude-norm>0.05</magnitude-norm>
-      <rate-hz>1.0</rate-hz>
-     </turbulence>
-     <wind-heading-change-deg>25</wind-heading-change-deg>
-     <wind-speed-change-rel>1</wind-speed-change-rel>
-    </entry>
+      <entry>
+        <elevation-ft type="double">5000</elevation-ft>
+        <wind-from-heading-deg type="double">300</wind-from-heading-deg>
+        <wind-speed-kt type="double">10</wind-speed-kt>
+        <visibility-m type="double">16093.44</visibility-m>
+        <pressure-sea-level-inhg type="double">29.92</pressure-sea-level-inhg>
+        <turbulence>
+          <factor type="double">0.5</factor>
+          <magnitude-norm type="double">0.05</magnitude-norm>
+          <rate-hz type="double">1.0</rate-hz>
+        </turbulence>
+        <wind-heading-change-deg type="double">25</wind-heading-change-deg>
+        <wind-speed-change-rel type="double">1</wind-speed-change-rel>
+      </entry>
 
-    <entry>
-     <elevation-ft>10000</elevation-ft>
-     <wind-from-heading-deg>310</wind-from-heading-deg>
-     <wind-speed-kt>20</wind-speed-kt>
-     <turbulence>
-      <factor>0.0</factor>
-      <magnitude-norm>0.0</magnitude-norm>
-      <rate-hz>1.0</rate-hz>
-     </turbulence>
-     <wind-heading-change-deg>30</wind-heading-change-deg>
-     <wind-speed-change-rel>1.2</wind-speed-change-rel>
-    </entry>
+      <entry>
+        <elevation-ft type="double">10000</elevation-ft>
+        <wind-from-heading-deg type="double">310</wind-from-heading-deg>
+        <wind-speed-kt type="double">20</wind-speed-kt>
+        <turbulence>
+          <factor type="double">0.0</factor>
+          <magnitude-norm type="double">0.0</magnitude-norm>
+          <rate-hz type="double">1.0</rate-hz>
+        </turbulence>
+        <wind-heading-change-deg type="double">30</wind-heading-change-deg>
+        <wind-speed-change-rel type="double">1.2</wind-speed-change-rel>
+      </entry>
 
-    <entry>
-     <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>
-     <wind-speed-change-rel>1.3</wind-speed-change-rel>
-    </entry>
+      <entry>
+        <elevation-ft type="double">18000</elevation-ft>
+        <wind-from-heading-deg type="double">320</wind-from-heading-deg>
+        <wind-speed-kt type="double">30</wind-speed-kt>
+        <wind-heading-change-deg type="double">35</wind-heading-change-deg>
+        <wind-speed-change-rel type="double">1.3</wind-speed-change-rel>
+      </entry>
 
-     <entry>
-       <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>
-       <wind-speed-change-rel>1.3</wind-speed-change-rel>
-     </entry>
+      <entry>
+        <elevation-ft type="double">24000</elevation-ft>
+        <wind-from-heading-deg type="double">330</wind-from-heading-deg>
+        <wind-speed-kt type="double">50</wind-speed-kt>
+        <wind-heading-change-deg type="double">35</wind-heading-change-deg>
+        <wind-speed-change-rel type="double">1.3</wind-speed-change-rel>
+      </entry>
 
-     <entry>
-       <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>
-       <wind-speed-change-rel>1.3</wind-speed-change-rel>
-     </entry>
+      <entry>
+        <elevation-ft type="double">30000</elevation-ft>
+        <wind-from-heading-deg type="double">340</wind-from-heading-deg>
+        <wind-speed-kt type="double">70</wind-speed-kt>
+        <wind-heading-change-deg type="double">35</wind-heading-change-deg>
+        <wind-speed-change-rel type="double">1.3</wind-speed-change-rel>
+      </entry>
 
-   </aloft>
+    </aloft>
 
   </config>
 
   <clouds>
-   <layer n="0">
-    <coverage>clear</coverage>
-    <elevation-ft>-9999</elevation-ft>
-    <thickness-ft>600</thickness-ft>
-    <transition-ft>150</transition-ft>
-    <span-m>40000</span-m>
-   </layer>
-   <layer n="1">
-    <coverage>clear</coverage>
-    <elevation-ft>-9999</elevation-ft>
-    <thickness-ft>65</thickness-ft>
-    <transition-ft>25</transition-ft>
-    <span-m>40000</span-m>
-   </layer>
-   <layer n="2">
-    <coverage>clear</coverage>
-    <elevation-ft>-9999</elevation-ft>
-    <span-m>40000</span-m>
-   </layer>
-   <layer n="3">
-    <coverage>clear</coverage>
-    <elevation-ft>-9999</elevation-ft>
-    <span-m>40000</span-m>
-   </layer>
-   <layer n="4">
-    <coverage>clear</coverage>
-    <elevation-ft>-9999</elevation-ft>
-    <span-m>40000</span-m>
-   </layer>
+    <layer n="0">
+      <coverage type="string">clear</coverage>
+      <elevation-ft type="double">-9999</elevation-ft>
+      <thickness-ft type="double">600</thickness-ft>
+      <transition-ft type="double">150</transition-ft>
+      <span-m>40000</span-m>
+    </layer>
+    <layer n="1">
+      <coverage type="string">clear</coverage>
+      <elevation-ft type="double">-9999</elevation-ft>
+      <thickness-ft type="double">65</thickness-ft>
+      <transition-ft type="double">25</transition-ft>
+      <span-m type="double">40000</span-m>
+    </layer>
+    <layer n="2">
+      <coverage type="string">clear</coverage>
+      <elevation-ft type="double">-9999</elevation-ft>
+      <span-m type="double">40000</span-m>
+    </layer>
+    <layer n="3">
+      <coverage type="double">clear</coverage>
+      <elevation-ft type="double">-9999</elevation-ft>
+      <span-m type="double">40000</span-m>
+    </layer>
+    <layer n="4">
+      <coverage type="string">clear</coverage>
+      <elevation-ft type="double">-9999</elevation-ft>
+      <span-m type="double">40000</span-m>
+    </layer>
   </clouds>
 
   <cloudlayers include="cloudlayers.xml"/>
@@ -225,67 +238,80 @@
          Wait for 
          /environment/metar[10]/valid to become true.
     -->
-    <metar n="0">/environment/metar[0]</metar> <!-- nearest airport -->
-    <metar n="1">/environment/metar[1]</metar> <!-- NAV1 -->
-    <metar n="2">/environment/metar[2]</metar> <!-- NAV2 -->
-    <metar n="3">/environment/metar[3]</metar> <!-- VHF-COMM1 -->
-    <metar n="4">/environment/metar[4]</metar> <!-- VHF-COMM2 -->
-    <metar n="5">/environment/metar[5]</metar> <!-- UHF-COMM1 -->
-    <metar n="6">/environment/metar[6]</metar> <!-- UHF-COMM2 -->
-    
+    <metar n="0" type="string">/environment/metar[0]</metar>
+    <!-- nearest airport -->
+    <metar n="1" type="string">/environment/metar[1]</metar>
+    <!-- NAV1 -->
+    <metar n="2" type="string">/environment/metar[2]</metar>
+    <!-- NAV2 -->
+    <metar n="3" type="string">/environment/metar[3]</metar>
+    <!-- VHF-COMM1 -->
+    <metar n="4" type="string">/environment/metar[4]</metar>
+    <!-- VHF-COMM2 -->
+    <metar n="5" type="string">/environment/metar[5]</metar>
+    <!-- UHF-COMM1 -->
+    <metar n="6" type="string">/environment/metar[6]</metar>
+    <!-- UHF-COMM2 -->
+
     <!-- User defined queries -->
-    <metar n="10">/environment/metar[10]</metar> 
-    <metar n="11">/environment/metar[11]</metar>
-    
+    <metar n="10" type="string">/environment/metar[10]</metar>
+    <metar n="11" type="string">/environment/metar[11]</metar>
+
     <!-- use NOAA for METAR (no aloft data) -->
-    <data-source>noaa</data-source>
+    <data-source type="string">noaa</data-source>
 
     <!-- use http://www.navlost.eu/ for METAR and aloft data -->
     <!-- data-source>nwx<data-source -->
-    <enabled>true</enabled>
+    <enabled type="bool">true</enabled>
   </realwx>
 
   <metar>
-   <!-- create a low-level cloud layer for fog/mist/haze from metar -->
-   <set-ground-cloud-layer type="bool">true</set-ground-cloud-layer>
+    <!-- create a low-level cloud layer for fog/mist/haze from metar -->
+    <set-ground-cloud-layer type="bool">true</set-ground-cloud-layer>
   </metar>
 
+  <turbulence>
+    <!-- the turbulence/magnitude-norm interpolator applies this value
+          as an exponent to the magnitude -->
+    <sensitivity type="double">2</sensitivity>
+  </turbulence>
+
   <params>
-   <metar-max-age-min type="long">240</metar-max-age-min>
-   <metar-updates-environment type="bool">true</metar-updates-environment>
-   <metar-updates-winds-aloft type="bool">true</metar-updates-winds-aloft>
-   <control-fdm-atmosphere type="bool">true</control-fdm-atmosphere>
-   <contrail-altitude>30000</contrail-altitude>
-   <!-- definitions for the metar generated fog/mist/haze layer -->
-   <fog-mist-haze-layer>
-    <offset-from-station-elevation-ft>-200</offset-from-station-elevation-ft>
-    <visibility-above-layer-m>20000</visibility-above-layer-m>
+    <metar-max-age-min type="long">240</metar-max-age-min>
+    <metar-updates-environment type="bool">true</metar-updates-environment>
+    <metar-updates-winds-aloft type="bool">true</metar-updates-winds-aloft>
+    <control-fdm-atmosphere type="bool">true</control-fdm-atmosphere>
+    <contrail-altitude type="double">30000</contrail-altitude>
+    <!-- definitions for the metar generated fog/mist/haze layer -->
+    <fog-mist-haze-layer>
+      <offset-from-station-elevation-ft type="double">-200</offset-from-station-elevation-ft>
+      <visibility-above-layer-m type="double">20000</visibility-above-layer-m>
 
-    <fog-thickness-ft>500</fog-thickness-ft>
-    <fog-2dlayer-alpha>1.0</fog-2dlayer-alpha>
-    <fog-2dlayer-coverage>overcast</fog-2dlayer-coverage>
-    <fog-bc-2dlayer-coverage>broken</fog-bc-2dlayer-coverage>
-    <fog-shallow-thickness-ft>30</fog-shallow-thickness-ft>
+      <fog-thickness-ft type="double">500</fog-thickness-ft>
+      <fog-2dlayer-alpha type="double">1.0</fog-2dlayer-alpha>
+      <fog-2dlayer-coverage type="string">overcast</fog-2dlayer-coverage>
+      <fog-bc-2dlayer-coverage type="string">broken</fog-bc-2dlayer-coverage>
+      <fog-shallow-thickness-ft type="double">30</fog-shallow-thickness-ft>
 
-    <mist-thickness-ft>2000</mist-thickness-ft>
-    <mist-2dlayer-alpha>0.8</mist-2dlayer-alpha>
-    <mist-2dlayer-coverage>overcast</mist-2dlayer-coverage>
+      <mist-thickness-ft type="double">2000</mist-thickness-ft>
+      <mist-2dlayer-alpha type="double">0.8</mist-2dlayer-alpha>
+      <mist-2dlayer-coverage type="string">overcast</mist-2dlayer-coverage>
 
-    <haze-thickness-ft>2000</haze-thickness-ft>
-    <haze-2dlayer-alpha>0.6</haze-2dlayer-alpha>
-    <haze-2dlayer-coverage>overcast</haze-2dlayer-coverage>
-   </fog-mist-haze-layer>
+      <haze-thickness-ft type="double">2000</haze-thickness-ft>
+      <haze-2dlayer-alpha type="double">0.6</haze-2dlayer-alpha>
+      <haze-2dlayer-coverage type="string">overcast</haze-2dlayer-coverage>
+    </fog-mist-haze-layer>
 
   </params>
 
   <wildfire>
-   <enabled type="bool" userarchive="y">false</enabled>
-   <share-events type="bool" userarchive="y">false</share-events>
-   <save-on-exit type="bool" userarchive="y">false</save-on-exit>
-   <restore-on-startup type="bool" userarchive="y">false</restore-on-startup>
-   <fire-on-crash type="bool" userarchive="y">false</fire-on-crash>
-   <report-score type="bool" userarchive="y">false</report-score>
-   <data type="string"/>
+    <enabled type="bool" userarchive="y">false</enabled>
+    <share-events type="bool" userarchive="y">false</share-events>
+    <save-on-exit type="bool" userarchive="y">false</save-on-exit>
+    <restore-on-startup type="bool" userarchive="y">false</restore-on-startup>
+    <fire-on-crash type="bool" userarchive="y">false</fire-on-crash>
+    <report-score type="bool" userarchive="y">false</report-score>
+    <data type="string"/>
   </wildfire>
 
 </PropertyList>
diff --git a/Environment/interpolator.xml b/Environment/interpolator.xml
index 04f942d57..bbe155d67 100644
--- a/Environment/interpolator.xml
+++ b/Environment/interpolator.xml
@@ -22,7 +22,7 @@
   All filters are enabled on /environment/config/enabled=true
 -->
 <PropertyList>
-  
+
   <filter>
     <name>EnvironmentInterpolator:temperature-sea-level-degc</name>
     <enable>
@@ -35,7 +35,7 @@
     <type>noise-spike</type>
     <max-rate-of-change>0.1667</max-rate-of-change>
   </filter>
-  
+
   <filter>
     <name>EnvironmentInterpolator:dewpoint-sea-level-degc</name>
     <enable>
@@ -48,7 +48,7 @@
     <type>noise-spike</type>
     <max-rate-of-change>0.1667</max-rate-of-change>
   </filter>
-  
+
   <filter>
     <!--
       transfer the interpolated QNH to the global environment
@@ -127,7 +127,7 @@
   </filter>
 
   <filter>
-    <name>EnvironmentInterpolator:turbulence-magnitude</name>
+    <name>EnvironmentInterpolator:turbulence-raw-magnitude</name>
     <enable>
       <condition>
         <property>/environment/config/enabled</property>
@@ -139,12 +139,34 @@
       </condition>
       <property>/environment/config/presets/turbulence-magnitude-norm-override</property>
     </input>
-    <input>/environment/config/interpolated/turbulence/magnitude-norm</input>
-    <output>/environment/turbulence/magnitude-norm</output>
+    <input>
+      <property>/environment/config/interpolated/turbulence/magnitude-norm</property>
+    </input>
+    <output>/environment/turbulence/raw-magnitude-norm</output>
     <type>exponential</type>
     <filter-time>1</filter-time>
   </filter>
 
+  <filter>
+    <name>EnvironmentInterpolator:turbulence-magnitude</name>
+    <enable>
+      <condition>
+        <property>/environment/config/enabled</property>
+      </condition>
+    </enable>
+    <input>
+      <expression>
+        <pow>
+          <property>/environment/turbulence/raw-magnitude-norm</property>
+          <property>/environment/turbulence/sensitivity</property>
+        </pow>
+      </expression>
+    </input>
+    <output>/environment/turbulence/magnitude-norm</output>
+    <type>gain</type>
+    <gain>1</gain>
+  </filter>
+
   <filter>
     <name>EnvironmentInterpolator:turbulence-rate</name>
     <enable>
diff --git a/Input/Joysticks/ThrustMaster/T-Flight-Hotas-X.xml b/Input/Joysticks/ThrustMaster/T-Flight-Hotas-X.xml
new file mode 100644
index 000000000..1bbb5e386
--- /dev/null
+++ b/Input/Joysticks/ThrustMaster/T-Flight-Hotas-X.xml
@@ -0,0 +1,528 @@
+<?xml version="1.0"?>
+<!--
+Joystick binding for ThrustMaster T.Flight Hotas X
+Adrien Bailly
+
+Original file by 'flug':
+http://www.flightgear.org/forums/viewtopic.php?f=2&t=5517
+
+
+Axis #   (direction)         mapped to
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+axis 0:  (left-right)        aileron
+axis 1:  (forward-backward)  elevator
+axis 2:  (slider)            throttle
+axis 3:  (twist)             rudder
+axis 4:  (top hat)           view left/right
+
+Note that internally, FG numbers buttons starting with 0.  The markings on the 
+HOTAS-X start with Button 1, and I have used the HOTAS-X number markings below:
+
+Button #     Location               Function
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+button 1:   (joystick R1)           Brakes & reset view
+button 2:   (joystick L1)           Push-To-Talk (for fgcom)
+button 3:   (joystick R3)           Trim nose down
+button 4:   (joystick L3)           Trim nose up
+
+NO MODIFIER:
+   button 5:   (throttle)     Flaps up
+   button 6:   (throttle)     Flaps down
+   button 7:   (throttle)     Gear up/down
+   button 8:   (throttle)     Switch view
+
+MODIFIER 1 (keep button R2 down):
+   button 5:   (throttle)     Mixture rich
+   button 6:   (throttle)     Mixture lean
+   button 7    (throttle)     Propeller coarse
+   button 8:   (throttle)     Propeller fine
+
+MODIFIER 2 (keep button L2 down):
+   button 5:   (throttle)     Battery ON/OFF
+   button 6:   (throttle)     Fuel selector
+   button 7    (throttle)     Magnetos
+   button 8:   (throttle)     ???
+
+MODIFIER 1+2 (keep buttons L2 and R2 down):
+   button 5:   (throttle)     ???
+   button 6:   (throttle)     ???
+   button 7    (throttle)     ???
+   button 8:   (throttle)     ???
+
+button 9:   (throttle R2)  Modifier 1
+button 10:  (throttle L2)  Modifier 2
+
+button SE:  (base SE)      ???
+button ST:  (base ST)      ???
+
+HAT SWITCH
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+With the rocker switch and throttle twist controlling view direction, it is easy
+to look all around in different directions.
+-->
+
+<PropertyList>
+   <name type="string">T.Flight Hotas X</name>
+   <name type="string">Hotas X</name>
+   <name type="string">Thrustmaster Hotas X</name>
+   <name type="string">Thrustmaster T.Flight Hotas X</name>
+   <nasal>
+      <script>
+         <![CDATA[
+         setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1", 0);
+         setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2", 0);
+         ]]>
+      </script>
+   </nasal>
+    
+   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Axis Bindings ~~~~~~~~~~~~~~~~~~~~~~~~ -->
+   <axis n="0">
+      <desc>Joystick: Aileron</desc>
+      <binding>
+         <command>property-scale</command>
+         <property>/controls/flight/aileron</property>
+         <factor type="double">1.0</factor>
+         <power type="double">1.0</power>
+      </binding>
+   </axis>
+
+   <axis n="1">
+      <desc>Joystick: Elevator</desc>
+      <binding>
+         <command>property-scale</command>
+         <property>/controls/flight/elevator</property>
+         <factor type="double">-1.0</factor>
+         <power type="double">1.0</power>
+      </binding>
+   </axis>
+
+   <axis n= "2">
+      <desc>Throttle</desc>
+      <binding>
+         <command>nasal</command>
+         <script>controls.throttleAxis()</script>
+      </binding>
+   </axis>
+
+   <axis n="3">
+      <desc>Rudder</desc>
+      <binding>
+         <command>property-scale</command>
+         <property>/controls/flight/rudder</property>
+         <power type="double">1.0</power>
+      </binding>
+   </axis>
+
+   <!-- Throttle rocker switch axis pans l/r -->
+   <axis n="4">
+      <desc>Throttle rocker switch: View Left/Right</desc>
+      <dead-band type="double">0.05</dead-band>
+      <binding>
+         <command>property-scale</command>
+         <property>/sim/current-view/heading-offset-deg</property>
+         <factor type="double">-180</factor>
+         <power type="double">1.2</power>
+      </binding>
+   </axis>
+
+   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Hat Switch ~~~~~~~~~~~~~~~~~~~~~~~~ -->
+   <axis n="5">
+      <desc>Hat Switch: View Direction (use mod buttons for different effects)</desc>
+      <low>
+         <repeatable>true</repeatable>
+         <binding>
+            <command>property-adjust</command>
+            <property>/sim/current-view/goal-heading-offset-deg</property>
+            <step type="double">5.0</step>
+         </binding>
+      </low>
+      <high>
+         <repeatable>true</repeatable>
+         <binding>
+            <command>property-adjust</command>
+            <property>/sim/current-view/goal-heading-offset-deg</property>
+            <step type="double">-5.0</step>
+         </binding>
+      </high>
+   </axis>
+
+   <axis n="6">
+      <desc>Hat Switch: View Elevation (use mod buttons for different effects)</desc>
+      <low>
+         <repeatable>true</repeatable>
+         <binding>
+            <command>property-adjust</command>
+            <property>/sim/current-view/goal-pitch-offset-deg</property>
+            <step type="double">5.0</step>
+         </binding>
+      </low>
+      <high>
+         <repeatable>true</repeatable>
+         <binding>
+            <command>property-adjust</command>
+            <property>/sim/current-view/goal-pitch-offset-deg</property>
+            <step type="double">-5.0</step>
+         </binding>
+      </high>
+   </axis>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Button Bindings ~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+   <!-- Trigger (R1) -->
+   <button n="0">
+      <desc>Button R1(1) (trigger): Brakes + reset to pilot view</desc>
+      <repeatable type="bool">true</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            controls.applyBrakes(1.0);
+            setprop("/sim/current-view/view-number", 0);
+            view.resetView();
+         </script>
+      </binding>
+      <mod-up>
+      <binding>
+         <command>nasal</command>
+         <script>
+            controls.applyBrakes(0.0);
+         </script>
+      </binding>
+      </mod-up>
+   </button>
+
+   <!-- Button right of Hat switch, Labeled L1(2) -->
+   <button n="1">
+      <desc>Button L1(2) (joystick center): Push-To-Talk (for fgcom)</desc>
+      <binding>
+         <command>nasal</command>
+         <script>
+             controls.ptt(1); # push-to-talk (fgcom) ON
+         </script>
+      </binding>
+      <mod-up>
+         <binding>
+            <command>nasal</command>
+            <script>
+                controls.ptt(0); # push-to-talk (fgcom) OFF
+            </script>
+         </binding>
+      </mod-up>
+   </button>
+
+
+   <!-- Front button, right of trigger, (R3) -->
+   <button n="2">
+      <desc>Button R3(3): Elevator trim down</desc>
+      <repeatable type="bool">true</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            controls.elevatorTrim(1);
+            gui.popupTip(sprintf("Elevator trim: %d", 100 * getprop("/controls/flight/elevator-trim")));
+         </script>
+      </binding>
+   </button>
+
+
+   <!-- Button far right of Hat switch, Labeled L3(4) -->
+   <button n="3">
+      <desc>Button L3(4): Elevator trim down</desc>
+      <repeatable type="bool">true</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            controls.elevatorTrim(-1);
+            gui.popupTip(sprintf("Elevator trim: %d", 100 * getprop("/controls/flight/elevator-trim")));
+         </script>
+      </binding>
+   </button>
+
+
+   <!-- Throttle Button labeled 5 -->
+   <button n="4">
+      <desc>Button (5): Flaps up / Mixture rich / Battery on-off / ???</desc>
+      <repeatable type="bool">false</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1");
+            mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2");           
+            if(mod1==0 and mod2==0) {
+               controls.flapsDown(-1);
+               gui.popupTip(sprintf("Flaps: %d deg", 30*getprop("/controls/flight/flaps")+0.1));
+            }
+            elsif(mod1==1 and mod2==0) {
+               controls.adjMixture(10);
+               gui.popupTip(sprintf("Mixture rich"));
+            }
+            elsif(mod1 == 0 and mod2==1) {
+               j = getprop("/controls/electric/battery-switch");
+               if(j == 0) {  
+                  setprop("/controls/electric/battery-switch", 1);
+                  gui.popupTip(sprintf("Battery ON"));
+               } else { 
+                  setprop("/controls/electric/battery-switch", 0);
+                  gui.popupTip(sprintf("Battery OFF"));
+               }
+            }
+            elsif(mod1==1 and mod2==1) {
+            
+            }
+         </script>
+      </binding>
+      <mod-up>
+         <binding>
+            <command>nasal</command>
+            <script>
+               mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1");
+               mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2");           
+               if(mod1==0 and mod2==0) {
+                  controls.flapsDown(0);
+                  gui.popupTip(sprintf("Flaps: %d deg", 30*getprop("/controls/flight/flaps")+0.1));
+               }
+               elsif(mod1==1 and mod2==0) {
+                  # mixture
+               }
+               elsif(mod1 == 0 and mod2==1) {
+                  
+               }
+               elsif(mod1==1 and mod2==1) {
+               
+               }               
+            </script>
+         </binding>
+      </mod-up>
+   </button>   
+
+   <!-- Throttle Button labeled 6 -->
+   <button n="5">
+      <desc>Button (6): Flaps down / Mixture lean / Fuel selector / ???</desc>
+      <repeatable type="bool">false</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1");
+            mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2");             
+            if(mod1==0 and mod2==0) {
+               controls.flapsDown(1);
+               gui.popupTip(sprintf("Flaps: %d deg", 30*getprop("/controls/flight/flaps")+0.1));
+            }
+            elsif(mod1==1 and mod2==0) {
+               controls.adjMixture(-10);
+               gui.popupTip(sprintf("Mixture lean"));
+            }
+            elsif(mod1 == 0 and mod2==1) {
+               k = getprop("/controls/fuel/tank/fuel_selector");
+               if (k == 0) {
+                  setprop("/controls/fuel/tank/fuel_selector", 1);
+                  setprop("/controls/engines/engine/fuel-pump", 1);
+               } else { 
+                  setprop("/controls/fuel/tank/fuel_selector", 0);
+                  setprop("/controls/engines/engine/fuel-pump", 0);
+               }
+            }
+            elsif(mod1==1 and mod2==1) {
+            
+            }                 
+         </script>
+      </binding>
+      <mod-up>
+         <binding>
+            <command>nasal</command>
+            <script>
+               mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1");
+               mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2");             
+               if(mod1==0 and mod2==0) {
+                  controls.flapsDown(0);
+                  gui.popupTip(sprintf("Flaps: %d deg", 30*getprop("/controls/flight/flaps")+0.1));
+               }
+               elsif(mod1==1 and mod2==0) {
+                  # mixture
+               }
+               elsif(mod1 == 0 and mod2==1) {
+               
+               }
+               elsif(mod1==1 and mod2==1) {
+               
+               }                
+            </script>
+         </binding>
+      </mod-up>
+   </button>  
+
+   <!-- Throttle Button labeled 7 (circle)-->
+   <button n="6">
+      <desc>Button (7): Landing Gear Toggle / Propeller coarse / Magnetos / ???</desc>
+      <repeatable type="bool">false</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1");
+            mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2");             
+            if(mod1==0 and mod2==0) {
+               controls.gearToggle();
+            }
+            elsif(mod1==1 and mod2==0) {
+               controls.adjPropeller(10);
+               gui.popupTip(sprintf("Propeller coarse"));
+            }
+            elsif(mod1 == 0 and mod2==1) {
+               l = getprop("/controls/engines/engine/magnetos");
+               if (l == 0) {
+                  props.setAll("/controls/engines/engine", "magnetos", 1);
+               } elsif ( l == 1 ) {
+                  props.setAll("/controls/engines/engine", "magnetos", 2);
+               } elsif ( l == 2 ) {
+                  props.setAll("/controls/engines/engine", "magnetos", 3);
+               } elsif ( l == 3 ) {
+                  props.setAll("/controls/engines/engine", "magnetos", 0);
+               }
+            }
+            elsif(mod1==1 and mod2==1) {
+            
+            }                 
+         </script>
+      </binding>
+      <mod-up>
+         <binding>
+            <command>nasal</command>
+            <script>
+               mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1");
+               mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2");           
+               if(mod1==0 and mod2==0) {
+                  # gear
+               }
+               elsif(mod1==1 and mod2==0) {
+                  # propeller
+               }
+               elsif(mod1 == 0 and mod2==1) {
+                  # magnetos
+               }
+               elsif(mod1==1 and mod2==1) {
+               
+               }                
+            </script>
+         </binding>
+      </mod-up>
+   </button>
+   
+   <!-- Throttle Button labeled 8 (triangle) -->
+   <button n="7">
+      <desc>Button (8): Switch view / Propeller fine / Starter / ???</desc>
+      <repeatable type="bool">false</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1");
+            mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2");            
+            if(mod1==0 and mod2==0) {
+               view.stepView(1);
+            }
+            elsif(mod1==1 and mod2==0) {
+               controls.adjPropeller(-10);
+               gui.popupTip(sprintf("Propeller fine"));
+            }
+            elsif(mod1==0 and mod2==1) {
+               setprop("/controls/engines/engine/starter", 1);
+               setprop("/controls/engines/engine[1]/starter", 1);
+               setprop("/controls/engines/engine[2]/starter", 1);
+               setprop("/controls/engines/engine[3]/starter", 1);
+               setprop("/controls/engines/engine[4]/starter", 1);
+               gui.popupTip(sprintf("Cranking..."));
+            }
+            elsif(mod1==1 and mod2==1) {
+            
+            }                 
+         </script>
+      </binding>
+      <mod-up>
+         <binding>
+            <command>nasal</command>
+            <script>
+               mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1");
+               mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2");            
+               if(mod1==0 and mod2==0) {
+                  # switch views
+               }
+               elsif(mod1==1 and mod2==0) {
+                  # propeller
+               }
+               elsif(mod1==0 and mod2==1) {
+                  setprop("/controls/engines/engine/starter", 0);
+                  setprop("/controls/engines/engine[1]/starter", 0);
+                  setprop("/controls/engines/engine[2]/starter", 0);
+                  setprop("/controls/engines/engine[3]/starter", 0);
+                  setprop("/controls/engines/engine[4]/starter", 0);
+               }
+               elsif(mod1==1 and mod2==1) {
+               
+               }                
+            </script>
+         </binding>
+      </mod-up>
+   </button>   
+   
+   <!-- Throttle Button labeled R2(9) -->
+   <button n="8">
+      <desc>Button R2(9): Modifier 1</desc>
+      <repeatable type="bool">false</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1", 1);
+         </script>
+      </binding>
+      <mod-up>
+         <binding>
+            <command>nasal</command>
+            <script>
+               setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1", 0);
+            </script>
+         </binding>
+      </mod-up>
+   </button>
+   
+   <!-- Throttle Button labeled L2(10) -->
+   <button n="9">
+      <desc>Button L2(10): Modifier2</desc>
+      <repeatable type="bool">false</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2", 1);
+         </script>
+      </binding>
+      <mod-up>
+         <binding>
+            <command>nasal</command>
+            <script>
+               setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2", 0);
+            </script>
+         </binding>
+      </mod-up>
+   </button> 
+   
+   <!-- Base Button SE -->
+   <button n="10">
+      <desc>Button SE: ???</desc>
+      <repeatable type="bool">false</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            gui.popupTip(sprintf("Button n=10 unused"));
+         </script>
+      </binding>
+   </button>  
+   
+   <!-- Base Button ST -->
+   <button n="11">
+      <desc>Button ST: ???</desc>
+      <repeatable type="bool">false</repeatable>
+      <binding>
+         <command>nasal</command>
+         <script>
+            gui.popupTip(sprintf("Button n=11 unused"));
+         </script>
+      </binding>
+   </button>  
+</PropertyList>
diff --git a/gui/dialogs/route-manager.xml b/gui/dialogs/route-manager.xml
index ed72e6310..90904b350 100644
--- a/gui/dialogs/route-manager.xml
+++ b/gui/dialogs/route-manager.xml
@@ -138,7 +138,6 @@ command interface /autopilot/route-manager/input:
                     dest.getNode("runway").clearValue();
                 }
 
-                print("updated runways");
                 gui.dialog_update("route-manager");
             }
 
diff --git a/gui/dialogs/weather.xml b/gui/dialogs/weather.xml
index 471dde092..af363d4d8 100644
--- a/gui/dialogs/weather.xml
+++ b/gui/dialogs/weather.xml
@@ -56,7 +56,7 @@
           <layout>hbox</layout>
           <text>
             <label>Cloud Layers (All Altitudes ft-AMSL)</label>
-		    <enable>
+            <enable>
               <property>/sim/gui/dialogs/weather-scenario/state</property>
             </enable>
           </text>
@@ -74,7 +74,7 @@
               <label>Altitude (ft)</label>
               <row>0</row>
               <col>1</col>
-		      <enable>
+              <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -84,7 +84,7 @@
               <row>0</row>
               <col>2</col>
               <width>80</width>
-		      <enable>
+              <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -93,7 +93,7 @@
               <label>Thickness (ft)</label>
               <row>0</row>
               <col>3</col>
-		      <enable>
+              <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -406,7 +406,7 @@
           <layout>hbox</layout>
           <text>
             <label>Precipitation</label>
-		    <enable>
+        <enable>
               <property>/sim/gui/dialogs/weather-scenario/state</property>
             </enable>
           </text>
@@ -424,7 +424,7 @@
               <row>0</row>
               <col>0</col>
               <label>Rain</label>
-		      <enable>
+          <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -433,7 +433,7 @@
               <row>0</row>
               <col>1</col>
               <label>Snow</label>
-		      <enable>
+          <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -478,7 +478,7 @@
               <row>0</row>
               <col>3</col>
               <label>QNH (inHg)</label>
-		      <enable>
+          <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -1284,7 +1284,7 @@
           <layout>hbox</layout>
           <text>
             <label>Boundary (All Elevations ft-AGL)</label>
-		    <enable>
+        <enable>
               <property>/sim/gui/dialogs/weather-scenario/state</property>
             </enable>
           </text>
@@ -1303,7 +1303,7 @@
               <row>0</row>
               <col>0</col>
               <label>Elevation</label>
-		      <enable>
+          <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -1313,7 +1313,7 @@
               <col>1</col>
               <colspan>2</colspan>
               <label>Wind (dir/kt)</label>
-		      <enable>
+          <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -1322,7 +1322,7 @@
               <row>0</row>
               <col>3</col>
               <label>Vis (m)</label>
-		      <enable>
+          <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -1331,7 +1331,7 @@
               <row>0</row>
               <col>4</col>
               <label>Temp (C)</label>
-		      <enable>
+          <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -1340,7 +1340,7 @@
               <row>0</row>
               <col>5</col>
               <label>Dewpt (C)</label>
-		      <enable>
+              <enable>
                 <property>/sim/gui/dialogs/weather-scenario/state</property>
               </enable>
             </text>
@@ -1709,42 +1709,65 @@
       <empty>
         <stretch>true</stretch>
       </empty>
+      <text>
+        <label>Data is valid</label>
+      </text>
       <checkbox>
         <property>/environment/metar/valid</property>
-        <label>valid</label>
+        <label/>
         <live>true</live>
-        <editable>false</editable>
+        <enable><false/></enable>
       </checkbox>
     </group>
 
-    <textbox>
-      <name>metar</name>
-      <halign>fill</halign>
-      <stretch>true</stretch>
-      <pref-width>180</pref-width>
-      <pref-height>50</pref-height>
-      <slider>20</slider>
-      <editable>true</editable>
-      <wrap>true</wrap>
-      <live>false</live>
-      <property>sim/gui/dialogs/weather-scenario/metar</property>
-      <enable>
-        <greater-than>
-          <property>/sim/gui/dialogs/weather-scenario/state</property>
-          <value type="int">1</value>
-        </greater-than>>
-      </enable>
-      <binding>
-        <command>dialog-apply</command>
-        <object-name>metar</object-name>
-      </binding>
-      <binding>
-        <command>nasal</command>
-        <script>
-          setprop( "/environment/metar/data", getprop( "sim/gui/dialogs/weather-scenario/metar") );
-        </script>
-      </binding>
-    </textbox>
+    <group>
+      <layout>hbox</layout>
+      <textbox>
+        <name>metar</name>
+        <halign>fill</halign>
+        <stretch>true</stretch>
+        <pref-width>180</pref-width>
+        <pref-height>50</pref-height>
+        <slider>20</slider>
+        <editable>true</editable>
+        <wrap>true</wrap>
+        <live>false</live>
+        <property>sim/gui/dialogs/weather-scenario/metar</property>
+        <enable>
+          <greater-than>
+            <property>/sim/gui/dialogs/weather-scenario/state</property>
+            <value type="int">1</value>
+          </greater-than>>
+        </enable>
+        <binding>
+          <command>dialog-apply</command>
+          <object-name>metar</object-name>
+        </binding>
+        <binding>
+          <command>nasal</command>
+          <script>
+            setprop( "/environment/metar/data", getprop( "sim/gui/dialogs/weather-scenario/metar") );
+          </script>
+        </binding>
+      </textbox>
+      <button>
+        <legend>Apply</legend>
+        <key>Esc</key>
+        <pref-width>50</pref-width>
+        <pref-height>50</pref-height>
+        <border>2</border>
+        <binding>
+          <command>dialog-apply</command>
+          <object-name>metar</object-name>
+        </binding>
+        <binding>
+          <command>nasal</command>
+          <script>
+            setprop( "/environment/metar/data", getprop( "sim/gui/dialogs/weather-scenario/metar") );
+          </script>
+        </binding>
+      </button>
+    </group>
 
     <!-- Automatic Weather -->
 
diff --git a/materials.xml b/materials.xml
index 4d77b60aa..ab5264a26 100644
--- a/materials.xml
+++ b/materials.xml
@@ -748,6 +748,7 @@ Shared parameters for various materials.
   <name>DeciduousBroadCover</name>
   <name>DeciduousForest</name>
   <name>Bog</name>
+  <name>Heath</name>
   <texture>Terrain/deciduous1.png</texture>
   <texture>Terrain/deciduous2.png</texture>
   <texture>Terrain/deciduous4.png</texture>
@@ -869,6 +870,7 @@ Shared parameters for various materials.
   <name>ShrubCover</name>
   <name>ShrubGrassCover</name>
   <name>ScrubCover</name>
+  <name>Sclerophyllous</name>
   <texture>Terrain/shrub1.png</texture>
 <!--
   <texture>Terrain/shrub.png</texture>
@@ -910,6 +912,9 @@ Shared parameters for various materials.
   </condition>
   <name>BuiltUpCover</name>
   <name>Urban</name>
+  <name>Construction</name>
+  <name>Industrial</name>
+  <name>Port</name>
   <effect>Effects/urban</effect>
   <texture-set>
    <texture>Terrain/city1.png</texture>
@@ -1004,6 +1009,7 @@ Shared parameters for various materials.
    </equals>
   </condition>
   <name>Town</name>
+  <name>SubUrban</name>
   <texture>Terrain/Town1.png</texture>
   <xsize>1024</xsize>
   <ysize>1024</ysize>
@@ -1067,6 +1073,8 @@ Shared parameters for various materials.
   <name>Stream</name>
   <name>Canal</name>
   <name>Lagoon</name>
+  <name>Estuary</name>
+  <name>Watercourse</name>
   <name>Saline</name>
   <texture>Terrain/water-lake.png</texture>
   <xsize>400</xsize>
@@ -1143,6 +1151,7 @@ Shared parameters for various materials.
   <name>Marsh</name>
   <name>Littoral</name>
   <name>FloodLand</name>
+  <name>SaltMarsh</name>
   <name>HerbWetlandCover</name>
   <name>WoodedWetlandCover</name>
   <texture>Terrain/marsh2.png</texture>
@@ -1261,6 +1270,7 @@ Shared parameters for various materials.
   <name>Grass</name>
   <name>Airport</name>
   <name>AirportKeep</name>
+  <name>Greenspace</name>
   <texture>Terrain/airport.png</texture>
   <xsize>125</xsize>
   <ysize>125</ysize>
@@ -1362,6 +1372,8 @@ Shared parameters for various materials.
   <name>IrrCropPastureCover</name>
   <name>IrrCrop</name>
   <name>Orchard</name>
+  <name>Olives</name>
+  <name>Vineyard</name>
   <name>Rice</name>
   <texture>Terrain/irrcrop1.png</texture>
   <texture>Terrain/irrcrop2.png</texture>
@@ -1426,6 +1438,7 @@ Shared parameters for various materials.
   <effect>Effects/crop</effect>
   <name>DryCropPastureCover</name>
   <name>DryCrop</name>
+  <name>NaturalCrop</name>
   <texture>Terrain/drycrop1.png</texture>
   <texture>Terrain/drycrop2.png</texture>
   <texture>Terrain/drycrop3.png</texture>
@@ -1492,6 +1505,7 @@ Shared parameters for various materials.
   <effect>Effects/cropgrass</effect>
   <name>CropGrassCover</name>
   <name>CropGrass</name>
+  <name>Grassland</name>
   <texture>Terrain/cropgrass1.png</texture>
   <texture>Terrain/cropgrass2.png</texture>
   <texture>Terrain/cropgrass3.png</texture>
@@ -1533,6 +1547,7 @@ Shared parameters for various materials.
   </condition>
   <name>CropWoodCover</name>
   <name>CropWood</name>
+  <name>AgroForest</name>
   <effect>Effects/landmass</effect>
   <texture>Terrain/cropwood.png</texture>
   <xsize>2000</xsize>
@@ -1594,6 +1609,7 @@ Shared parameters for various materials.
   <name>DeciduousBroadCover</name>
   <name>DeciduousForest</name>
   <name>Bog</name>
+  <name>Heath</name>
   <texture>Terrain.winter/deciduous1.png</texture>
   <texture>Terrain.winter/deciduous2.png</texture>
   <texture>Terrain.winter/deciduous4.png</texture>
@@ -1711,6 +1727,7 @@ Shared parameters for various materials.
   <name>ShrubCover</name>
   <name>ShrubGrassCover</name>
   <name>ScrubCover</name>
+  <name>Sclerophyllous</name>
   <texture>Terrain.winter/shrub.png</texture>
   <texture>Terrain.winter/shrub2.png</texture>
   <texture>Terrain.winter/shrub3.png</texture>
@@ -1749,6 +1766,9 @@ Shared parameters for various materials.
   </condition>
   <name>BuiltUpCover</name>
   <name>Urban</name>
+  <name>Construction</name>
+  <name>Industrial</name>
+  <name>Port</name>
   <effect>Effects/urban</effect>
   <texture-set>
    <texture>Terrain/city1.png</texture>
@@ -1843,6 +1863,7 @@ Shared parameters for various materials.
    </equals>
   </condition>
   <name>Town</name>
+  <name>SubUrban</name>
   <texture>Terrain.winter/Town1.png</texture>
   <xsize>1024</xsize>
   <ysize>1024</ysize>
@@ -1914,6 +1935,8 @@ Shared parameters for various materials.
   <name>Stream</name>
   <name>Canal</name>
   <name>Lagoon</name>
+  <name>Estuary</name>
+  <name>Watercourse</name>
   <name>Saline</name>
   <texture>Terrain.winter/water-lake.png</texture>
   <xsize>400</xsize>
@@ -1990,6 +2013,7 @@ Shared parameters for various materials.
   <name>Marsh</name>
   <name>Littoral</name>
   <name>FloodLand</name>
+  <name>SaltMarsh</name>
   <name>HerbWetlandCover</name>
   <name>WoodedWetlandCover</name>
   <texture>Terrain.winter/marsh2.png</texture>
@@ -2104,6 +2128,7 @@ Shared parameters for various materials.
   <name>Grass</name>
   <name>Airport</name>
   <name>AirportKeep</name>
+  <name>Greenspace</name>
   <texture>Terrain.winter/airport.png</texture>
   <xsize>125</xsize>
   <ysize>125</ysize>
@@ -2203,6 +2228,9 @@ Shared parameters for various materials.
   <name>IrrCropPastureCover</name>
   <name>IrrCrop</name>
   <name>Orchard</name>
+  <name>Olives</name>
+  <name>Vineyard</name>
+  <name>Rice</name>
   <texture>Terrain.winter/irrcrop1.png</texture>
   <texture>Terrain.winter/irrcrop2.png</texture>
   <texture>Terrain.winter/irrcrop3.png</texture>
@@ -2267,6 +2295,7 @@ Shared parameters for various materials.
   </condition>
   <name>DryCropPastureCover</name>
   <name>DryCrop</name>
+  <name>NaturalCrop</name>
   <texture>Terrain.winter/drycrop1.png</texture>
   <texture>Terrain.winter/drycrop2.png</texture>
   <texture>Terrain.winter/drycrop3.png</texture>
@@ -2332,6 +2361,7 @@ Shared parameters for various materials.
   </condition>
   <name>CropGrassCover</name>
   <name>CropGrass</name>
+  <name>Grassland</name>
   <texture>Terrain.winter/cropgrass1.png</texture>
   <texture>Terrain.winter/cropgrass2.png</texture>
   <texture>Terrain.winter/cropgrass3.png</texture>
@@ -2374,6 +2404,7 @@ Shared parameters for various materials.
    </equals>
   </condition>
   <name>CropWoodCover</name>
+  <name>AgroForest</name>
   <texture>Terrain.winter/cropwood.png</texture>
   <xsize>2000</xsize>
   <ysize>2000</ysize>
@@ -2555,6 +2586,7 @@ Shared parameters for various materials.
   <name>Dirt</name>
   <name>OpenMining</name>
   <name>Rock</name>
+  <name>Dump</name>
   <texture>Terrain/rock.png</texture>
   <xsize>500</xsize>
   <ysize>500</ysize>
@@ -2566,6 +2598,7 @@ Shared parameters for various materials.
 
  <material>
   <name>Lava</name>
+  <name>Burnt</name>
   <texture>Terrain/lava.png</texture>
   <xsize>500</xsize>
   <ysize>500</ysize>
@@ -2575,6 +2608,18 @@ Shared parameters for various materials.
   <bumpiness>0.3</bumpiness>
  </material>
 
+ <material>
+  <name>Asphalt</name>
+  <texture>Terrain/asphalt.png</texture>
+  <xsize>400</xsize>
+  <ysize>400</ysize>
+  <solid>1</solid>
+  <friction-factor>1.0</friction-factor>
+  <rolling-friction>0.02</rolling-friction>
+  <bumpiness>0.01</bumpiness>
+  <load-resistance>1e10</load-resistance>
+ </material>
+
  <material>
   <name>Freeway</name>
   <name>Road</name>
diff --git a/preferences.xml b/preferences.xml
index 42157e508..4a25675cf 100644
--- a/preferences.xml
+++ b/preferences.xml
@@ -575,7 +575,7 @@ Started September 2000 by David Megginson, david@megginson.com
 
   <mouse>
     <hide-cursor type="bool" userarchive="y">true</hide-cursor>
-    <cursor-timeout-sec type="int" userarchive="y">10.0</cursor-timeout-sec>
+    <cursor-timeout-sec type="double" userarchive="y">10.0</cursor-timeout-sec>
   </mouse>
 
   <replay>