   ## Server Callbacks
 
   def init(:ok) do
-    # init the asset storage agent
-    Agent.start_link(fn ->
-      %{
-        block_cnt: (:rpc |> Gold.getblockcount!()) - 10
-       }
-    end, name: @agent_name)
     # init the Repo
     init(:retry, true)
   end
 
   defp init(:retry, log) do
     try do
-      {:ok, _} = :rpc |> Gold.getblockcount
+      # Check the connection
+      block_cnt = :rpc |> Gold.getblockcount!
       Logger.info("Explorer.Repo: RPC connection initialized (reload_interval: " <> Integer.to_string(reload_interval) <> ")")
+      # Init the asset storage agent (TODO: persistent storage)
+      Agent.start_link(fn ->
+        %{
+          low_cnt: block_cnt - 100,
+          high_cnt: block_cnt - 100
+         }
+      end, name: @agent_name)
+      # Init the task supervisor
+      Task.Supervisor.start_link(name: @tasksup_name)
+      # Initial blockchain parse (TODO: persistent storage)
       parse_new_blocks(1)
       {:ok, %{connected: true}}
     rescue

  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
