   @doc """
   Starts a process to hold the state of a _Table Of Processes_
   """
-  def start_link(server_id),
-    do: GenServer.start_link(__MODULE__, server_id)
+  def start_link(server_id, params \\ []),
+    do: GenServer.start_link(__MODULE__, {server_id, params})
 
   @spec priority(pid, ProcessModel.id, 0..5) :: no_return
   @doc """

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

  @spec request_server_resources(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(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(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(server_id) do
    with \
      params = %{server_id: server_id},
      {_, {:ok, process_list}} <- Broker.call("server:processes:get", params)
    do
      processes =
        ProcessModel

      |> calculate_work()
      |> Enum.split_with(&ProcessModel.complete?/1)

    Enum.each(complete, &notify(state.broker, &1, :complete))

    processes =
      complete
