/// <summary>
        /// depending on what is target speed it can have different meanings
        /// speed >> 0 ---> going forward
        /// speed ~= 0 ---> stand still mode
        /// speed << 0 ---> going backward
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void Car_evTargetSpeedChanged(object sender, TargetSpeedChangedEventArgs args)
        {
            targetSpeedLocalCopy = args.GetTargetSpeed();
            Logger.Log(this, String.Format("target speed changed to: {0}", args.GetTargetSpeed()));

            if (targetSpeedLocalCopy < MAX_STAND_STILL_SPEED_IN_MPS && targetSpeedLocalCopy > MIN_STAND_STILL_SPEED_IN_MPS)
            {
                Mode = RideMode.standStill;
            }
            else if (targetSpeedLocalCopy > MAX_STAND_STILL_SPEED_IN_MPS)
            {
                Mode = RideMode.forward;
            }
            else //if targetSpeedLocalCopy < MIN_STAND_STILL_SPEED_IN_MPS
            {
                Mode = RideMode.backward;
            }

            //this setter also sends event "evNewSpeedSettingCalculated"
            SpeedSteering = regulator.SetTargetValue(targetSpeedLocalCopy);
        }
 void Model_evTargetSpeedChanged(object sender, TargetSpeedChangedEventArgs args)
 {
     this.Dispatcher.Invoke(
         new Action<TextBlock, string>((textBox, val)
             => textBox.Text = val),
                 textBlock_targetSpeed,
                 String.Format("{0:0.###}", args.GetTargetSpeed())
     );
 }