/// <summary>
        /// implementation of the ICarCoordinates interface
        /// </summary>
        /// <param name="coords">car coordinate data</param>
        public void ProcessRaceData(JCarCoords coords)
        {
            // TODO replace with a more meaningful race model

            // received new car coordinates
            // store the information - Car array
            // calculate speed & publish
            speed++;
            speed %= 300;
            client.SendSpeed(coords.Timestamp, coords.CarIndex, speed);
            // calculate posision & publish
            position = random.Next(1, 6);
            client.SendPosition(coords.Timestamp, coords.CarIndex, position);
            // identify interesting events & publish
            if (speed == 1)
            {
                client.SendRaceEvent(coords.Timestamp, $"event {position}");
            }
        }
 /// <summary>
 /// send a speed update
 /// </summary>
 /// <param name="sender">event source</param>
 /// <param name="e">event arguments</param>
 private void RaceMonitor_SpeedEvent(object sender, SpeedChangedEventArgs e)
 {
     client.SendSpeed(e.Timestamp, e.Index, (int)e.SpeedMph);
 }