       {^url, response} -> response
     end
   end
+
+  def pmap( collection, fun) do
+    me = self
+    collection
+    |> Enum.map(fn(elem) ->
+      spawn_link fn -> (send me, {self, fun.(elem)}) end
+    end)
+    |> Enum.map(fn (pid) ->
+      receive do {^pid, result} -> result end
+    end)
+  end
+
 end

  end

  defp redemptions(membership_id, character_id, socket) do
    redemptions = privileged_bungie("https://www.bungie.net/Platform/Destiny/2/Account/#{URI.encode(membership_id)}/Character/#{URI.encode(character_id)}/Advisors/", socket) |> Armsday.Destiny.reformat_redemptions
  end

  defp privileged_bungie(url, socket) do

      characters = Armsday.Destiny.character_ids(membership_id)
      IO.puts("#{username} is membership_id #{membership_id} and their characters are")
      IO.inspect(characters)
      data = pmap(characters, fn x -> 
       redemptions(membership_id, x, socket)
      end) |> List.flatten
    push socket, "redemptions", %{redemptions: data}
    end)
  socket = assign(socket, :replyto, child_pid)
  socket
  end

  defp psn_id(socket) do
