       characters = Armsday.Destiny.character_ids(membership_id)
       IO.puts("#{username} is membership_id #{membership_id} and their characters are")
       IO.inspect(characters)
-      data = Enum.map(characters, fn x -> redemptions(membership_id, x, socket) end) |> List.flatten
-      push socket, "redemptions", %{redemptions: data}
+      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
+  socket = assign(socket, :replyto, child_pid)
+  socket
   end
 
   defp psn_id(socket) do

  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

      {^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
