diff --git a/Tools/ArdupilotMegaPlanner/Controls/HUD.cs b/Tools/ArdupilotMegaPlanner/Controls/HUD.cs
index 66b86006556b30d98f74e3e10302a9c4e6e79656..33f1ae38ec7d406e04d6384a9ab8872b2d6d3f96 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/HUD.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/HUD.cs
@@ -7,7 +7,7 @@ using System.Text;
 using System.Windows.Forms;
 using System.IO;
 using System.Drawing.Imaging;
-
+using System.Collections;
 using System.Threading;
  
 using System.Drawing.Drawing2D;
@@ -88,6 +88,7 @@ namespace ArdupilotMega.Controls
         float _airspeed = 0;
         float _targetspeed = 0;
         float _batterylevel = 0;
+        float _current = 0;
         float _batteryremaining = 0;
         float _gpsfix = 0;
         float _gpshdop = 0;
@@ -128,6 +129,8 @@ namespace ArdupilotMega.Controls
         [System.ComponentModel.Browsable(true), System.ComponentModel.Category("Values")]
         public float batteryremaining { get { return _batteryremaining; } set { if (_batteryremaining != value) { _batteryremaining = value; this.Invalidate(); } } }
         [System.ComponentModel.Browsable(true), System.ComponentModel.Category("Values")]
+        public float current { get { return _current; } set { if (_current != value) { _current = value; this.Invalidate(); } } }
+        [System.ComponentModel.Browsable(true), System.ComponentModel.Category("Values")]
         public float gpsfix { get { return _gpsfix; } set { if (_gpsfix != value) { _gpsfix = value; this.Invalidate(); } } }
         [System.ComponentModel.Browsable(true), System.ComponentModel.Category("Values")]
         public float gpshdop { get { return _gpshdop; } set { if (_gpshdop != value) { _gpshdop = value; this.Invalidate(); } } }
@@ -155,6 +158,17 @@ namespace ArdupilotMega.Controls
 
         [System.ComponentModel.Browsable(true), System.ComponentModel.Category("Values")]
         public int status { get; set; }
+
+        public struct Custom
+        {
+            //public Point Position;
+            //public float FontSize;
+            public string Header;
+            public System.Reflection.PropertyInfo Item;
+            public float GetValue { get { return (float)Item.GetValue((object)MainV2.cs, null); } }
+        }
+
+        public Hashtable CustomItems = new Hashtable();
         
         int statuslast = 0;
         DateTime armedtimer = DateTime.MinValue;
@@ -353,8 +367,8 @@ namespace ArdupilotMega.Controls
             {
                 countdate = DateTime.Now;
                 Console.WriteLine("HUD " + count + " hz drawtime " + (huddrawtime / count) + " gl " + opengl);
-                if ((huddrawtime / count) > 1000)
-                    opengl = false;
+              //  if ((huddrawtime / count) > 1000)
+                  //  opengl = false;
 
                 count = 0;
                 huddrawtime = 0;
@@ -1373,7 +1387,7 @@ namespace ArdupilotMega.Controls
 
                     drawstring(graphicsObject, "Bat", font, fontsize + 2, whiteBrush, fontsize, this.Height - 30 - fontoffset);
                     drawstring(graphicsObject, _batterylevel.ToString("0.00v"), font, fontsize + 2, whiteBrush, fontsize * 4, this.Height - 30 - fontoffset);
-                    drawstring(graphicsObject, _batteryremaining.ToString("0%"), font, fontsize + 2, whiteBrush, fontsize * 9, this.Height - 30 - fontoffset);
+                    drawstring(graphicsObject, _current.ToString("0 A"), font, fontsize + 2, whiteBrush, fontsize * 9, this.Height - 30 - fontoffset);
                 }
                 // gps
 
@@ -1402,6 +1416,21 @@ namespace ArdupilotMega.Controls
                 if (isNaN)
                     drawstring(graphicsObject, "NaN Error " + DateTime.Now, font, this.Height / 30 + 10, Brushes.Red, 50, 50);
 
+                // custom user items
+                graphicsObject.ResetTransform();
+                int height = this.Height - 30 - fontoffset - fontsize - 8;
+                foreach (string key in CustomItems.Keys)
+                {
+                    try
+                    {
+                        Custom item = (Custom)CustomItems[key];
+                        drawstring(graphicsObject, item.Header + item.GetValue.ToString("0.##"), font, fontsize + 2, whiteBrush, this.Width / 8, height);
+                        height -= fontsize+5;
+                    }
+                    catch { }
+
+                }
+                
 
                 if (!opengl)
                 {
diff --git a/Tools/ArdupilotMegaPlanner/Controls/QuickView.Designer.cs b/Tools/ArdupilotMegaPlanner/Controls/QuickView.Designer.cs
index 63a734a0c62ac93e362788b98228d0846e597d78..38991fb95745a7ff465acb273a4f3270e741269e 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/QuickView.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/QuickView.Designer.cs
@@ -36,22 +36,24 @@
             // 
             // labelWithPseudoOpacity1
             // 
+            this.labelWithPseudoOpacity1.AutoSize = true;
             this.labelWithPseudoOpacity1.Dock = System.Windows.Forms.DockStyle.Fill;
             this.labelWithPseudoOpacity1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.labelWithPseudoOpacity1.Location = new System.Drawing.Point(3, 0);
             this.labelWithPseudoOpacity1.Name = "labelWithPseudoOpacity1";
-            this.labelWithPseudoOpacity1.Size = new System.Drawing.Size(161, 55);
+            this.labelWithPseudoOpacity1.Size = new System.Drawing.Size(161, 50);
             this.labelWithPseudoOpacity1.TabIndex = 0;
             this.labelWithPseudoOpacity1.Text = "Altitude:";
             this.labelWithPseudoOpacity1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
             // 
             // labelWithPseudoOpacity2
             // 
+            this.labelWithPseudoOpacity2.AutoSize = true;
             this.labelWithPseudoOpacity2.Dock = System.Windows.Forms.DockStyle.Fill;
             this.labelWithPseudoOpacity2.Font = new System.Drawing.Font("Microsoft Sans Serif", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.labelWithPseudoOpacity2.Location = new System.Drawing.Point(170, 0);
             this.labelWithPseudoOpacity2.Name = "labelWithPseudoOpacity2";
-            this.labelWithPseudoOpacity2.Size = new System.Drawing.Size(162, 55);
+            this.labelWithPseudoOpacity2.Size = new System.Drawing.Size(162, 50);
             this.labelWithPseudoOpacity2.TabIndex = 1;
             this.labelWithPseudoOpacity2.Text = "0.0";
             this.labelWithPseudoOpacity2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
@@ -68,7 +70,7 @@
             this.tableLayoutPanel1.Name = "tableLayoutPanel1";
             this.tableLayoutPanel1.RowCount = 1;
             this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel1.Size = new System.Drawing.Size(335, 55);
+            this.tableLayoutPanel1.Size = new System.Drawing.Size(335, 50);
             this.tableLayoutPanel1.TabIndex = 2;
             // 
             // QuickView
@@ -76,9 +78,11 @@
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.tableLayoutPanel1);
+            this.MinimumSize = new System.Drawing.Size(100, 27);
             this.Name = "QuickView";
-            this.Size = new System.Drawing.Size(335, 55);
+            this.Size = new System.Drawing.Size(335, 50);
             this.tableLayoutPanel1.ResumeLayout(false);
+            this.tableLayoutPanel1.PerformLayout();
             this.ResumeLayout(false);
 
         }
diff --git a/Tools/ArdupilotMegaPlanner/Controls/QuickView.cs b/Tools/ArdupilotMegaPlanner/Controls/QuickView.cs
index 4d7d89fd0ec88e1a7227403d91299b67c3c7a347..78295aae74026c63bf6ff1531c178d4530eae68d 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/QuickView.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/QuickView.cs
@@ -12,11 +12,11 @@ namespace ArdupilotMega.Controls
     public partial class QuickView : UserControl
     {
         [System.ComponentModel.Browsable(true)]
-        public string desc { get { return labelWithPseudoOpacity1.Text; } set { labelWithPseudoOpacity1.Text = value; } }
+        public string desc { get { return labelWithPseudoOpacity1.Text; } set { if (labelWithPseudoOpacity1.Text == value) return; labelWithPseudoOpacity1.Text = value; } }
         [System.ComponentModel.Browsable(true)]
-        public string number { get { return labelWithPseudoOpacity2.Text; } set { labelWithPseudoOpacity2.Text = value; } }
+        public string number { get { return labelWithPseudoOpacity2.Text; } set { if (labelWithPseudoOpacity2.Text == value) return; labelWithPseudoOpacity2.Text = value; } }
         [System.ComponentModel.Browsable(true)]
-        public Color numberColor { get { return labelWithPseudoOpacity2.ForeColor; } set { labelWithPseudoOpacity2.ForeColor = value; } }
+        public Color numberColor { get { return labelWithPseudoOpacity2.ForeColor; } set { if (labelWithPseudoOpacity2.ForeColor == value) return; labelWithPseudoOpacity2.ForeColor = value; } }
 
         public QuickView()
         {
@@ -54,5 +54,12 @@ namespace ArdupilotMega.Controls
                 base.OnPaint(e);
         }
 
+        protected override void OnResize(EventArgs e)
+        {
+            if (this.Height > 20)
+                labelWithPseudoOpacity2.Font = new Font(labelWithPseudoOpacity2.Font.FontFamily, this.Height * 0.7f);
+
+            base.OnResize(e);
+        }
     }
 }
diff --git a/Tools/ArdupilotMegaPlanner/CurrentState.cs b/Tools/ArdupilotMegaPlanner/CurrentState.cs
index b2a964f9b56ab1e968bcef1a29f886163f9659ab..8d921b06aa20c8fdc891aef967e2bc5e65d5e9a8 100644
--- a/Tools/ArdupilotMegaPlanner/CurrentState.cs
+++ b/Tools/ArdupilotMegaPlanner/CurrentState.cs
@@ -780,7 +780,7 @@ namespace ArdupilotMega
                         gpsstatus = gps.fix_type;
                         //                    Console.WriteLine("gpsfix {0}",gpsstatus);
 
-                        gpshdop = (float)Math.Round((double)gps.eph / 10.0,2);
+                        gpshdop = (float)Math.Round((double)gps.eph / 100.0,2);
 
                         satcount = gps.satellites_visible;
 
diff --git a/Tools/ArdupilotMegaPlanner/FollowMe.cs b/Tools/ArdupilotMegaPlanner/FollowMe.cs
index 63e7525890c648e2461f46f735043519b03199a1..f8f257ae8dbae8a2d31492740cdd2532eb1acdc6 100644
--- a/Tools/ArdupilotMegaPlanner/FollowMe.cs
+++ b/Tools/ArdupilotMegaPlanner/FollowMe.cs
@@ -7,6 +7,7 @@ using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using System.IO.Ports;
+using System.Globalization;
 
 namespace ArdupilotMega
 {
@@ -113,14 +114,14 @@ namespace ArdupilotMega
                             continue;
                         }
 
-                        gotolocation.Lat = double.Parse(items[2]) / 100.0;
+                        gotolocation.Lat = double.Parse(items[2], CultureInfo.InvariantCulture) / 100.0;
 
                         gotolocation.Lat = (int)gotolocation.Lat + ((gotolocation.Lat - (int)gotolocation.Lat) / 0.60);
 
                         if (items[3] == "S")
                             gotolocation.Lat *= -1;
 
-                        gotolocation.Lng = double.Parse(items[4]) / 100.0;
+                        gotolocation.Lng = double.Parse(items[4], CultureInfo.InvariantCulture) / 100.0;
 
                         gotolocation.Lng = (int)gotolocation.Lng + ((gotolocation.Lng - (int)gotolocation.Lng) / 0.60);
 
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs
index cf470e792043b439e2485ffe40de09c36fcf873d..3e867c616dc00d650a58d5f385e44aa09d65abb3 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs
@@ -208,7 +208,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
                 {
                     bool controlAdded = false;
 
-                    string value = ((float)MainV2.comPort.param[x.Key]).ToString("0.###");
+                    string value = ((float)MainV2.comPort.param[x.Key]).ToString("0.###", CultureInfo.InvariantCulture);
                     string description = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Description);
                     string displayName = x.Value + " (" + x.Key + ")";
                     string units = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Units);
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.Designer.cs
index d47d041064d719494fdd4eba65c3ee321688fccf..244ce4bcae7cad60c26b4cd0780ad33e16eef28e 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.Designer.cs
@@ -24,6 +24,7 @@
             this.setMJPEGSourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.setAspectRatioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.displayBatteryInfoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.userItemsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
             this.tabControl1 = new System.Windows.Forms.TabControl();
             this.tabQuick = new System.Windows.Forms.TabPage();
@@ -181,10 +182,12 @@
             this.hud1.batterylevel = 0F;
             this.hud1.batteryremaining = 0F;
             this.hud1.ContextMenuStrip = this.contextMenuStrip2;
+            this.hud1.current = 0F;
             this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("airspeed", this.bindingSource1, "airspeed", true));
             this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("alt", this.bindingSource1, "alt", true));
             this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("batterylevel", this.bindingSource1, "battery_voltage", true));
             this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("batteryremaining", this.bindingSource1, "battery_remaining", true));
+            this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("current", this.bindingSource1, "current", true));
             this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("datetime", this.bindingSource1, "datetime", true));
             this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("disttowp", this.bindingSource1, "wp_dist", true));
             this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("gpsfix", this.bindingSource1, "gpsstatus", true));
@@ -244,7 +247,8 @@
             this.stopRecordToolStripMenuItem,
             this.setMJPEGSourceToolStripMenuItem,
             this.setAspectRatioToolStripMenuItem,
-            this.displayBatteryInfoToolStripMenuItem});
+            this.displayBatteryInfoToolStripMenuItem,
+            this.userItemsToolStripMenuItem});
             this.contextMenuStrip2.Name = "contextMenuStrip2";
             resources.ApplyResources(this.contextMenuStrip2, "contextMenuStrip2");
             // 
@@ -278,6 +282,12 @@
             resources.ApplyResources(this.displayBatteryInfoToolStripMenuItem, "displayBatteryInfoToolStripMenuItem");
             this.displayBatteryInfoToolStripMenuItem.Click += new System.EventHandler(this.displayBatteryInfoToolStripMenuItem_Click);
             // 
+            // userItemsToolStripMenuItem
+            // 
+            this.userItemsToolStripMenuItem.Name = "userItemsToolStripMenuItem";
+            resources.ApplyResources(this.userItemsToolStripMenuItem, "userItemsToolStripMenuItem");
+            this.userItemsToolStripMenuItem.Click += new System.EventHandler(this.hud_UserItem);
+            // 
             // bindingSource1
             // 
             this.bindingSource1.DataSource = typeof(ArdupilotMega.CurrentState);
@@ -306,12 +316,14 @@
             this.tabQuick.Controls.Add(this.quickView1);
             this.tabQuick.Name = "tabQuick";
             this.tabQuick.UseVisualStyleBackColor = true;
+            this.tabQuick.Resize += new System.EventHandler(this.tabQuick_Resize);
             // 
             // quickView6
             // 
             this.quickView6.DataBindings.Add(new System.Windows.Forms.Binding("number", this.bindingSource1, "DistToMAV", true));
             this.quickView6.desc = "DistToMAV";
             resources.ApplyResources(this.quickView6, "quickView6");
+            this.quickView6.MinimumSize = new System.Drawing.Size(100, 27);
             this.quickView6.Name = "quickView6";
             this.quickView6.number = "0.0";
             this.quickView6.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(252)))));
@@ -322,6 +334,7 @@
             this.quickView5.DataBindings.Add(new System.Windows.Forms.Binding("number", this.bindingSource1, "verticalspeed", true));
             this.quickView5.desc = "verticalspeed";
             resources.ApplyResources(this.quickView5, "quickView5");
+            this.quickView5.MinimumSize = new System.Drawing.Size(100, 27);
             this.quickView5.Name = "quickView5";
             this.quickView5.number = "0.0";
             this.quickView5.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(254)))), ((int)(((byte)(254)))), ((int)(((byte)(86)))));
@@ -332,6 +345,7 @@
             this.quickView4.DataBindings.Add(new System.Windows.Forms.Binding("number", this.bindingSource1, "yaw", true));
             this.quickView4.desc = "yaw";
             resources.ApplyResources(this.quickView4, "quickView4");
+            this.quickView4.MinimumSize = new System.Drawing.Size(100, 27);
             this.quickView4.Name = "quickView4";
             this.quickView4.number = "0.0";
             this.quickView4.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(83)))));
@@ -342,6 +356,7 @@
             this.quickView3.DataBindings.Add(new System.Windows.Forms.Binding("number", this.bindingSource1, "wp_dist", true));
             this.quickView3.desc = "wp_dist";
             resources.ApplyResources(this.quickView3, "quickView3");
+            this.quickView3.MinimumSize = new System.Drawing.Size(100, 27);
             this.quickView3.Name = "quickView3";
             this.quickView3.number = "0.0";
             this.quickView3.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(96)))), ((int)(((byte)(91)))));
@@ -352,6 +367,7 @@
             this.quickView2.DataBindings.Add(new System.Windows.Forms.Binding("number", this.bindingSource1, "groundspeed", true));
             this.quickView2.desc = "groundspeed";
             resources.ApplyResources(this.quickView2, "quickView2");
+            this.quickView2.MinimumSize = new System.Drawing.Size(100, 27);
             this.quickView2.Name = "quickView2";
             this.quickView2.number = "0.0";
             this.quickView2.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(254)))), ((int)(((byte)(132)))), ((int)(((byte)(46)))));
@@ -362,6 +378,7 @@
             this.quickView1.DataBindings.Add(new System.Windows.Forms.Binding("number", this.bindingSource1, "alt", true));
             this.quickView1.desc = "alt";
             resources.ApplyResources(this.quickView1, "quickView1");
+            this.quickView1.MinimumSize = new System.Drawing.Size(100, 27);
             this.quickView1.Name = "quickView1";
             this.quickView1.number = "0.0";
             this.quickView1.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(209)))), ((int)(((byte)(151)))), ((int)(((byte)(248)))));
@@ -1367,5 +1384,6 @@
         private Controls.QuickView quickView5;
         private System.Windows.Forms.ToolStripMenuItem flyToHereAltToolStripMenuItem;
         private System.Windows.Forms.ToolStripMenuItem flightPlannerToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem userItemsToolStripMenuItem;
     }
 }
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs
index 95a5d309aa9e68a87021a657ac296f878533228d..300bea53d2bc6c709e316a7d327f837c5f660a19 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs
@@ -312,6 +312,12 @@ namespace ArdupilotMega.GCSViews
 
             DateTime waypoints = DateTime.Now.AddSeconds(0);
 
+            DateTime updatescreen = DateTime.Now;
+
+            DateTime tsreal = DateTime.Now;
+            double taketime = 0;
+            double timeerror = 0;
+
             //comPort.stopall(true);
 
             while (threadrun == 1)
@@ -370,8 +376,6 @@ namespace ArdupilotMega.GCSViews
                 {
                     if (threadrun == 0) { return; }
 
-                    updatePlayPauseButton(true);
-
                     if (comPort.BaseStream.IsOpen)
                     {
                         MainV2.comPort.logreadmode = false;
@@ -379,6 +383,18 @@ namespace ArdupilotMega.GCSViews
                         MainV2.comPort.logplaybackfile = null;
                     }
 
+
+                    //Console.WriteLine(DateTime.Now.Millisecond);
+
+                    if (updatescreen.AddMilliseconds(300) < DateTime.Now)
+                    {
+                        updatePlayPauseButton(true);
+                        updateLogPlayPosition();
+                        updatescreen = DateTime.Now;
+                    }
+
+                    //Console.WriteLine(DateTime.Now.Millisecond + " done ");
+
                     DateTime logplayback = MainV2.comPort.lastlogread;
                     try
                     {
@@ -386,23 +402,45 @@ namespace ArdupilotMega.GCSViews
                     }
                     catch { }
 
-                    updateLogPlayPosition();
-
-                    int act = (int)(MainV2.comPort.lastlogread - logplayback).TotalMilliseconds;
+                    double act = (MainV2.comPort.lastlogread - logplayback).TotalMilliseconds;
 
                     if (act > 9999 || act < 0)
                         act = 0;
 
-                    int ts = 0;
+                    double ts = 0;
                     if (LogPlayBackSpeed == 0)
                         LogPlayBackSpeed = 0.01;
                     try
                     {
-                        ts = (int) Math.Min((act / LogPlayBackSpeed),1000);
+                        ts = Math.Min((act / LogPlayBackSpeed),1000);
                     }
                     catch { }
-                    if (ts > 0)
-                        System.Threading.Thread.Sleep(ts);
+
+                    double timetook = (DateTime.Now - tsreal).TotalMilliseconds;
+                    if (timetook != 0)
+                    {
+                        //Console.WriteLine("took: " + timetook + "=" + taketime + " " + (taketime - timetook) + " " + ts);
+                        //Console.WriteLine(MainV2.comPort.lastlogread.Second + " " + DateTime.Now.Second + " " + (MainV2.comPort.lastlogread.Second - DateTime.Now.Second));
+                        //if ((taketime - timetook) < 0)
+                        {
+                            timeerror += (taketime - timetook);
+                            if (ts != 0)
+                            {
+                                ts += timeerror;
+                                timeerror = 0;
+                            }
+                        }
+                        if (ts > 1000)
+                            ts = 1000;
+                    }
+
+                    taketime = ts;
+                    tsreal = DateTime.Now;
+
+                    if (ts > 0 && ts < 1000)
+                        System.Threading.Thread.Sleep((int)ts);
+
+
 
                     if (threadrun == 0) { return; }
 
@@ -415,6 +453,8 @@ namespace ArdupilotMega.GCSViews
                         tunning = DateTime.Now;
                     }
 
+                    
+
                     if (MainV2.comPort.logplaybackfile != null && MainV2.comPort.logplaybackfile.BaseStream.Position == MainV2.comPort.logplaybackfile.BaseStream.Length)
                     {
                         MainV2.comPort.logreadmode = false;
@@ -437,9 +477,9 @@ namespace ArdupilotMega.GCSViews
 
                 try
                 {
-                    //Console.WriteLine(DateTime.Now.Millisecond);
+                   // Console.WriteLine(DateTime.Now.Millisecond);
                     updateBindingSource();
-                    //Console.WriteLine(DateTime.Now.Millisecond + " done ");
+                   // Console.WriteLine(DateTime.Now.Millisecond + " done ");
 
                     if (ArdupilotMega.Controls.OpenGLtest.instance != null)
                     {
@@ -700,7 +740,7 @@ namespace ArdupilotMega.GCSViews
                 try
                 {
                     gMapControl1.Position = currentloc;
-                    hud1.Refresh();
+                    //hud1.Refresh();
                 }
                 catch { }
             });
@@ -1548,6 +1588,17 @@ namespace ArdupilotMega.GCSViews
                   //  temp.Dispose();
                   //  tabStatus.Controls.Remove(temp);
                 }
+
+                if (tabControl1.SelectedTab == tabQuick)
+                {
+                    int height = tabQuick.Height / 6;
+                    quickView1.Size = new System.Drawing.Size(tabQuick.Width, height);
+                    quickView2.Size = new System.Drawing.Size(tabQuick.Width, height);
+                    quickView3.Size = new System.Drawing.Size(tabQuick.Width, height);
+                    quickView4.Size = new System.Drawing.Size(tabQuick.Width, height);
+                    quickView5.Size = new System.Drawing.Size(tabQuick.Width, height);
+                    quickView6.Size = new System.Drawing.Size(tabQuick.Width, height);
+                }
             }
         }
 
@@ -1693,6 +1744,103 @@ namespace ArdupilotMega.GCSViews
             selectform.Show();
         }
 
+        private void hud_UserItem(object sender, EventArgs e)
+        {
+
+            Form selectform = new Form()
+            {
+                Name = "select",
+                Width = 50,
+                Height = 250,
+                Text = "Display This"
+            };
+
+            int x = 10;
+            int y = 10;
+
+            object thisBoxed = MainV2.cs;
+            Type test = thisBoxed.GetType();
+
+            foreach (var field in test.GetProperties())
+            {
+                // field.Name has the field's name.
+                object fieldValue;
+                try
+                {
+                    fieldValue = field.GetValue(thisBoxed, null); // Get value
+                }
+                catch { continue; }
+
+                // Get the TypeCode enumeration. Multiple types get mapped to a common typecode.
+                TypeCode typeCode = Type.GetTypeCode(fieldValue.GetType());
+
+                if (!(typeCode == TypeCode.Single))
+                    continue;
+
+                CheckBox chk_box = new CheckBox();
+
+                chk_box.Text = field.Name;
+                chk_box.Name = field.Name;
+                chk_box.Tag = (sender);
+                chk_box.Location = new Point(x, y);
+                chk_box.Size = new System.Drawing.Size(100, 20);
+                if (hud1.CustomItems.ContainsKey(field.Name))
+                {
+                    chk_box.Checked = true;
+                }
+
+                chk_box.CheckedChanged += chk_box_hud_UserItem_CheckedChanged;
+
+                selectform.Controls.Add(chk_box);
+
+                Application.DoEvents();
+
+                x += 0;
+                y += 20;
+
+                if (y > selectform.Height - 50)
+                {
+                    x += 100;
+                    y = 10;
+
+                    selectform.Width = x + 100;
+                }
+            }
+            ThemeManager.ApplyThemeTo(selectform);
+            selectform.Show();
+        }
+
+        void chk_box_hud_UserItem_CheckedChanged(object sender, EventArgs e)
+        {
+            if (((CheckBox)sender).Checked)
+            {
+                HUD.Custom cust = new HUD.Custom();
+
+                string prefix = ((CheckBox)sender).Name +": ";
+                if (MainV2.config["hud1_useritem_" + ((CheckBox)sender).Name] != null)
+                    prefix = (string)MainV2.config["hud1_useritem_" + ((CheckBox)sender).Name];
+
+                Common.InputBox("Header", "Please enter your item prefix", ref prefix);
+
+                MainV2.config["hud1_useritem_" + ((CheckBox)sender).Name] = prefix;
+
+                cust.Header = prefix;
+                setupPropertyInfo(ref cust.Item, ((CheckBox)sender).Name, MainV2.cs);
+
+                hud1.CustomItems.Add(((CheckBox)sender).Name, cust);
+
+                hud1.Invalidate();
+            }
+            else
+            {
+                if (hud1.CustomItems.ContainsKey(((CheckBox)sender).Name))
+                {
+                    hud1.CustomItems.Remove(((CheckBox)sender).Name);
+                }
+                hud1.Invalidate();
+            }
+        }
+
         void chk_log_CheckedChanged(object sender, EventArgs e)
         {
             if (((CheckBox)sender).Checked)
@@ -1974,7 +2122,7 @@ print 'Roll complete'
 
 ";
 
-            CustomMessageBox.Show("This is Very ALPHA");
+          //  CustomMessageBox.Show("This is Very ALPHA");
 
             Form scriptedit = new Form();
 
@@ -2231,5 +2379,10 @@ print 'Roll complete'
                 ctl.Visible = true;
             }
         }
+
+        private void tabQuick_Resize(object sender, EventArgs e)
+        {
+            tabControl1_SelectedIndexChanged(null, null);
+        }
     }
 }
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.resx b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.resx
index 43060ba5b9975eac7822742b815c75abdb2025b6..a47e7e7ae7168a2615edab331109ef4e77c596ab 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.resx
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.resx
@@ -209,8 +209,14 @@
   <data name="displayBatteryInfoToolStripMenuItem.Text" xml:space="preserve">
     <value>Display Battery Info</value>
   </data>
+  <data name="userItemsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+    <value>176, 22</value>
+  </data>
+  <data name="userItemsToolStripMenuItem.Text" xml:space="preserve">
+    <value>User Items</value>
+  </data>
   <data name="contextMenuStrip2.Size" type="System.Drawing.Size, System.Drawing">
-    <value>177, 114</value>
+    <value>177, 158</value>
   </data>
   <data name="&gt;&gt;contextMenuStrip2.Name" xml:space="preserve">
     <value>contextMenuStrip2</value>
@@ -238,7 +244,7 @@
     <value>hud1</value>
   </data>
   <data name="&gt;&gt;hud1.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.HUD, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.HUD, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;hud1.Parent" xml:space="preserve">
     <value>SubMainLeft.Panel1</value>
@@ -261,11 +267,14 @@
   <data name="tabQuick.AutoScroll" type="System.Boolean, mscorlib">
     <value>True</value>
   </data>
+  <data name="quickView6.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
   <data name="quickView6.Location" type="System.Drawing.Point, System.Drawing">
-    <value>33, 272</value>
+    <value>3, 278</value>
   </data>
   <data name="quickView6.Size" type="System.Drawing.Size, System.Drawing">
-    <value>335, 55</value>
+    <value>384, 55</value>
   </data>
   <data name="quickView6.TabIndex" type="System.Int32, mscorlib">
     <value>5</value>
@@ -274,7 +283,7 @@
     <value>quickView6</value>
   </data>
   <data name="&gt;&gt;quickView6.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;quickView6.Parent" xml:space="preserve">
     <value>tabQuick</value>
@@ -282,11 +291,14 @@
   <data name="&gt;&gt;quickView6.ZOrder" xml:space="preserve">
     <value>0</value>
   </data>
+  <data name="quickView5.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
   <data name="quickView5.Location" type="System.Drawing.Point, System.Drawing">
-    <value>33, 224</value>
+    <value>3, 223</value>
   </data>
   <data name="quickView5.Size" type="System.Drawing.Size, System.Drawing">
-    <value>335, 55</value>
+    <value>384, 55</value>
   </data>
   <data name="quickView5.TabIndex" type="System.Int32, mscorlib">
     <value>4</value>
@@ -295,7 +307,7 @@
     <value>quickView5</value>
   </data>
   <data name="&gt;&gt;quickView5.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;quickView5.Parent" xml:space="preserve">
     <value>tabQuick</value>
@@ -303,11 +315,14 @@
   <data name="&gt;&gt;quickView5.ZOrder" xml:space="preserve">
     <value>1</value>
   </data>
+  <data name="quickView4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
   <data name="quickView4.Location" type="System.Drawing.Point, System.Drawing">
-    <value>33, 168</value>
+    <value>3, 168</value>
   </data>
   <data name="quickView4.Size" type="System.Drawing.Size, System.Drawing">
-    <value>335, 55</value>
+    <value>384, 55</value>
   </data>
   <data name="quickView4.TabIndex" type="System.Int32, mscorlib">
     <value>3</value>
@@ -316,7 +331,7 @@
     <value>quickView4</value>
   </data>
   <data name="&gt;&gt;quickView4.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;quickView4.Parent" xml:space="preserve">
     <value>tabQuick</value>
@@ -324,11 +339,14 @@
   <data name="&gt;&gt;quickView4.ZOrder" xml:space="preserve">
     <value>2</value>
   </data>
+  <data name="quickView3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
   <data name="quickView3.Location" type="System.Drawing.Point, System.Drawing">
-    <value>33, 112</value>
+    <value>3, 113</value>
   </data>
   <data name="quickView3.Size" type="System.Drawing.Size, System.Drawing">
-    <value>335, 55</value>
+    <value>384, 55</value>
   </data>
   <data name="quickView3.TabIndex" type="System.Int32, mscorlib">
     <value>2</value>
@@ -337,7 +355,7 @@
     <value>quickView3</value>
   </data>
   <data name="&gt;&gt;quickView3.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;quickView3.Parent" xml:space="preserve">
     <value>tabQuick</value>
@@ -345,11 +363,14 @@
   <data name="&gt;&gt;quickView3.ZOrder" xml:space="preserve">
     <value>3</value>
   </data>
+  <data name="quickView2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
   <data name="quickView2.Location" type="System.Drawing.Point, System.Drawing">
-    <value>33, 55</value>
+    <value>3, 58</value>
   </data>
   <data name="quickView2.Size" type="System.Drawing.Size, System.Drawing">
-    <value>335, 55</value>
+    <value>384, 55</value>
   </data>
   <data name="quickView2.TabIndex" type="System.Int32, mscorlib">
     <value>1</value>
@@ -358,7 +379,7 @@
     <value>quickView2</value>
   </data>
   <data name="&gt;&gt;quickView2.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;quickView2.Parent" xml:space="preserve">
     <value>tabQuick</value>
@@ -366,11 +387,14 @@
   <data name="&gt;&gt;quickView2.ZOrder" xml:space="preserve">
     <value>4</value>
   </data>
+  <data name="quickView1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
   <data name="quickView1.Location" type="System.Drawing.Point, System.Drawing">
-    <value>33, 6</value>
+    <value>3, 3</value>
   </data>
   <data name="quickView1.Size" type="System.Drawing.Size, System.Drawing">
-    <value>335, 55</value>
+    <value>384, 55</value>
   </data>
   <data name="quickView1.TabIndex" type="System.Int32, mscorlib">
     <value>0</value>
@@ -379,7 +403,7 @@
     <value>quickView1</value>
   </data>
   <data name="&gt;&gt;quickView1.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;quickView1.Parent" xml:space="preserve">
     <value>tabQuick</value>
@@ -433,7 +457,7 @@
     <value>BUT_script</value>
   </data>
   <data name="&gt;&gt;BUT_script.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_script.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -466,7 +490,7 @@
     <value>BUT_joystick</value>
   </data>
   <data name="&gt;&gt;BUT_joystick.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_joystick.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -496,7 +520,7 @@
     <value>BUT_quickmanual</value>
   </data>
   <data name="&gt;&gt;BUT_quickmanual.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_quickmanual.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -526,7 +550,7 @@
     <value>BUT_quickrtl</value>
   </data>
   <data name="&gt;&gt;BUT_quickrtl.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_quickrtl.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -556,7 +580,7 @@
     <value>BUT_quickauto</value>
   </data>
   <data name="&gt;&gt;BUT_quickauto.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_quickauto.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -610,7 +634,7 @@
     <value>BUT_setwp</value>
   </data>
   <data name="&gt;&gt;BUT_setwp.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_setwp.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -661,7 +685,7 @@
     <value>BUT_setmode</value>
   </data>
   <data name="&gt;&gt;BUT_setmode.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_setmode.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -691,7 +715,7 @@
     <value>BUT_clear_track</value>
   </data>
   <data name="&gt;&gt;BUT_clear_track.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_clear_track.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -742,7 +766,7 @@
     <value>BUT_Homealt</value>
   </data>
   <data name="&gt;&gt;BUT_Homealt.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_Homealt.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -772,7 +796,7 @@
     <value>BUT_RAWSensor</value>
   </data>
   <data name="&gt;&gt;BUT_RAWSensor.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_RAWSensor.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -802,7 +826,7 @@
     <value>BUTrestartmission</value>
   </data>
   <data name="&gt;&gt;BUTrestartmission.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUTrestartmission.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -832,7 +856,7 @@
     <value>BUTactiondo</value>
   </data>
   <data name="&gt;&gt;BUTactiondo.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUTactiondo.Parent" xml:space="preserve">
     <value>tabActions</value>
@@ -886,7 +910,7 @@
     <value>Gvspeed</value>
   </data>
   <data name="&gt;&gt;Gvspeed.Type" xml:space="preserve">
-    <value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;Gvspeed.Parent" xml:space="preserve">
     <value>tabGauges</value>
@@ -916,7 +940,7 @@
     <value>Gheading</value>
   </data>
   <data name="&gt;&gt;Gheading.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.HSI, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.HSI, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;Gheading.Parent" xml:space="preserve">
     <value>tabGauges</value>
@@ -946,7 +970,7 @@
     <value>Galt</value>
   </data>
   <data name="&gt;&gt;Galt.Type" xml:space="preserve">
-    <value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;Galt.Parent" xml:space="preserve">
     <value>tabGauges</value>
@@ -979,7 +1003,7 @@
     <value>Gspeed</value>
   </data>
   <data name="&gt;&gt;Gspeed.Type" xml:space="preserve">
-    <value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;Gspeed.Parent" xml:space="preserve">
     <value>tabGauges</value>
@@ -1063,7 +1087,7 @@
     <value>lbl_playbackspeed</value>
   </data>
   <data name="&gt;&gt;lbl_playbackspeed.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;lbl_playbackspeed.Parent" xml:space="preserve">
     <value>tabTLogs</value>
@@ -1090,7 +1114,7 @@
     <value>lbl_logpercent</value>
   </data>
   <data name="&gt;&gt;lbl_logpercent.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;lbl_logpercent.Parent" xml:space="preserve">
     <value>tabTLogs</value>
@@ -1117,7 +1141,7 @@
     <value>NUM_playbackspeed</value>
   </data>
   <data name="&gt;&gt;NUM_playbackspeed.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;NUM_playbackspeed.Parent" xml:space="preserve">
     <value>tabTLogs</value>
@@ -1144,7 +1168,7 @@
     <value>BUT_log2kml</value>
   </data>
   <data name="&gt;&gt;BUT_log2kml.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_log2kml.Parent" xml:space="preserve">
     <value>tabTLogs</value>
@@ -1198,7 +1222,7 @@
     <value>BUT_playlog</value>
   </data>
   <data name="&gt;&gt;BUT_playlog.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_playlog.Parent" xml:space="preserve">
     <value>tabTLogs</value>
@@ -1225,7 +1249,7 @@
     <value>BUT_loadtelem</value>
   </data>
   <data name="&gt;&gt;BUT_loadtelem.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_loadtelem.Parent" xml:space="preserve">
     <value>tabTLogs</value>
@@ -1411,7 +1435,7 @@
     <value>lbl_winddir</value>
   </data>
   <data name="&gt;&gt;lbl_winddir.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;lbl_winddir.Parent" xml:space="preserve">
     <value>splitContainer1.Panel2</value>
@@ -1441,7 +1465,7 @@
     <value>lbl_windvel</value>
   </data>
   <data name="&gt;&gt;lbl_windvel.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;lbl_windvel.Parent" xml:space="preserve">
     <value>splitContainer1.Panel2</value>
@@ -1474,7 +1498,7 @@
     <value>lbl_hdop</value>
   </data>
   <data name="&gt;&gt;lbl_hdop.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;lbl_hdop.Parent" xml:space="preserve">
     <value>splitContainer1.Panel2</value>
@@ -1507,7 +1531,7 @@
     <value>lbl_sats</value>
   </data>
   <data name="&gt;&gt;lbl_sats.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;lbl_sats.Parent" xml:space="preserve">
     <value>splitContainer1.Panel2</value>
@@ -1679,7 +1703,7 @@
     <value>gMapControl1</value>
   </data>
   <data name="&gt;&gt;gMapControl1.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;gMapControl1.Parent" xml:space="preserve">
     <value>splitContainer1.Panel2</value>
@@ -1742,7 +1766,7 @@
     <value>TXT_lat</value>
   </data>
   <data name="&gt;&gt;TXT_lat.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;TXT_lat.Parent" xml:space="preserve">
     <value>panel1</value>
@@ -1799,7 +1823,7 @@
     <value>label1</value>
   </data>
   <data name="&gt;&gt;label1.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;label1.Parent" xml:space="preserve">
     <value>panel1</value>
@@ -1829,7 +1853,7 @@
     <value>TXT_long</value>
   </data>
   <data name="&gt;&gt;TXT_long.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;TXT_long.Parent" xml:space="preserve">
     <value>panel1</value>
@@ -1859,7 +1883,7 @@
     <value>TXT_alt</value>
   </data>
   <data name="&gt;&gt;TXT_alt.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;TXT_alt.Parent" xml:space="preserve">
     <value>panel1</value>
@@ -2060,7 +2084,7 @@
     <value>label6</value>
   </data>
   <data name="&gt;&gt;label6.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;label6.Parent" xml:space="preserve">
     <value>$this</value>
@@ -2134,6 +2158,12 @@
   <data name="&gt;&gt;displayBatteryInfoToolStripMenuItem.Type" xml:space="preserve">
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
+  <data name="&gt;&gt;userItemsToolStripMenuItem.Name" xml:space="preserve">
+    <value>userItemsToolStripMenuItem</value>
+  </data>
+  <data name="&gt;&gt;userItemsToolStripMenuItem.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
   <data name="&gt;&gt;bindingSource1.Name" xml:space="preserve">
     <value>bindingSource1</value>
   </data>
@@ -2168,6 +2198,6 @@
     <value>FlightData</value>
   </data>
   <data name="&gt;&gt;$this.Type" xml:space="preserve">
-    <value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4621.15928, Culture=neutral, PublicKeyToken=null</value>
+    <value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4623.36046, Culture=neutral, PublicKeyToken=null</value>
   </data>
 </root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs
index 9037c4ef1cedefdf85f4e139a5065dbde118ec13..fc73679c75c1641ab3e1002cb70597d2764a50da 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs
@@ -348,6 +348,8 @@ namespace ArdupilotMega.GCSViews
             selectedrow = Commands.Rows.Add();
          //   Commands.CurrentCell = Commands.Rows[selectedrow].Cells[Param1.Index];
 
+            ChangeColumnHeader(MAVLink.MAV_CMD.WAYPOINT.ToString());
+
             setfromGE(lat, lng, alt);
         }
 
@@ -1362,7 +1364,9 @@ namespace ArdupilotMega.GCSViews
                     temp.p4 = (float)(double.Parse(Commands.Rows[a].Cells[Param4.Index].Value.ToString()));
 
                     MAVLink.MAV_MISSION_RESULT ans = port.setWP(temp, (ushort)(a + 1), frame, 0);
-                    if (ans != MAVLink.MAV_MISSION_RESULT.MAV_MISSION_ACCEPTED)
+                    // invalid sequence can only occur if we failed to see a responce from the apm when we sent the request.
+                    // therefore it did see the request and has moved on that step, and so do we.
+                    if (ans != MAVLink.MAV_MISSION_RESULT.MAV_MISSION_ACCEPTED && ans != MAVLink.MAV_MISSION_RESULT.MAV_MISSION_INVALID_SEQUENCE)
                     {
                         throw new Exception("Upload WPs Failed " + Commands.Rows[a].Cells[Command.Index].Value.ToString() + " " + Enum.Parse(typeof(MAVLink.MAV_MISSION_RESULT), ans.ToString()));
                     }
@@ -1509,7 +1513,10 @@ namespace ArdupilotMega.GCSViews
                 CHK_holdalt.Checked = Convert.ToBoolean((float)param["ALT_HOLD_RTL"] > 0);
                 log.Info("param ALT_HOLD_RTL " + CHK_holdalt.Checked.ToString());
 
+            }
+            catch (Exception ex) { log.Error(ex); }
 
+            try {
 
                 DataGridViewTextBoxCell cellhome;
                 cellhome = Commands.Rows[0].Cells[Lat.Index] as DataGridViewTextBoxCell;
@@ -1530,7 +1537,7 @@ namespace ArdupilotMega.GCSViews
                     }
                 }
             }
-            catch (Exception ex) { log.Info(ex.ToString()); } // if there is no valid home
+            catch (Exception ex) { log.Error(ex.ToString()); } // if there is no valid home
 
             if (Commands.RowCount > 0)
             {
diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs
index 5353948cf41715f62e61cc3d383911ccb87a88f0..73d9b54298f37765e68008059bf2a5aeeb5dda97 100644
--- a/Tools/ArdupilotMegaPlanner/MainV2.cs
+++ b/Tools/ArdupilotMegaPlanner/MainV2.cs
@@ -149,6 +149,8 @@ namespace ArdupilotMega
 
         public MainV2()
         {
+            log.Info("Mainv2 ctor");
+
             Form splash = new Splash();
             splash.Show();
 
@@ -1010,7 +1012,7 @@ namespace ArdupilotMega
         /// speech voltage - custom - alt warning - data lost
         /// heartbeat packet sending
         /// 
-        /// and cant fall out
+        /// and can't fall out
         /// </summary>
         private void SerialReader()
         {
@@ -1018,10 +1020,7 @@ namespace ArdupilotMega
                 return;
             serialThread = true;
 
-            int minbytes = 10;
-
-            //  if (MONO)
-            //      minbytes = 0;
+            int minbytes = 0;
 
             DateTime speechcustomtime = DateTime.Now;
 
@@ -1033,8 +1032,10 @@ namespace ArdupilotMega
                 {
                     Thread.Sleep(5);
 
+                    // update connect/disconnect button and info stats
                     UpdateConnectIcon();
 
+                    // 30 seconds interval speech options
                     if (speechEnable && speechEngine != null && (DateTime.Now - speechcustomtime).TotalSeconds > 30 && MainV2.cs.lat != 0 && (MainV2.comPort.logreadmode || comPort.BaseStream.IsOpen))
                     {
                         //speechbatteryvolt
@@ -1054,6 +1055,7 @@ namespace ArdupilotMega
                         speechcustomtime = DateTime.Now;
                     }
 
+                    // speech altitude warning.
                     if (speechEnable && speechEngine != null && (MainV2.comPort.logreadmode || comPort.BaseStream.IsOpen))
                     {
                         float warnalt = float.MaxValue;
@@ -1069,17 +1071,20 @@ namespace ArdupilotMega
                         catch { } // silent fail
                     }
 
+                    // if not connected or busy, sleep and loop
                     if (!comPort.BaseStream.IsOpen || giveComport == true)
                     {
                         System.Threading.Thread.Sleep(100);
                         continue;
                     }
 
+                    // make sure we attenuate the link quality if we dont see any valid packets
                     if ((DateTime.Now - comPort.lastvalidpacket).TotalSeconds > 10)
                     {
                         MainV2.cs.linkqualitygcs = 0;
                     }
 
+                    // attenuate the link qualty over time
                     if ((DateTime.Now - comPort.lastvalidpacket).TotalSeconds >= 1)
                     {
                         if (linkqualitytime.Second != DateTime.Now.Second)
@@ -1087,25 +1092,20 @@ namespace ArdupilotMega
                             MainV2.cs.linkqualitygcs = (ushort)(MainV2.cs.linkqualitygcs * 0.8f);
                             linkqualitytime = DateTime.Now;
 
+                            int checkthis;
                             GCSViews.FlightData.myhud.Invalidate();
                         }
                     }
 
+                    // send a hb every seconds from gcs to ap
                     if (heatbeatSend.Second != DateTime.Now.Second)
                     {
-                        //                        Console.WriteLine("remote lost {0}", cs.packetdropremote);
-
-                        MAVLink.mavlink_heartbeat_t htb = new MAVLink.mavlink_heartbeat_t();
-
-#if MAVLINK10
-                        htb.type = (byte)MAVLink.MAV_TYPE.GCS;
-                        htb.autopilot = (byte)MAVLink.MAV_AUTOPILOT.ARDUPILOTMEGA;
-                        htb.mavlink_version = 3;
-#else
-                        htb.type = (byte)MAVLink.MAV_TYPE.MAV_GENERIC;
-                        htb.autopilot = (byte)MAVLink.MAV_AUTOPILOT_TYPE.MAV_AUTOPILOT_ARDUPILOTMEGA;
-                        htb.mavlink_version = 2;
-#endif
+                        MAVLink.mavlink_heartbeat_t htb = new MAVLink.mavlink_heartbeat_t()
+                        {
+                            type = (byte)MAVLink.MAV_TYPE.GCS,
+                            autopilot = (byte)MAVLink.MAV_AUTOPILOT.ARDUPILOTMEGA,
+                            mavlink_version = 3
+                        };
 
                         comPort.sendPacket(htb);
                         heatbeatSend = DateTime.Now;
@@ -1121,15 +1121,11 @@ namespace ArdupilotMega
                         }
                     }
 
-                 //   Console.WriteLine(DateTime.Now.Millisecond + " " + comPort.BaseStream.BytesToRead);
-
+                    // actauly read the packets
                     while (comPort.BaseStream.BytesToRead > minbytes && giveComport == false)
                     {
-                        //Console.WriteLine(DateTime.Now.Millisecond + " SR1 " + comPort.BaseStream.BytesToRead );
                         comPort.readPacket();
-                        //Console.WriteLine(DateTime.Now.Millisecond + " SR2 " + comPort.BaseStream.BytesToRead);
                     }
-                  //  Console.WriteLine("SR left");
                 }
                 catch (Exception e)
                 {
@@ -1245,7 +1241,12 @@ namespace ArdupilotMega
             {
                 if (!System.Diagnostics.Debugger.IsAttached)
                 {
-                    CheckForUpdate();
+                    // single update check per day
+                    if (getConfig("update_check") != DateTime.Now.ToShortDateString())
+                    {
+                        CheckForUpdate();
+                        config["update_check"] = DateTime.Now.ToShortDateString();
+                    }
                 }
             }
             catch (Exception ex)
diff --git a/Tools/ArdupilotMegaPlanner/Mavlink/MAVLink.cs b/Tools/ArdupilotMegaPlanner/Mavlink/MAVLink.cs
index b1bd9126685c87b2a285eb020e45196635d89e43..c93f913a5cf22df0dada68372939734c93ec108b 100644
--- a/Tools/ArdupilotMegaPlanner/Mavlink/MAVLink.cs
+++ b/Tools/ArdupilotMegaPlanner/Mavlink/MAVLink.cs
@@ -1345,7 +1345,7 @@ namespace ArdupilotMega
                     }
                     else
                     {
-                        log.Info(DateTime.Now + " PC wpcount " + buffer[5] + " need " + MAVLINK_MSG_ID_MISSION_COUNT + " " + this.BaseStream.BytesToRead);
+                        log.Info(DateTime.Now + " PC wpcount " + buffer[5] + " need " + MAVLINK_MSG_ID_MISSION_COUNT);
                     }
                 }
             }
@@ -1919,21 +1919,13 @@ namespace ArdupilotMega
 #if MAVLINK10
                     if (buffer[5] == MAVLINK_MSG_ID_MISSION_ACK)
                     {
-
-
                         var ans = buffer.ByteArrayToStructure<mavlink_mission_ack_t>(6);
-
-
                         log.Info("set wp " + index + " ACK 47 : " + buffer[5] + " ans " + Enum.Parse(typeof(MAV_MISSION_RESULT), ans.type.ToString()));
                         return (MAV_MISSION_RESULT)ans.type;
                     }
                     else if (buffer[5] == MAVLINK_MSG_ID_MISSION_REQUEST)
                     {
                         var ans = buffer.ByteArrayToStructure<mavlink_mission_request_t>(6);
-
-
-
-
                         if (ans.seq == (index + 1))
                         {
                             log.Info("set wp doing " + index + " req " + ans.seq + " REQ 40 : " + buffer[5]);
diff --git a/Tools/ArdupilotMegaPlanner/MavlinkLog.Designer.cs b/Tools/ArdupilotMegaPlanner/MavlinkLog.Designer.cs
index 256cde8672616f093253073bcafa4a6cb2a31507..52243d5cadb198af28eddd8be35f1bccaa4d2616 100644
--- a/Tools/ArdupilotMegaPlanner/MavlinkLog.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/MavlinkLog.Designer.cs
@@ -35,6 +35,8 @@
             this.BUT_graphmavlog = new ArdupilotMega.Controls.MyButton();
             this.zg1 = new ZedGraph.ZedGraphControl();
             this.BUT_convertcsv = new ArdupilotMega.Controls.MyButton();
+            this.BUT_paramsfromlog = new ArdupilotMega.Controls.MyButton();
+            this.BUT_getwpsfromlog = new ArdupilotMega.Controls.MyButton();
             this.SuspendLayout();
             // 
             // BUT_redokml
@@ -82,10 +84,26 @@
             this.BUT_convertcsv.UseVisualStyleBackColor = true;
             this.BUT_convertcsv.Click += new System.EventHandler(this.BUT_convertcsv_Click);
             // 
+            // BUT_paramsfromlog
+            // 
+            resources.ApplyResources(this.BUT_paramsfromlog, "BUT_paramsfromlog");
+            this.BUT_paramsfromlog.Name = "BUT_paramsfromlog";
+            this.BUT_paramsfromlog.UseVisualStyleBackColor = true;
+            this.BUT_paramsfromlog.Click += new System.EventHandler(this.BUT_paramsfromlog_Click);
+            // 
+            // BUT_getwpsfromlog
+            // 
+            resources.ApplyResources(this.BUT_getwpsfromlog, "BUT_getwpsfromlog");
+            this.BUT_getwpsfromlog.Name = "BUT_getwpsfromlog";
+            this.BUT_getwpsfromlog.UseVisualStyleBackColor = true;
+            this.BUT_getwpsfromlog.Click += new System.EventHandler(this.BUT_getwpsfromlog_Click);
+            // 
             // MavlinkLog
             // 
             resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.BUT_getwpsfromlog);
+            this.Controls.Add(this.BUT_paramsfromlog);
             this.Controls.Add(this.BUT_convertcsv);
             this.Controls.Add(this.zg1);
             this.Controls.Add(this.BUT_graphmavlog);
@@ -106,5 +124,7 @@
         private ArdupilotMega.Controls.MyButton BUT_graphmavlog;
         private ZedGraph.ZedGraphControl zg1;
         private Controls.MyButton BUT_convertcsv;
+        private Controls.MyButton BUT_paramsfromlog;
+        private Controls.MyButton BUT_getwpsfromlog;
     }
 }
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/MavlinkLog.cs b/Tools/ArdupilotMegaPlanner/MavlinkLog.cs
index 1df89ba445c232201e52dab595f231ea83df72e2..d9e94784902e27d4225d188b428e438a7a5aac5d 100644
--- a/Tools/ArdupilotMegaPlanner/MavlinkLog.cs
+++ b/Tools/ArdupilotMegaPlanner/MavlinkLog.cs
@@ -1245,5 +1245,149 @@ namespace ArdupilotMega
                 }
             }
         }
+
+        private void BUT_paramsfromlog_Click(object sender, EventArgs e)
+        {
+            OpenFileDialog openFileDialog1 = new OpenFileDialog();
+            openFileDialog1.Filter = "*.tlog|*.tlog";
+            openFileDialog1.FilterIndex = 2;
+            openFileDialog1.RestoreDirectory = true;
+            openFileDialog1.Multiselect = true;
+            try
+            {
+                openFileDialog1.InitialDirectory = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar;
+            }
+            catch { } // incase dir doesnt exist
+
+            if (openFileDialog1.ShowDialog() == DialogResult.OK)
+            {
+                if (MainV2.comPort.logplaybackfile != null)
+                {
+                    MainV2.comPort.logreadmode = false;
+                    MainV2.comPort.logplaybackfile.Close();
+                }
+
+                foreach (string logfile in openFileDialog1.FileNames)
+                {
+
+                    MAVLink mine = new MAVLink();
+                    try
+                    {
+                        mine.logplaybackfile = new BinaryReader(File.Open(logfile, FileMode.Open, FileAccess.Read, FileShare.Read));
+                    }
+                    catch (Exception ex) { log.Debug(ex.ToString()); CustomMessageBox.Show("Log Can not be opened. Are you still connected?"); return; }
+
+                    mine.logreadmode = true;
+
+                    mine.packets.Initialize(); // clear
+
+                    StreamWriter sw = new StreamWriter(Path.GetDirectoryName(logfile) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(logfile) + ".param");
+
+                        // bar moves to 100 % in this step
+                        progressBar1.Value = (int)((float)mine.logplaybackfile.BaseStream.Position / (float)mine.logplaybackfile.BaseStream.Length * 100.0f / 1.0f);
+
+                        progressBar1.Refresh();
+                        //Application.DoEvents();
+
+                        mine.getParamList();
+
+                        foreach (string item in mine.param.Keys)
+                        {
+                            sw.WriteLine(item + "\t" + mine.param[item]);
+                        }
+
+                    sw.Close();
+
+                    progressBar1.Value = 100;
+
+                    mine.logreadmode = false;
+                    mine.logplaybackfile.Close();
+                    mine.logplaybackfile = null;
+
+                    CustomMessageBox.Show("File Saved with log file");
+                }
+            }
+        }
+
+        private void BUT_getwpsfromlog_Click(object sender, EventArgs e)
+        {
+            OpenFileDialog openFileDialog1 = new OpenFileDialog();
+            openFileDialog1.Filter = "*.tlog|*.tlog";
+            openFileDialog1.FilterIndex = 2;
+            openFileDialog1.RestoreDirectory = true;
+            openFileDialog1.Multiselect = true;
+            try
+            {
+                openFileDialog1.InitialDirectory = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar;
+            }
+            catch { } // incase dir doesnt exist
+
+            if (openFileDialog1.ShowDialog() == DialogResult.OK)
+            {
+                if (MainV2.comPort.logplaybackfile != null)
+                {
+                    MainV2.comPort.logreadmode = false;
+                    MainV2.comPort.logplaybackfile.Close();
+                }
+
+                foreach (string logfile in openFileDialog1.FileNames)
+                {
+
+                    MAVLink mine = new MAVLink();
+                    try
+                    {
+                        mine.logplaybackfile = new BinaryReader(File.Open(logfile, FileMode.Open, FileAccess.Read, FileShare.Read));
+                    }
+                    catch (Exception ex) { log.Debug(ex.ToString()); CustomMessageBox.Show("Log Can not be opened. Are you still connected?"); return; }
+
+                    mine.logreadmode = true;
+
+                    mine.packets.Initialize(); // clear
+
+                    StreamWriter sw = new StreamWriter(Path.GetDirectoryName(logfile) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(logfile) + ".txt");
+
+                    // bar moves to 100 % in this step
+                    progressBar1.Value = (int)((float)mine.logplaybackfile.BaseStream.Position / (float)mine.logplaybackfile.BaseStream.Length * 100.0f / 1.0f);
+
+                    progressBar1.Refresh();
+                    //Application.DoEvents();
+
+                    sw.WriteLine("QGC WPL 110");
+
+                        byte count = mine.getWPCount();
+                        for (ushort a = 0; a < count; a++)
+                        {
+                            Locationwp wp = mine.getWP(a);
+                            //sw.WriteLine(item + "\t" + mine.param[item]);
+                            byte mode = (byte)wp.id;
+
+                            sw.Write((a + 1)); // seq
+                            sw.Write("\t" + 0); // current
+                            sw.Write("\t" + (byte)MAVLink.MAV_FRAME.GLOBAL_RELATIVE_ALT); //frame 
+                            sw.Write("\t" + mode);
+                            sw.Write("\t" + wp.p1.ToString("0.000000", new System.Globalization.CultureInfo("en-US")));
+                            sw.Write("\t" + wp.p2.ToString("0.000000", new System.Globalization.CultureInfo("en-US")));
+                            sw.Write("\t" + wp.p3.ToString("0.000000", new System.Globalization.CultureInfo("en-US")));
+                            sw.Write("\t" + wp.p4.ToString("0.000000", new System.Globalization.CultureInfo("en-US")));
+                            sw.Write("\t" + wp.lat.ToString("0.000000", new System.Globalization.CultureInfo("en-US")));
+                            sw.Write("\t" + wp.lng.ToString("0.000000", new System.Globalization.CultureInfo("en-US")));
+                            sw.Write("\t" + (wp.alt / MainV2.cs.multiplierdist).ToString("0.000000", new System.Globalization.CultureInfo("en-US")));
+                            sw.Write("\t" + 1);
+                            sw.WriteLine("");
+                        }
+                    
+                    sw.Close();
+
+                    progressBar1.Value = 100;
+
+                    mine.logreadmode = false;
+                    mine.logplaybackfile.Close();
+                    mine.logplaybackfile = null;
+
+                    CustomMessageBox.Show("File Saved with log file");
+
+                }
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/MavlinkLog.resx b/Tools/ArdupilotMegaPlanner/MavlinkLog.resx
index 11b80999a6d6407c54fc5a39a292e3da337f7377..b72c69d08185396a4c98f434c5269925cdf9583b 100644
--- a/Tools/ArdupilotMegaPlanner/MavlinkLog.resx
+++ b/Tools/ArdupilotMegaPlanner/MavlinkLog.resx
@@ -123,10 +123,10 @@
   </data>
   <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="BUT_redokml.Location" type="System.Drawing.Point, System.Drawing">
-    <value>93, 12</value>
+    <value>10, 6</value>
   </data>
   <data name="BUT_redokml.Size" type="System.Drawing.Size, System.Drawing">
-    <value>116, 23</value>
+    <value>68, 30</value>
   </data>
   <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <data name="BUT_redokml.TabIndex" type="System.Int32, mscorlib">
@@ -139,13 +139,13 @@
     <value>BUT_redokml</value>
   </data>
   <data name="&gt;&gt;BUT_redokml.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4515.21878, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4622.30215, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_redokml.Parent" xml:space="preserve">
     <value>$this</value>
   </data>
   <data name="&gt;&gt;BUT_redokml.ZOrder" xml:space="preserve">
-    <value>5</value>
+    <value>7</value>
   </data>
   <data name="progressBar1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Top, Left, Right</value>
@@ -169,7 +169,7 @@
     <value>$this</value>
   </data>
   <data name="&gt;&gt;progressBar1.ZOrder" xml:space="preserve">
-    <value>4</value>
+    <value>6</value>
   </data>
   <data name="BUT_humanreadable.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Top</value>
@@ -178,10 +178,10 @@
     <value>NoControl</value>
   </data>
   <data name="BUT_humanreadable.Location" type="System.Drawing.Point, System.Drawing">
-    <value>215, 12</value>
+    <value>84, 6</value>
   </data>
   <data name="BUT_humanreadable.Size" type="System.Drawing.Size, System.Drawing">
-    <value>116, 23</value>
+    <value>68, 30</value>
   </data>
   <data name="BUT_humanreadable.TabIndex" type="System.Int32, mscorlib">
     <value>10</value>
@@ -193,13 +193,13 @@
     <value>BUT_humanreadable</value>
   </data>
   <data name="&gt;&gt;BUT_humanreadable.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4515.21878, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4622.30215, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_humanreadable.Parent" xml:space="preserve">
     <value>$this</value>
   </data>
   <data name="&gt;&gt;BUT_humanreadable.ZOrder" xml:space="preserve">
-    <value>3</value>
+    <value>5</value>
   </data>
   <data name="BUT_graphmavlog.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Top</value>
@@ -208,10 +208,10 @@
     <value>NoControl</value>
   </data>
   <data name="BUT_graphmavlog.Location" type="System.Drawing.Point, System.Drawing">
-    <value>459, 12</value>
+    <value>232, 6</value>
   </data>
   <data name="BUT_graphmavlog.Size" type="System.Drawing.Size, System.Drawing">
-    <value>116, 23</value>
+    <value>68, 30</value>
   </data>
   <data name="BUT_graphmavlog.TabIndex" type="System.Int32, mscorlib">
     <value>11</value>
@@ -223,13 +223,13 @@
     <value>BUT_graphmavlog</value>
   </data>
   <data name="&gt;&gt;BUT_graphmavlog.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4515.21878, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4622.30215, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_graphmavlog.Parent" xml:space="preserve">
     <value>$this</value>
   </data>
   <data name="&gt;&gt;BUT_graphmavlog.ZOrder" xml:space="preserve">
-    <value>2</value>
+    <value>4</value>
   </data>
   <data name="zg1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Top, Bottom, Left, Right</value>
@@ -253,7 +253,7 @@
     <value>$this</value>
   </data>
   <data name="&gt;&gt;zg1.ZOrder" xml:space="preserve">
-    <value>1</value>
+    <value>3</value>
   </data>
   <data name="BUT_convertcsv.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Top</value>
@@ -262,10 +262,10 @@
     <value>NoControl</value>
   </data>
   <data name="BUT_convertcsv.Location" type="System.Drawing.Point, System.Drawing">
-    <value>337, 12</value>
+    <value>158, 6</value>
   </data>
   <data name="BUT_convertcsv.Size" type="System.Drawing.Size, System.Drawing">
-    <value>116, 23</value>
+    <value>68, 30</value>
   </data>
   <data name="BUT_convertcsv.TabIndex" type="System.Int32, mscorlib">
     <value>13</value>
@@ -277,12 +277,72 @@
     <value>BUT_convertcsv</value>
   </data>
   <data name="&gt;&gt;BUT_convertcsv.Type" xml:space="preserve">
-    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4515.21878, Culture=neutral, PublicKeyToken=null</value>
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4622.30215, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <data name="&gt;&gt;BUT_convertcsv.Parent" xml:space="preserve">
     <value>$this</value>
   </data>
   <data name="&gt;&gt;BUT_convertcsv.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="BUT_paramsfromlog.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="BUT_paramsfromlog.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="BUT_paramsfromlog.Location" type="System.Drawing.Point, System.Drawing">
+    <value>306, 6</value>
+  </data>
+  <data name="BUT_paramsfromlog.Size" type="System.Drawing.Size, System.Drawing">
+    <value>68, 30</value>
+  </data>
+  <data name="BUT_paramsfromlog.TabIndex" type="System.Int32, mscorlib">
+    <value>14</value>
+  </data>
+  <data name="BUT_paramsfromlog.Text" xml:space="preserve">
+    <value>Extract Params</value>
+  </data>
+  <data name="&gt;&gt;BUT_paramsfromlog.Name" xml:space="preserve">
+    <value>BUT_paramsfromlog</value>
+  </data>
+  <data name="&gt;&gt;BUT_paramsfromlog.Type" xml:space="preserve">
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4622.30215, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_paramsfromlog.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BUT_paramsfromlog.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="BUT_getwpsfromlog.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="BUT_getwpsfromlog.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="BUT_getwpsfromlog.Location" type="System.Drawing.Point, System.Drawing">
+    <value>380, 6</value>
+  </data>
+  <data name="BUT_getwpsfromlog.Size" type="System.Drawing.Size, System.Drawing">
+    <value>68, 30</value>
+  </data>
+  <data name="BUT_getwpsfromlog.TabIndex" type="System.Int32, mscorlib">
+    <value>15</value>
+  </data>
+  <data name="BUT_getwpsfromlog.Text" xml:space="preserve">
+    <value>Extract WPs</value>
+  </data>
+  <data name="&gt;&gt;BUT_getwpsfromlog.Name" xml:space="preserve">
+    <value>BUT_getwpsfromlog</value>
+  </data>
+  <data name="&gt;&gt;BUT_getwpsfromlog.Type" xml:space="preserve">
+    <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4622.30215, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_getwpsfromlog.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BUT_getwpsfromlog.ZOrder" xml:space="preserve">
     <value>0</value>
   </data>
   <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
diff --git a/Tools/ArdupilotMegaPlanner/Msi/installer.wxs b/Tools/ArdupilotMegaPlanner/Msi/installer.wxs
index 45acc75dccc9906a57c0cdab3676f7c4ab0cd780..1de47d2ad8bc278375892a029bc5e7716fbced51 100644
--- a/Tools/ArdupilotMegaPlanner/Msi/installer.wxs
+++ b/Tools/ArdupilotMegaPlanner/Msi/installer.wxs
@@ -2,14 +2,14 @@
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension" xmlns:difx="http://schemas.microsoft.com/wix/DifxAppExtension">
 
 
-    <Product Id="*" Name="APM Planner" Language="1033" Version="1.2.8" Manufacturer="Michael Oborne" UpgradeCode="{625389D7-EB3C-4d77-A5F6-A285CF99437D}">
+    <Product Id="*" Name="APM Planner" Language="1033" Version="1.2.9" Manufacturer="Michael Oborne" UpgradeCode="{625389D7-EB3C-4d77-A5F6-A285CF99437D}">
 
         <Package Description="APM Planner Installer" Comments="Apm Planner Installer" Manufacturer="Michael Oborne" InstallerVersion="200" Compressed="yes" />
 
 
 <Upgrade Id="{625389D7-EB3C-4d77-A5F6-A285CF99437D}">
-    <UpgradeVersion OnlyDetect="yes" Minimum="1.2.8" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
-    <UpgradeVersion OnlyDetect="no" Maximum="1.2.8" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
+    <UpgradeVersion OnlyDetect="yes" Minimum="1.2.9" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
+    <UpgradeVersion OnlyDetect="no" Maximum="1.2.9" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
 </Upgrade>
 
 <InstallExecuteSequence>
@@ -31,7 +31,7 @@
                             <Permission User="Everyone" GenericAll="yes" /> 
                         </CreateFolder>
                     </Component>
-<Component Id="_comp1" Guid="9ffca6e2-5272-4c99-a10a-fb99b0a2bc9e">
+<Component Id="_comp1" Guid="374bbf47-d390-441d-b3c3-bf96b2f204e4">
 <File Id="_2" Source="..\bin\release\.gdbinit" />
 <File Id="_3" Source="..\bin\release\.gitignore" />
 <File Id="_4" Source="..\bin\release\aerosim3.91.txt" />
@@ -54,203 +54,205 @@
 <File Id="_21" Source="..\bin\release\ArdupilotMegaPlanner10.exe.manifest" />
 <File Id="_22" Source="..\bin\release\ArdupilotMegaPlanner10.pdb" />
 <File Id="_23" Source="..\bin\release\ArduPlane-hil.exe" />
-<File Id="_24" Source="..\bin\release\block_plane_0.dae" />
-<File Id="_25" Source="..\bin\release\BSE.Windows.Forms.dll" />
-<File Id="_26" Source="..\bin\release\BSE.Windows.Forms.pdb" />
-<File Id="_27" Source="..\bin\release\BSE.Windows.Forms.xml" />
-<File Id="_28" Source="..\bin\release\Core.dll" />
-<File Id="_29" Source="..\bin\release\cygstdc++-6.dll" />
-<File Id="_30" Source="..\bin\release\cygwin1.dll" />
-<File Id="_31" Source="..\bin\release\dataflashlog.xml" />
-<File Id="_32" Source="..\bin\release\DirectShowLib-2005.dll" />
-<File Id="_33" Source="..\bin\release\eeprom.bin" />
-<File Id="_34" Source="..\bin\release\GMap.NET.Core.dll" />
-<File Id="_35" Source="..\bin\release\GMap.NET.Core.pdb" />
-<File Id="_36" Source="..\bin\release\GMap.NET.WindowsForms.dll" />
-<File Id="_37" Source="..\bin\release\GMap.NET.WindowsForms.pdb" />
-<File Id="_38" Source="..\bin\release\hud.html" />
-<File Id="_39" Source="..\bin\release\ICSharpCode.SharpZipLib.dll" />
-<File Id="_40" Source="..\bin\release\Ionic.Zip.Reduced.dll" />
-<File Id="_41" Source="..\bin\release\IronPython.dll" />
-<File Id="_42" Source="..\bin\release\IronPython.Modules.dll" />
-<File Id="_43" Source="..\bin\release\JSBSim.exe" />
-<File Id="_44" Source="..\bin\release\KMLib.dll" />
-<File Id="_45" Source="..\bin\release\log4net.dll" />
-<File Id="_46" Source="..\bin\release\mavcmd.xml" />
-<File Id="_47" Source="..\bin\release\MAVLink.xml" />
-<File Id="_48" Source="..\bin\release\MetaDataExtractor.dll" />
-<File Id="_49" Source="..\bin\release\Microsoft.DirectX.DirectInput.dll" />
-<File Id="_50" Source="..\bin\release\Microsoft.DirectX.dll" />
-<File Id="_51" Source="..\bin\release\Microsoft.Dynamic.dll" />
-<File Id="_52" Source="..\bin\release\Microsoft.Scripting.Core.dll" />
-<File Id="_53" Source="..\bin\release\Microsoft.Scripting.Debugging.dll" />
-<File Id="_54" Source="..\bin\release\Microsoft.Scripting.dll" />
-<File Id="_55" Source="..\bin\release\Microsoft.Scripting.ExtensionAttribute.dll" />
-<File Id="_56" Source="..\bin\release\netDxf.dll" />
-<File Id="_57" Source="..\bin\release\OpenTK.Compatibility.dll" />
-<File Id="_58" Source="..\bin\release\OpenTK.dll" />
-<File Id="_59" Source="..\bin\release\OpenTK.dll.config" />
-<File Id="_60" Source="..\bin\release\OpenTK.GLControl.dll" />
-<File Id="_61" Source="..\bin\release\ParameterMetaData.xml" />
-<File Id="_62" Source="..\bin\release\quadhil.xml" />
-<File Id="_63" Source="..\bin\release\runme" />
-<File Id="_64" Source="..\bin\release\serialsent.raw" />
-<File Id="_65" Source="..\bin\release\SharpKml.dll" />
-<File Id="_66" Source="..\bin\release\SharpKml.pdb" />
-<File Id="_67" Source="..\bin\release\SharpKml.xml" />
-<File Id="_68" Source="..\bin\release\System.Data.SQLite.dll" />
-<File Id="_69" Source="..\bin\release\System.Reactive.dll" />
-<File Id="_70" Source="..\bin\release\System.Reactive.xml" />
-<File Id="_71" Source="..\bin\release\System.Speech.dll" />
-<File Id="_72" Source="..\bin\release\Transitions.dll" />
-<File Id="_73" Source="..\bin\release\Updater.exe" />
-<File Id="_74" Source="..\bin\release\Updater.exe.config" />
-<File Id="_75" Source="..\bin\release\Updater.pdb" />
-<File Id="_76" Source="..\bin\release\version.exe" />
-<File Id="_77" Source="..\bin\release\version.txt" />
-<File Id="_78" Source="..\bin\release\ZedGraph.dll" />
+<File Id="_24" Source="..\bin\release\AStar.dll" />
+<File Id="_25" Source="..\bin\release\AStar.pdb" />
+<File Id="_26" Source="..\bin\release\block_plane_0.dae" />
+<File Id="_27" Source="..\bin\release\BSE.Windows.Forms.dll" />
+<File Id="_28" Source="..\bin\release\BSE.Windows.Forms.pdb" />
+<File Id="_29" Source="..\bin\release\BSE.Windows.Forms.xml" />
+<File Id="_30" Source="..\bin\release\Core.dll" />
+<File Id="_31" Source="..\bin\release\cygstdc++-6.dll" />
+<File Id="_32" Source="..\bin\release\cygwin1.dll" />
+<File Id="_33" Source="..\bin\release\dataflashlog.xml" />
+<File Id="_34" Source="..\bin\release\DirectShowLib-2005.dll" />
+<File Id="_35" Source="..\bin\release\eeprom.bin" />
+<File Id="_36" Source="..\bin\release\GMap.NET.Core.dll" />
+<File Id="_37" Source="..\bin\release\GMap.NET.Core.pdb" />
+<File Id="_38" Source="..\bin\release\GMap.NET.WindowsForms.dll" />
+<File Id="_39" Source="..\bin\release\GMap.NET.WindowsForms.pdb" />
+<File Id="_40" Source="..\bin\release\hud.html" />
+<File Id="_41" Source="..\bin\release\ICSharpCode.SharpZipLib.dll" />
+<File Id="_42" Source="..\bin\release\Ionic.Zip.Reduced.dll" />
+<File Id="_43" Source="..\bin\release\IronPython.dll" />
+<File Id="_44" Source="..\bin\release\IronPython.Modules.dll" />
+<File Id="_45" Source="..\bin\release\JSBSim.exe" />
+<File Id="_46" Source="..\bin\release\KMLib.dll" />
+<File Id="_47" Source="..\bin\release\log4net.dll" />
+<File Id="_48" Source="..\bin\release\mavcmd.xml" />
+<File Id="_49" Source="..\bin\release\MAVLink.xml" />
+<File Id="_50" Source="..\bin\release\MetaDataExtractor.dll" />
+<File Id="_51" Source="..\bin\release\Microsoft.DirectX.DirectInput.dll" />
+<File Id="_52" Source="..\bin\release\Microsoft.DirectX.dll" />
+<File Id="_53" Source="..\bin\release\Microsoft.Dynamic.dll" />
+<File Id="_54" Source="..\bin\release\Microsoft.Scripting.Core.dll" />
+<File Id="_55" Source="..\bin\release\Microsoft.Scripting.Debugging.dll" />
+<File Id="_56" Source="..\bin\release\Microsoft.Scripting.dll" />
+<File Id="_57" Source="..\bin\release\Microsoft.Scripting.ExtensionAttribute.dll" />
+<File Id="_58" Source="..\bin\release\netDxf.dll" />
+<File Id="_59" Source="..\bin\release\OpenTK.Compatibility.dll" />
+<File Id="_60" Source="..\bin\release\OpenTK.dll" />
+<File Id="_61" Source="..\bin\release\OpenTK.dll.config" />
+<File Id="_62" Source="..\bin\release\OpenTK.GLControl.dll" />
+<File Id="_63" Source="..\bin\release\ParameterMetaData.xml" />
+<File Id="_64" Source="..\bin\release\quadhil.xml" />
+<File Id="_65" Source="..\bin\release\runme" />
+<File Id="_66" Source="..\bin\release\serialsent.raw" />
+<File Id="_67" Source="..\bin\release\SharpKml.dll" />
+<File Id="_68" Source="..\bin\release\SharpKml.pdb" />
+<File Id="_69" Source="..\bin\release\SharpKml.xml" />
+<File Id="_70" Source="..\bin\release\System.Data.SQLite.dll" />
+<File Id="_71" Source="..\bin\release\System.Reactive.dll" />
+<File Id="_72" Source="..\bin\release\System.Reactive.xml" />
+<File Id="_73" Source="..\bin\release\System.Speech.dll" />
+<File Id="_74" Source="..\bin\release\Transitions.dll" />
+<File Id="_75" Source="..\bin\release\Updater.exe" />
+<File Id="_76" Source="..\bin\release\Updater.exe.config" />
+<File Id="_77" Source="..\bin\release\Updater.pdb" />
+<File Id="_78" Source="..\bin\release\version.exe" />
+<File Id="_79" Source="..\bin\release\version.txt" />
+<File Id="_80" Source="..\bin\release\ZedGraph.dll" />
 </Component>
-<Directory Id="aircraft78" Name="aircraft">
-<Component Id="_comp79" Guid="df6ce645-ec84-4f3e-a498-3c333976ab92">
-<File Id="_80" Source="..\bin\release\aircraft\placeholder.txt" />
+<Directory Id="aircraft80" Name="aircraft">
+<Component Id="_comp81" Guid="63a1bc0f-998e-4d82-95af-f794c0195bb7">
+<File Id="_82" Source="..\bin\release\aircraft\placeholder.txt" />
 </Component>
-<Directory Id="arducopter80" Name="arducopter">
-<Component Id="_comp81" Guid="4845bf66-01c9-4601-bee7-b226c8046bf4">
-<File Id="_82" Source="..\bin\release\aircraft\arducopter\arducopter-set.xml" />
-<File Id="_83" Source="..\bin\release\aircraft\arducopter\arducopter.jpg" />
-<File Id="_84" Source="..\bin\release\aircraft\arducopter\arducopter.xml" />
-<File Id="_85" Source="..\bin\release\aircraft\arducopter\initfile.xml" />
-<File Id="_86" Source="..\bin\release\aircraft\arducopter\plus_quad2-set.xml" />
-<File Id="_87" Source="..\bin\release\aircraft\arducopter\plus_quad2.xml" />
-<File Id="_88" Source="..\bin\release\aircraft\arducopter\quad.nas" />
-<File Id="_89" Source="..\bin\release\aircraft\arducopter\README" />
+<Directory Id="arducopter82" Name="arducopter">
+<Component Id="_comp83" Guid="0630f92e-f583-4937-af02-c4c2ab38049e">
+<File Id="_84" Source="..\bin\release\aircraft\arducopter\arducopter-set.xml" />
+<File Id="_85" Source="..\bin\release\aircraft\arducopter\arducopter.jpg" />
+<File Id="_86" Source="..\bin\release\aircraft\arducopter\arducopter.xml" />
+<File Id="_87" Source="..\bin\release\aircraft\arducopter\initfile.xml" />
+<File Id="_88" Source="..\bin\release\aircraft\arducopter\plus_quad2-set.xml" />
+<File Id="_89" Source="..\bin\release\aircraft\arducopter\plus_quad2.xml" />
+<File Id="_90" Source="..\bin\release\aircraft\arducopter\quad.nas" />
+<File Id="_91" Source="..\bin\release\aircraft\arducopter\README" />
 </Component>
-<Directory Id="data89" Name="data">
-<Component Id="_comp90" Guid="4bc20931-aa71-42f4-af95-8a4879d3b83e">
-<File Id="_91" Source="..\bin\release\aircraft\arducopter\data\arducopter_half_step.txt" />
-<File Id="_92" Source="..\bin\release\aircraft\arducopter\data\arducopter_step.txt" />
-<File Id="_93" Source="..\bin\release\aircraft\arducopter\data\rw_generic_pylon.ac" />
+<Directory Id="data91" Name="data">
+<Component Id="_comp92" Guid="acf4cb9c-693e-4307-a085-a83880478047">
+<File Id="_93" Source="..\bin\release\aircraft\arducopter\data\arducopter_half_step.txt" />
+<File Id="_94" Source="..\bin\release\aircraft\arducopter\data\arducopter_step.txt" />
+<File Id="_95" Source="..\bin\release\aircraft\arducopter\data\rw_generic_pylon.ac" />
 </Component>
 </Directory>
-<Directory Id="Engines93" Name="Engines">
-<Component Id="_comp94" Guid="4ad5527d-c704-460a-a4df-564a8707c9fd">
-<File Id="_95" Source="..\bin\release\aircraft\arducopter\Engines\a2830-12.xml" />
-<File Id="_96" Source="..\bin\release\aircraft\arducopter\Engines\prop10x4.5.xml" />
+<Directory Id="Engines95" Name="Engines">
+<Component Id="_comp96" Guid="03b81b85-ae7e-4b69-9f8b-8c2c187fdf7f">
+<File Id="_97" Source="..\bin\release\aircraft\arducopter\Engines\a2830-12.xml" />
+<File Id="_98" Source="..\bin\release\aircraft\arducopter\Engines\prop10x4.5.xml" />
 </Component>
 </Directory>
-<Directory Id="Models96" Name="Models">
-<Component Id="_comp97" Guid="35ef65d9-7ee3-4ed2-8a70-c9be8301d98b">
-<File Id="_98" Source="..\bin\release\aircraft\arducopter\Models\arducopter.ac" />
-<File Id="_99" Source="..\bin\release\aircraft\arducopter\Models\arducopter.xml" />
-<File Id="_100" Source="..\bin\release\aircraft\arducopter\Models\plus_quad.ac" />
-<File Id="_101" Source="..\bin\release\aircraft\arducopter\Models\plus_quad2.ac" />
-<File Id="_102" Source="..\bin\release\aircraft\arducopter\Models\plus_quad2.xml" />
-<File Id="_103" Source="..\bin\release\aircraft\arducopter\Models\quad.3ds" />
-<File Id="_104" Source="..\bin\release\aircraft\arducopter\Models\shareware_output.3ds" />
-<File Id="_105" Source="..\bin\release\aircraft\arducopter\Models\Untitled.ac" />
-<File Id="_106" Source="..\bin\release\aircraft\arducopter\Models\Y6_test.ac" />
+<Directory Id="Models98" Name="Models">
+<Component Id="_comp99" Guid="91c2026d-303f-4a5d-81a6-892f7a2a569f">
+<File Id="_100" Source="..\bin\release\aircraft\arducopter\Models\arducopter.ac" />
+<File Id="_101" Source="..\bin\release\aircraft\arducopter\Models\arducopter.xml" />
+<File Id="_102" Source="..\bin\release\aircraft\arducopter\Models\plus_quad.ac" />
+<File Id="_103" Source="..\bin\release\aircraft\arducopter\Models\plus_quad2.ac" />
+<File Id="_104" Source="..\bin\release\aircraft\arducopter\Models\plus_quad2.xml" />
+<File Id="_105" Source="..\bin\release\aircraft\arducopter\Models\quad.3ds" />
+<File Id="_106" Source="..\bin\release\aircraft\arducopter\Models\shareware_output.3ds" />
+<File Id="_107" Source="..\bin\release\aircraft\arducopter\Models\Untitled.ac" />
+<File Id="_108" Source="..\bin\release\aircraft\arducopter\Models\Y6_test.ac" />
 </Component>
 </Directory>
 </Directory>
-<Directory Id="Rascal106" Name="Rascal">
-<Component Id="_comp107" Guid="e12705ad-9a87-4402-8215-a1f516298b82">
-<File Id="_108" Source="..\bin\release\aircraft\Rascal\Rascal-keyboard.xml" />
-<File Id="_109" Source="..\bin\release\aircraft\Rascal\Rascal-submodels.xml" />
-<File Id="_110" Source="..\bin\release\aircraft\Rascal\Rascal.xml" />
-<File Id="_111" Source="..\bin\release\aircraft\Rascal\Rascal110-JSBSim-set.xml" />
-<File Id="_112" Source="..\bin\release\aircraft\Rascal\Rascal110-JSBSim.xml" />
-<File Id="_113" Source="..\bin\release\aircraft\Rascal\Rascal110-splash.rgb" />
-<File Id="_114" Source="..\bin\release\aircraft\Rascal\README.Rascal" />
-<File Id="_115" Source="..\bin\release\aircraft\Rascal\reset_CMAC.xml" />
-<File Id="_116" Source="..\bin\release\aircraft\Rascal\thumbnail.jpg" />
+<Directory Id="Rascal108" Name="Rascal">
+<Component Id="_comp109" Guid="291468a0-aa56-4839-a693-d18f08298aef">
+<File Id="_110" Source="..\bin\release\aircraft\Rascal\Rascal-keyboard.xml" />
+<File Id="_111" Source="..\bin\release\aircraft\Rascal\Rascal-submodels.xml" />
+<File Id="_112" Source="..\bin\release\aircraft\Rascal\Rascal.xml" />
+<File Id="_113" Source="..\bin\release\aircraft\Rascal\Rascal110-JSBSim-set.xml" />
+<File Id="_114" Source="..\bin\release\aircraft\Rascal\Rascal110-JSBSim.xml" />
+<File Id="_115" Source="..\bin\release\aircraft\Rascal\Rascal110-splash.rgb" />
+<File Id="_116" Source="..\bin\release\aircraft\Rascal\README.Rascal" />
+<File Id="_117" Source="..\bin\release\aircraft\Rascal\reset_CMAC.xml" />
+<File Id="_118" Source="..\bin\release\aircraft\Rascal\thumbnail.jpg" />
 </Component>
-<Directory Id="Engines116" Name="Engines">
-<Component Id="_comp117" Guid="54175779-45d8-4321-bb6a-d996f8e93a55">
-<File Id="_118" Source="..\bin\release\aircraft\Rascal\Engines\18x8.xml" />
-<File Id="_119" Source="..\bin\release\aircraft\Rascal\Engines\Zenoah_G-26A.xml" />
+<Directory Id="Engines118" Name="Engines">
+<Component Id="_comp119" Guid="96bd3719-1478-4a01-9634-0d7b8dbdd573">
+<File Id="_120" Source="..\bin\release\aircraft\Rascal\Engines\18x8.xml" />
+<File Id="_121" Source="..\bin\release\aircraft\Rascal\Engines\Zenoah_G-26A.xml" />
 </Component>
 </Directory>
-<Directory Id="Models119" Name="Models">
-<Component Id="_comp120" Guid="2d5f3c62-07d7-4bd4-9475-e65bdd47974d">
-<File Id="_121" Source="..\bin\release\aircraft\Rascal\Models\Rascal.rgb" />
-<File Id="_122" Source="..\bin\release\aircraft\Rascal\Models\Rascal110-000-013.ac" />
-<File Id="_123" Source="..\bin\release\aircraft\Rascal\Models\Rascal110.xml" />
-<File Id="_124" Source="..\bin\release\aircraft\Rascal\Models\smoke.png" />
-<File Id="_125" Source="..\bin\release\aircraft\Rascal\Models\smokeW.xml" />
-<File Id="_126" Source="..\bin\release\aircraft\Rascal\Models\Trajectory-Marker.ac" />
-<File Id="_127" Source="..\bin\release\aircraft\Rascal\Models\Trajectory-Marker.xml" />
+<Directory Id="Models121" Name="Models">
+<Component Id="_comp122" Guid="e63c75ad-ec68-4311-8757-e69263089e31">
+<File Id="_123" Source="..\bin\release\aircraft\Rascal\Models\Rascal.rgb" />
+<File Id="_124" Source="..\bin\release\aircraft\Rascal\Models\Rascal110-000-013.ac" />
+<File Id="_125" Source="..\bin\release\aircraft\Rascal\Models\Rascal110.xml" />
+<File Id="_126" Source="..\bin\release\aircraft\Rascal\Models\smoke.png" />
+<File Id="_127" Source="..\bin\release\aircraft\Rascal\Models\smokeW.xml" />
+<File Id="_128" Source="..\bin\release\aircraft\Rascal\Models\Trajectory-Marker.ac" />
+<File Id="_129" Source="..\bin\release\aircraft\Rascal\Models\Trajectory-Marker.xml" />
 </Component>
 </Directory>
-<Directory Id="Systems127" Name="Systems">
-<Component Id="_comp128" Guid="e3eafd18-aabe-42ad-9bd0-85abb070cc8b">
-<File Id="_129" Source="..\bin\release\aircraft\Rascal\Systems\110-autopilot.xml" />
-<File Id="_130" Source="..\bin\release\aircraft\Rascal\Systems\airdata.nas" />
-<File Id="_131" Source="..\bin\release\aircraft\Rascal\Systems\electrical.xml" />
-<File Id="_132" Source="..\bin\release\aircraft\Rascal\Systems\main.nas" />
-<File Id="_133" Source="..\bin\release\aircraft\Rascal\Systems\ugear.nas" />
+<Directory Id="Systems129" Name="Systems">
+<Component Id="_comp130" Guid="428f1bf2-7280-44df-ab87-46f9954c90b5">
+<File Id="_131" Source="..\bin\release\aircraft\Rascal\Systems\110-autopilot.xml" />
+<File Id="_132" Source="..\bin\release\aircraft\Rascal\Systems\airdata.nas" />
+<File Id="_133" Source="..\bin\release\aircraft\Rascal\Systems\electrical.xml" />
+<File Id="_134" Source="..\bin\release\aircraft\Rascal\Systems\main.nas" />
+<File Id="_135" Source="..\bin\release\aircraft\Rascal\Systems\ugear.nas" />
 </Component>
 </Directory>
 </Directory>
 </Directory>
-<Directory Id="Driver133" Name="Driver">
-<Component Id="_comp134" Guid="55169111-e676-4f85-b41c-a31db018ea72">
-<File Id="_135" Source="..\bin\release\Driver\Arduino MEGA 2560.inf" />
+<Directory Id="Driver135" Name="Driver">
+<Component Id="_comp136" Guid="cf4756cc-09a6-43ae-855e-dffc804a309c">
+<File Id="_137" Source="..\bin\release\Driver\Arduino MEGA 2560.inf" />
 </Component>
 </Directory>
-<Directory Id="es_ES135" Name="es-ES">
-<Component Id="_comp136" Guid="71eba501-12fa-4e9a-822d-86aa58b2948f">
-<File Id="_137" Source="..\bin\release\es-ES\ArdupilotMegaPlanner10.resources.dll" />
+<Directory Id="es_ES137" Name="es-ES">
+<Component Id="_comp138" Guid="8451bc36-e241-4895-905c-97fee9f3d429">
+<File Id="_139" Source="..\bin\release\es-ES\ArdupilotMegaPlanner10.resources.dll" />
 </Component>
 </Directory>
-<Directory Id="fr137" Name="fr">
-<Component Id="_comp138" Guid="4c38c69a-5d19-444c-8b1d-a06aeec16c70">
-<File Id="_139" Source="..\bin\release\fr\ArdupilotMegaPlanner10.resources.dll" />
+<Directory Id="fr139" Name="fr">
+<Component Id="_comp140" Guid="2d859ed3-675b-4d55-ac7e-e7988ae1ca41">
+<File Id="_141" Source="..\bin\release\fr\ArdupilotMegaPlanner10.resources.dll" />
 </Component>
 </Directory>
-<Directory Id="it_IT139" Name="it-IT">
-<Component Id="_comp140" Guid="987445fe-8357-4e16-86bb-2bbad83996bb">
-<File Id="_141" Source="..\bin\release\it-IT\ArdupilotMegaPlanner10.resources.dll" />
+<Directory Id="it_IT141" Name="it-IT">
+<Component Id="_comp142" Guid="01eff05b-9fbc-4ba1-9f06-254165878059">
+<File Id="_143" Source="..\bin\release\it-IT\ArdupilotMegaPlanner10.resources.dll" />
 </Component>
 </Directory>
-<Directory Id="jsbsim141" Name="jsbsim">
-<Component Id="_comp142" Guid="d50d8011-0236-494c-9081-b9b0127f6001">
-<File Id="_143" Source="..\bin\release\jsbsim\fgout.xml" />
-<File Id="_144" Source="..\bin\release\jsbsim\rascal_test.xml" />
+<Directory Id="jsbsim143" Name="jsbsim">
+<Component Id="_comp144" Guid="32e4a0b3-b855-42fd-915f-2b22d41e31db">
+<File Id="_145" Source="..\bin\release\jsbsim\fgout.xml" />
+<File Id="_146" Source="..\bin\release\jsbsim\rascal_test.xml" />
 </Component>
 </Directory>
-<Directory Id="m3u144" Name="m3u">
-<Component Id="_comp145" Guid="38eb3420-35be-4736-9089-ae935db0d957">
-<File Id="_146" Source="..\bin\release\m3u\both.m3u" />
-<File Id="_147" Source="..\bin\release\m3u\GeoRefnetworklink.kml" />
-<File Id="_148" Source="..\bin\release\m3u\hud.m3u" />
-<File Id="_149" Source="..\bin\release\m3u\map.m3u" />
-<File Id="_150" Source="..\bin\release\m3u\networklink.kml" />
+<Directory Id="m3u146" Name="m3u">
+<Component Id="_comp147" Guid="c1731c97-36b2-4118-a4e4-26dea45c9e87">
+<File Id="_148" Source="..\bin\release\m3u\both.m3u" />
+<File Id="_149" Source="..\bin\release\m3u\GeoRefnetworklink.kml" />
+<File Id="_150" Source="..\bin\release\m3u\hud.m3u" />
+<File Id="_151" Source="..\bin\release\m3u\map.m3u" />
+<File Id="_152" Source="..\bin\release\m3u\networklink.kml" />
 </Component>
 </Directory>
-<Directory Id="pl150" Name="pl">
-<Component Id="_comp151" Guid="0f77a481-bd50-477c-8e58-c88beb432150">
-<File Id="_152" Source="..\bin\release\pl\ArdupilotMegaPlanner10.resources.dll" />
+<Directory Id="pl152" Name="pl">
+<Component Id="_comp153" Guid="d20e0b51-89db-4829-9376-ac87eb0c014d">
+<File Id="_154" Source="..\bin\release\pl\ArdupilotMegaPlanner10.resources.dll" />
 </Component>
 </Directory>
-<Directory Id="Resources152" Name="Resources">
-<Component Id="_comp153" Guid="464dcaaa-af87-4e12-b682-adaf6fbafa27">
-<File Id="_154" Source="..\bin\release\Resources\MAVCmd.txt" />
-<File Id="_155" Source="..\bin\release\Resources\Welcome_to_Michael_Oborne.rtf" />
+<Directory Id="Resources154" Name="Resources">
+<Component Id="_comp155" Guid="bcb133d9-727d-4e80-8cfb-96e7c22f6b4e">
+<File Id="_156" Source="..\bin\release\Resources\MAVCmd.txt" />
+<File Id="_157" Source="..\bin\release\Resources\Welcome_to_Michael_Oborne.rtf" />
 </Component>
 </Directory>
-<Directory Id="ru_RU155" Name="ru-RU">
-<Component Id="_comp156" Guid="46cb98a1-f305-4671-9e8c-cc3b2c415753">
-<File Id="_157" Source="..\bin\release\ru-RU\ArdupilotMegaPlanner10.resources.dll" />
+<Directory Id="ru_RU157" Name="ru-RU">
+<Component Id="_comp158" Guid="04f82c03-bca7-4ea1-bf67-ae9580ff8de5">
+<File Id="_159" Source="..\bin\release\ru-RU\ArdupilotMegaPlanner10.resources.dll" />
 </Component>
 </Directory>
-<Directory Id="zh_Hans157" Name="zh-Hans">
-<Component Id="_comp158" Guid="8c95775f-5d01-48a4-8e9b-3e0453d3f9f3">
-<File Id="_159" Source="..\bin\release\zh-Hans\ArdupilotMegaPlanner10.resources.dll" />
+<Directory Id="zh_Hans159" Name="zh-Hans">
+<Component Id="_comp160" Guid="11eadd21-3f68-4184-9d9b-cd73889e38b7">
+<File Id="_161" Source="..\bin\release\zh-Hans\ArdupilotMegaPlanner10.resources.dll" />
 </Component>
 </Directory>
-<Directory Id="zh_TW159" Name="zh-TW">
-<Component Id="_comp160" Guid="5f9fc027-04e8-418a-9b5b-bc6d3046681b">
-<File Id="_161" Source="..\bin\release\zh-TW\ArdupilotMegaPlanner10.resources.dll" />
+<Directory Id="zh_TW161" Name="zh-TW">
+<Component Id="_comp162" Guid="d334ccf7-6290-4a4f-a6fd-55727721ef7a">
+<File Id="_163" Source="..\bin\release\zh-TW\ArdupilotMegaPlanner10.resources.dll" />
 </Component>
 </Directory>
 
@@ -294,26 +296,26 @@
             <ComponentRef Id="InstallDirPermissions" />
 
 <ComponentRef Id="_comp1" />
-<ComponentRef Id="_comp79" />
 <ComponentRef Id="_comp81" />
-<ComponentRef Id="_comp90" />
-<ComponentRef Id="_comp94" />
-<ComponentRef Id="_comp97" />
-<ComponentRef Id="_comp107" />
-<ComponentRef Id="_comp117" />
-<ComponentRef Id="_comp120" />
-<ComponentRef Id="_comp128" />
-<ComponentRef Id="_comp134" />
+<ComponentRef Id="_comp83" />
+<ComponentRef Id="_comp92" />
+<ComponentRef Id="_comp96" />
+<ComponentRef Id="_comp99" />
+<ComponentRef Id="_comp109" />
+<ComponentRef Id="_comp119" />
+<ComponentRef Id="_comp122" />
+<ComponentRef Id="_comp130" />
 <ComponentRef Id="_comp136" />
 <ComponentRef Id="_comp138" />
 <ComponentRef Id="_comp140" />
 <ComponentRef Id="_comp142" />
-<ComponentRef Id="_comp145" />
-<ComponentRef Id="_comp151" />
+<ComponentRef Id="_comp144" />
+<ComponentRef Id="_comp147" />
 <ComponentRef Id="_comp153" />
-<ComponentRef Id="_comp156" />
+<ComponentRef Id="_comp155" />
 <ComponentRef Id="_comp158" />
 <ComponentRef Id="_comp160" />
+<ComponentRef Id="_comp162" />
 
             
             <ComponentRef Id="ApplicationShortcut" />
diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs
index 49216dd91354fb0cd6a7b3ca86271600e863e45a..73d7f09fbd88db1f5eb2c23d2fecbd78930314cf 100644
--- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs
+++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs
@@ -34,5 +34,5 @@ using System.Resources;
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("1.1.*")]
-[assembly: AssemblyFileVersion("1.2.9")]
+[assembly: AssemblyFileVersion("1.2.10")]
 [assembly: NeutralResourcesLanguageAttribute("")]
diff --git a/Tools/ArdupilotMegaPlanner/Utilities/Capture.cs b/Tools/ArdupilotMegaPlanner/Utilities/Capture.cs
index 6d721dea655f5e08aea2b2b1ddca3b62f02a7c20..e977a150a89856bdafa1f218f3875d8037ff66be 100644
--- a/Tools/ArdupilotMegaPlanner/Utilities/Capture.cs
+++ b/Tools/ArdupilotMegaPlanner/Utilities/Capture.cs
@@ -50,7 +50,7 @@ namespace WebCamService
         IntPtr ip = IntPtr.Zero;
 
         public event CamImage camimage;
-        System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();
+        Thread timer1;
 
         #endregion
 
@@ -88,8 +88,12 @@ namespace WebCamService
                 m_bGotOne = true;
                 m_bRunning = false;
 
-                timer1.Interval = 1000 / 15; // 15 fps
-                timer1.Tick += new EventHandler(timer1_Tick);
+                //timer1.Interval = 1000 / 15; // 15 fps
+                //timer1.Tick += new EventHandler(timer1_Tick);
+                //timer1.Start();
+
+                timer1 = new Thread(timer);
+                timer1.IsBackground = true;
                 timer1.Start();
 
             }
@@ -99,10 +103,37 @@ namespace WebCamService
                 throw;
             }
         }
+
+        void timer()
+        {
+            DateTime last = DateTime.Now;
+
+            while (true)
+            {
+                try
+                {
+                    System.Threading.Thread.Sleep(1000/25); // 25 fps
+
+                    timer1_Tick(this, null);
+
+                }
+                catch (ThreadAbortException)
+                {
+                    break;
+                }
+                catch
+                {
+
+                }
+            }
+        }
+
         /// <summary> release everything. </summary>
         public void Dispose()
         {
-            timer1.Stop();
+            if (timer1 != null)
+                timer1.Abort();
+
             if (camimage != null)
             {
                 camimage(null); // clear last pic
@@ -159,7 +190,7 @@ namespace WebCamService
                 // Start waiting
                 if ( ! m_PictureReady.WaitOne(5000, false) )
                 {
-                    throw new Exception("Timeout waiting to get picture");
+                    //throw new Exception("Timeout waiting to get picture");
                 }
                 //Pause(); //- we are effectivly pulling at 15 fps, so no need to pause
             }
@@ -224,8 +255,8 @@ namespace WebCamService
                 {
                     camimage(image);
                 }
-            }
-            catch { Console.WriteLine("Grab bmp failed"); timer1.Enabled = false; this.CloseInterfaces(); System.Windows.Forms.CustomMessageBox.Show("Problem with capture device, grabbing frame took longer than 5 sec"); }
+            }//System.Windows.Forms.CustomMessageBox.Show("Problem with capture device, grabbing frame took longer than 5 sec");
+            catch { Console.WriteLine("Grab bmp failed"); }
         }
 
         /// <summary> build the capture graph for grabber. </summary>
@@ -404,8 +435,14 @@ namespace WebCamService
             }           
 
             // Set the new format
-            hr = videoStreamConfig.SetFormat( media );
-            DsError.ThrowExceptionForHR( hr );
+            try
+            {
+                hr = videoStreamConfig.SetFormat(media);
+            }
+            catch { }
+
+                DsError.ThrowExceptionForHR(hr);
+
 
             DsUtils.FreeAMMediaType(media);
             media = null;
diff --git a/Tools/ArdupilotMegaPlanner/Utilities/CaptureMJPEG.cs b/Tools/ArdupilotMegaPlanner/Utilities/CaptureMJPEG.cs
index 915a4c9502cbb470ed0e45791eb33bb790080a8b..477867c592910213adf7429d124c27dbe3f57f5f 100644
--- a/Tools/ArdupilotMegaPlanner/Utilities/CaptureMJPEG.cs
+++ b/Tools/ArdupilotMegaPlanner/Utilities/CaptureMJPEG.cs
@@ -110,6 +110,9 @@ namespace ArdupilotMega.Utilities
                 mpheader = mpheader.Substring(startboundary, endboundary - startboundary);
             }
 
+            dataStream.ReadTimeout = 30000; // 30 seconds
+            br.BaseStream.ReadTimeout = 30000;
+
             while (running)
             {
                 try
diff --git a/Tools/ArdupilotMegaPlanner/temp.cs b/Tools/ArdupilotMegaPlanner/temp.cs
index 8df60453fbf38e6020f504cbb58e46a94e825d46..1686e144795c2eb52fedc7c3f5663f01b2168488 100644
--- a/Tools/ArdupilotMegaPlanner/temp.cs
+++ b/Tools/ArdupilotMegaPlanner/temp.cs
@@ -903,8 +903,6 @@ namespace ArdupilotMega
         private void myButton1_Click(object sender, EventArgs e)
         {
             new SerialOutput2().Show();
-        }
-
-     
+        }     
     }
 }