/// <summary>
        /// A suitable transmitter has been selected to submit some data. We'll queue
        /// it for transmission in the next Update().
        /// </summary>
        /// <param name="data"></param>
        /// <param name="transmitter"></param>
        private void QueueTransmission(ScienceDataList data, IScienceDataTransmitter transmitter)
        {
            if (data.Count == 0)
            {
                return;
            }

#if DEBUG
            if (!realTransmitters.ContainsKey(transmitter))
            {
                Log.Error("MagicDataTransmitter.DoTransmit - Given transmitter isn't in real transmitter list!");
            }
#endif

            toBeTransmitted[transmitter].AddRange(data);
        }
        /// <summary>
        /// Locate a suitable transmitter and queue this data up for it
        /// </summary>
        /// <param name="data"></param>
        void IScienceDataTransmitter.TransmitData(ScienceDataList data)
        {
            Log.Debug("MagicTransmitter: received {0} ScienceData entries", data.Count);

            // locate the best actual transmitter to send this data through
            // lower scores seem to be better
            var potentials = new List <IScienceDataTransmitter>();

            foreach (var kvp in realTransmitters)
            {
                potentials.Add(kvp.Key);
            }

            if (potentials.Count > 0)
            {
                potentials = potentials.OrderBy(potential => ScienceUtil.GetTransmitterScore(potential)).ToList();

                QueueTransmission(data, potentials.First());
            }
            else
            {
                Log.Error("MagicDataTransmitter: Did not find any real transmitters");
            }
        }