       lon = data.mission.longitude
       if lat? && lon?
         v = @updateVehicle(key, lat, lon)
-        angular.extend(v.payload, data.mission)
+        @updateMarkerPopup(v, data.mission)
     )
 
   onMissionUpdate: (data) =>

      lon = payload.mission.longitude
      if lat? && lon?
        v = @updateVehicle(key, lat, lon)
        angular.extend(v.payload, payload.mission)
    )

  onMissionEnd: (data) =>

      # (kevinh - if we receive a message before we know the vehicle loc just drop it because having a marker without a loc freaks out leaflet)
      vehicleKey = @vehicleKey(data.missionId)
      marker = @scope.vehicleMarkers[vehicleKey]
      @updateMarkerPopup(marker, data.payload)
    )

  # Change our popup text as needed
  updateMarkerPopup: (marker, payload) =>
    if marker?
      # We merge the misc payload fields into one dictionary - showing the latest combination of all data
      angular.extend(marker.payload, payload)
      p = marker.payload
      marker.message = "<a href='#user/#{p.userName}'>#{p.userName}</a><br>
        <a href='#mission/#{p.id}'>#{p.summaryText}</a><br>
        #{Math.round(p.flightDuration / 60)} minutes<br>
        "

  motionTracking: (vehicleKey, latlng) =>
    v = @scope.vehiclePaths[vehicleKey] ? { color: '#f76944', weight: 7, latlngs: []}

    # Only keep the last 100 pts around
    v.latlngs = v.latlngs[..99]
    v.latlngs.push(latlng)
    @scope.vehiclePaths[vehicleKey] = v

