               |> List.delete(source)
               |> Enum.filter(&(Path.type(&1) == :relative))
 
-      :gen_server.cast(pid, {:store, beam, bin, source, deps, files, binary})
+      Agent.cast pid, &:lists.keystore(beam, 1, &1, {beam, bin, source, deps, files, binary})
     end
 
     defp get_beam_files(binary, cwd) do


          # Starts a server responsible for keeping track which files
          # were compiled and the dependencies in between them.
          {:ok, pid} = :gen_server.start_link(__MODULE__, entries, [])

          try do
            Kernel.ParallelCompiler.files :lists.usort(stale),
              each_module: &each_module(pid, compile_path, cwd, &1, &2, &3),
              each_file: &each_file(&1)
            :gen_server.cast(pid, {:write, manifest})
          after
            :gen_server.call(pid, :stop)
          end

          :ok

  # The ManifestCompiler is a convenience that tracks dependencies
  # in between files and recompiles them as they change recursively.
  defmodule ManifestCompiler do
    @moduledoc false

    def files_to_path(manifest, force, all, compile_path, on_start) do
