anchor.diff:           private_key
           }).
   
  --type ejson() :: tuple(). % TODO Improve
  +-type addressed_message() :: [binary()]. % TODO Improve; it might be worth turning this into a tuple for better specificity.
   
   %% ------------------------------------------------------------------
   %% API Function Definitions
  
positive.code:     %% 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.
      case pushy_messaging:receive_message_async(CommandSock, Frame) of
          [Address, Header, Body] ->
              lager:debug("Receiving message with address ~w", [Address]),
              lager:debug("Received message~n\tA ~p~n\tH ~s~n\tB ~s", [Address, Header, Body]),
  
              KeyFetch = fun(M, EJson) -> get_key_for_method(M, State, EJson) end,
              State1 = try ?TIME_IT(pushy_messaging, parse_message, (Address, Header, Body, KeyFetch)) of
                           {ok, #pushy_message{} = Msg} ->
                               process_message(State, Msg);
                           {error, #pushy_message{validated=bad_sig}} ->
                               lager:error("Command message failed verification: header=~s", [Header]),
                               State
                       catch
                           error:Error ->
                               Stack = erlang:get_stacktrace(),
                               lager:error("Command message parser failed horribly: header=~w~nstack~s", [Error, Stack]),
                               State;
                           Error ->
                               Stack = erlang:get_stacktrace(),
                               lager:error("Command message parser failed horribly: header=~w~nstack~s", [Error, Stack]),
                               State
                       end,
              State1;
          _Packets ->
              lager:debug("Received runt/overlength message with ~n packets~n", [length(_Packets)]),
              State
  
negative.code: start_link(PushyState) ->
      gen_server:start_link({local, ?SERVER}, ?MODULE, [PushyState], []).
  
  -spec send_raw([binary()]) -> ok.
  send_raw(Message) ->
      gen_server:call(?MODULE, {send_raw, Message}).
  
  %% ------------------------------------------------------------------
  %% gen_server Function Definitions
  