         processes: processes,
         resources: resources,
         server_id: server_id,
-        timer: update_timer(processes, nil)
+        timer: update_timer(processes, nil),
+        broker: broker
       }
 
       # TODO: enqueue request to fetch the "minimum" of each process


  require Logger

  alias HELF.Broker
  alias HELM.Process.Repo
  alias Helix.Process.Model.Process, as: ProcessModel
  alias Helix.Process.Model.Process.Resources

  import HELL.MacroHelpers

  defstruct [:server_id, :processes, :resources, :timer]

  @type server_id :: String.t
  @type timer :: {DateTime.t, tref :: reference} | nil

    Enum.map(changeset_list, &Ecto.Changeset.apply_changes/1)
  end

  @spec request_server_resources(module, server_id) :: {:ok, Resources.t} | {:error, reason :: term}
  docp """
  Requests the amount of in-game hardware related to the `server_id` server
  """
  defp request_server_resources(broker, server_id) do
    with \
      params = %{server_id: server_id},
      {_, {:ok, return}} <- broker.call("server:hardware:resources:get", params)
    do
      Resources.from_server_resources(return)
    end
  end

  @spec request_server_processes(module, server_id) :: {:ok, [ProcessModel.t]} | {:error, reason :: term}
  docp """
  Requests the list of in-game processes running on this server

  Does so by querying the Server service, receiving the list of process id's
  that the server has and then fetching them from database
  """
  defp request_server_processes(broker, server_id) do
    with \
      params = %{server_id: server_id},
      {_, {:ok, process_list}} <- broker.call("server:processes:get", params)
    do
      processes =
        ProcessModel
