     {:reply, response, state}
   end
 
-  def handle_call({:setup, server_id, hardware, request}, _from, state) do
+  def handle_call({:setup, server_id, bundle, request}, _from, state) do
     result =
       Repo.transaction(fn ->
         with \
-          {:ok, motherboard, ev0} <- create_motherboard(hardware.motherboard),
-          {:ok, components, ev1} <- create_components(hardware.components),
-          {:ok, ev2} <- setup_motherboard(motherboard, components)
+          {:ok, motherboard, ev0} <- create_motherboard(bundle.motherboard),
+          {:ok, components, ev1} <- create_components(bundle.components),
+          {:ok, motherboard, ev2} <- setup_motherboard(motherboard, components)
         do
           {motherboard, ev0 ++ ev1 ++ ev2}
         else

  end

  @spec create_components([{String.t, String.t}]) ::
    {:ok, [Component.t], events :: [{String.t, map}]}
    | {:error, Ecto.Changeset.t}
  defp create_components(components) do
    components
    |> create_components({[], []})
    |> case do
      {:ok, components, events} ->
        {:ok, components, events}
      {:error, error} ->
        {:error, error}
    end

      ]
    }

    GenServer.call(pid, {:setup, server_id, bundle, request})
  end

  @spec init(any) :: {:ok, state}
