anchor.diff:  handle_cast(_Msg, State) ->
       {noreply, State}.
   
  -handle_info({zmq, _CommandSock, Address, [rcvmore]},
  +handle_info({zmq, CommandSock, Frame, [rcvmore]},
               State) ->
       %% TODO: This needs a more graceful way of handling message sequences. I really feel like we need to
       %% abstract out some more generalized routines to handle the message receipt process.
       % error_logger:info_msg("Receiving message with address ~w~n", [Address]),
   
  -    Header = read_header(),
  -    Body = pushy_util:read_body(),
  +    [Address, Header, Body] = pushy_messaging:receive_message_async(CommandSock, Frame),
   
       % error_logger:info_msg("Received message~n\tA ~p~n\tH ~s~n\tB ~s~n", [Address, Header, Body]),
       State1 = case catch pushy_util:do_authenticate_message(Header, Body) of
  
positive.code: addr_node_map_lookup_by_node({_, NodeToAddr}, Node) ->
      dict:fetch(Node, NodeToAddr).
  
  send_multipart(Socket, Address, Message) ->
      erlzmq:send(Socket, Address, [sndmore]),
      %erlzmq:send(Socket, <<>>, [sndmore]),
      send_multipart(Socket, Message).
  
  send_multipart(_Socket, []) ->
      ok;
  send_multipart(Socket, [Msg | []]) ->
      erlzmq:send(Socket, Msg, []);
  send_multipart(Socket, [Head | Tail]) ->
      erlzmq:send(Socket, Head, [sndmore]),
      send_multipart(Socket, Tail).
  
negative.code: %% Utility functions; we should generalize these and move elsewhere.
  %%
  
  
  addr_node_map_new() ->
      { dict:new(), dict:new() }.
  