     Agent.update(@agent_name, &Map.put(&1, key, value))
   end
 
-  defp parse_new_blocks!(parse_until) do
-    [] |> parse_new_blocks!(retrieve(:block_cnt), parse_until)
+  defp parse_blocks!(low, high) do
+    hash = :rpc |> Gold.getblockhash!(high)
+    block = :rpc |> Gold.getblock!(hash)
+    [block] |> parse_blocks!(low, high)
   end
 
-  defp parse_new_blocks!(blocks, parsed_cnt, parse_until) do
-    hash = :rpc |> Gold.getblockhash!(parsed_cnt)
-    block = :rpc |> Gold.getblock!(hash)
+  defp parse_blocks!(blocks, low, high) do
+    [prev_block | _] = blocks
+    block = :rpc |> Gold.getblock!(prev_block.previousblockhash)
 
-    div = parsed_cnt/100
+    cnt = blocks |> Enum.count
+    div = cnt/100
     if (Float.ceil(div) == div) do
-      IO.puts parsed_cnt
+      IO.puts cnt
     end
 
-    if (parsed_cnt < parse_until) do
-      [block | blocks] |> parse_new_blocks!(parsed_cnt+1, parse_until)
+    block |> process_block
+
+    unless (block.height == low) do
+      [block | blocks] |> parse_blocks!(low, high)
     else
       [block | blocks]
     end
   end
 
+  defp process_block(block) do
+    task = @tasksup_name
+    |> Task.Supervisor.async(fn () ->
+      outputs = block.txns
+      |> Enum.map(&(&1 |> RPC.gettransaction!))
+      |> Enum.map(&(&1.outputs))
+      |> List.flatten
+      |> Enum.filter_map(
+        fn(o) -> o.value > 0 end,
+        fn(o) ->
+          parsed = o |> Script.parse_address
+          case parsed do
+            {:ok, addr} -> %{address: Address.base58check(addr), value: o.value}
+            other -> other
+          end
+        end)
+      %{height: block.height, outputs: outputs}
+    end)
+  end
+
 end

  alias BitcoinTool.Address
  alias Mercator.RPC

  defp reload_interval, do: 60*60*1000 # TODO from config

  @agent_name String.to_atom(Atom.to_string(__MODULE__) <> ".Agent")

  ## Client API


    {:noreply, new_state}
  end

  def handle_info(task_result, state) do
    task_result
    |> IO.inspect
    {:noreply, state}
  end

  ## Private

  defp retrieve(key) do
