         _ -> EventCenter.sync_notify({:worker, :execute, {:error, url}})
       end
       EventCenter.sync_notify({:worker, :execute, {:log, url, out}})
-      send_exec_return(from, out, rc)
+      send_exec_return(from, out, rc, ref)
     end)
-    Logger.error "Implement: add the exec_pid to the list of tasks"
     new_state = %__MODULE__{state | processes: processes |> Map.put(exec_pid, url)}
-    {:reply, :ok, state}
-  end
-
-  defp send_exec_return({pid, ref} , out, rc) do
-    pid |> send({:execute, {out, rc}})
+    {:reply, {:ok, ref}, state}
+  end
+
+  defp send_exec_return({pid, _from_ref} , out, rc, ref) do
+    pid |> send({:executed, {out, rc, ref}})
   end
 
 

    GenServer.call(worker_pid, :capabilities)
  end

  def execute(pid, url, bmf) do
    GenServer.call(pid, {:execute, url, bmf})
  end

    {:reply, detect_capabilities(), state}
  end
  def handle_call({:execute, url, bmf}, from, state = %__MODULE__{processes: processes}) do
    ref = make_ref()
    EventCenter.sync_notify({:worker, :execute, {:start, url}})
    exec_pid = Task.start_link(fn ->
      {out, rc} = execute_bmf(url, bmf)
