   """
   @spec remove(String.t()) :: Map
   def remove(delivery_tag) do
-    messages = Agent.get(__MODULE__, fn messages -> messages end)
-    deleted_message = messages[delivery_tag]
-    messages = Map.delete(messages, delivery_tag)
-    
-    # workload = Enum.reduce Map.keys(messages), [], fn(delivery_tag, workload) ->
-    #   workload ++ [%{
-    #     description: "Request:  #{delivery_tag}"
-    #   }]
-    # end
-    #Heartbeat.set_workload(workload)
+    Logger.debug("#{@logprefix} Finished tracking message #{delivery_tag}...")
 
-    Agent.update(__MODULE__, fn _ -> messages end)
-    deleted_message
+    Agent.get_and_update(__MODULE__, fn messages ->
+      message = messages[delivery_tag]
+      {message, Map.delete(messages, delivery_tag)}
+    end)
   end
 end

defmodule OpenAperture.FleetManager.MessageManager do

  #alias OpenAperture.OverseerApi.Heartbeat

  @moduledoc """
  This module contains the logic for associating message references with their subscription handlers

  """
  @spec track(Map) :: term
  def track(%{subscription_handler: subscription_handler, delivery_tag: delivery_tag} = _async_info) do
    Logger.debug("#{@logprefix} Tracking message #{delivery_tag}...")
    new_message = %{
      process: self(),
      subscription_handler: subscription_handler, 
