       case (Repo.insert(changeset) |> insert_annotations(changeset)) do
         {:error, changeset} ->
           Repo.rollback(changeset)
-        {:ok, fact} ->
+        {:ok, fact, annotations} ->
           fact
       end
     end)

  def create(conn, fact_params) do
    changeset = Fact.changeset(%Fact{}, fact_params)

    case Repo.insert(changeset) do
      {:ok, fact} ->
        fact = fact
        |> Repo.preload(:question)
        |> Repo.preload(:annotations)

        conn
        |> put_status(:created)

  def show(conn, _) do
    fact = conn.assigns[:fact]
    |> Repo.preload(:question)
    |> Repo.preload(:fact_annotations)

    render(conn, "show.json", fact: fact)
  end

  def update(conn, fact_params) do
    fact = conn.assigns[:fact]
    |> Repo.preload(:fact_annotations)

    changeset = Fact.changeset(fact, fact_params)

    case update_fact_and_annotations(changeset) do
      {:ok, fact} ->
        fact = fact
        |> Repo.preload(:question)
        |> Repo.preload(:fact_annotations)

        render(conn, "show.json", fact: fact)
      {:error, changeset} ->
