void UpdateSignalElements(Model.Sample s)
        {
            if (s.ssss == Model.SignalStrengthSampleStatus.Normal)
            {
                Screenshot.SignalStrengthSample sss = s.sss.Value;
                if (sss.netChoice.HasValue)
                {
                    NetSel = sss.netChoice.Value.ToString("g");
                }
                else
                {
                    NetSel = "N/A";
                }

                if (sss.detail.HasValue)
                {
                    Screenshot.SignalDetail sd = sss.detail.Value;
                    ConnectedTo = sd.onWWAN;
                    Bars4G      = sd.bars4g.ToString();
                    Bars3G      = sd.bars3g.ToString();
                    Bars2G      = sd.bars2g.ToString();
                }
                else
                {
                    ConnectedTo = null;
                    NetSel      = "N/A";
                    Bars4G      = "N/A";
                    Bars3G      = "N/A";
                    Bars2G      = "N/A";
                }

                if (sss.netChoice.HasValue && sss.detail.HasValue)
                {
                    ++HashGoodInstances;
                }
                else
                {
                    Debug.WriteLine("Screenshot was unrecognized, but hashes are: sum=" + sss.sumHash + ", det=" + sss.detailHash);
                    hashUnrecogSet.Add(new SSHashes {
                        sumHash = sss.sumHash, detHash = sss.detailHash
                    });
                    NotifyPropertyChanged("HashUnrecogUnique");
                    ++HashUnrecogInstances;
                }
            }
            else if (s.ssss == Model.SignalStrengthSampleStatus.TooProximateToPrev)
            {
                ++SampleNotCollectedInstances;
            }
            else
            {
                throw new Exception("Unrecognized screenshot status!");
            }
        }
        // *** End of variables tracking screenshot samples ***

        void SampleAvailable(object sender, Model.Sample s)
        {
            UpdateSignalElements(s);
            UpdateGpsElements(s.gps);
            UpdateLatencyElements(s.latency);
        }