anchor.diff:      process_message(State#state{node_addr=NewAddr}, Message);
   process_message(#state{node_ref=NodeRef, node_addr=Address} = State, #pushy_message{address=Address, body=Data}) ->
       JobId = ej:get({<<"job_id">>}, Data),
  -    Type = ej:get({<<"type">>}, Data),
  +    Type = message_type_to_atom(ej:get({<<"type">>}, Data)),
       lager:debug("Received message for Node ~p Type ~p (address ~p)",
                   [NodeRef, Type, pushy_tools:bin_to_hex(Address)]),
       send_node_event(State, JobId, NodeRef, Type).
   
   -spec send_node_event(#state{}, any(), any(), binary()) -> #state{}.
  -send_node_event(State, JobId, NodeRef, <<"heartbeat">>) ->
  +send_node_event(State, JobId, NodeRef, heartbeat) ->
       lager:debug("Received heartbeat for node ~p with job id ~p", [NodeRef, JobId]),
       case JobId /= null andalso pushy_job_state_sup:get_process(JobId) == not_found of
           true ->
  
positive.code:     interpret_node_event(JobId, NodeRef, Msg),
      State.
  
  interpret_node_event(JobId, NodeRef, <<"ack_commit">>) ->
      pushy_job_state:node_ack_commit(JobId, NodeRef);
  interpret_node_event(JobId, NodeRef, <<"nack_commit">>) ->
      pushy_job_state:node_nack_commit(JobId, NodeRef);
  interpret_node_event(JobId, NodeRef, <<"ack_run">>) ->
      pushy_job_state:node_ack_run(JobId, NodeRef);
  interpret_node_event(JobId, NodeRef, <<"nack_run">>) ->
      pushy_job_state:node_nack_run(JobId, NodeRef);
  interpret_node_event(JobId, NodeRef, <<"succeeded">>)->
      pushy_job_state:node_complete(JobId, NodeRef, succeeded);
  interpret_node_event(JobId, NodeRef, <<"failed">>)->
      pushy_job_state:node_complete(JobId, NodeRef, failed);
  interpret_node_event(JobId, NodeRef, <<"aborted">>) when JobId /= null ->
      pushy_job_state:node_aborted(JobId, NodeRef);
  interpret_node_event(JobId, NodeRef, undefined) ->
      lager:error("Status message for job ~p and node ~p was missing type field!~n", [JobId, NodeRef]);
  
negative.code:     end,
      self() ! heartbeat,
      State;
  send_node_event(State, JobId, NodeRef, aborted = Msg) ->
      gen_fsm:send_event(self(), aborted),
      interpret_node_event(JobId, NodeRef, Msg),
      State;
  