anchor.diff:                         ?PEX_REScert -> pex_rescert
                      end,
       ?DEBUG("message: parser got valid message type ~p~n", [Message_Type]),
  -    {ok, Message_Type};
  -%% message types that are not acceptable eg peer is using more recent spec
  -validate_message_type(_Maybe_Message_Type) ->
  -    ?DEBUG("message: parser got invalid message type ~p~n", [_Maybe_Message_Type]),
  -    {error, ppspp_message_type_not_recognised}.
  +    Message_Type.
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %%-spec ... parse takes a msg_type, _data, and returns
   %%    {error, something} or {ok, {key, orddict}} for the unpacked message
   %%    [{Type, Parsed_Message}, Maybe_More_Messages]
  -%% TODO parse should probably be unpack/2 and then drop validate_message_type/1
  +%% TODO parse should probably be unpack/2 and then drop get_message_type/1
   parse(handshake, <<Channel:?PPSPP_CHANNEL_SIZE, Maybe_Options/binary>>) ->
       {ok, Options, Maybe_Messages} = ppspp_options:unpack(Maybe_Options),
       {ok, {handshake, orddict:store(channel, Channel, Options) }, Maybe_Messages};
  
positive.code: %% api
  -export([unpack/1,
           pack/1,
           validate_message_type/1,
           handle/1]).
  
  -opaque messages() :: list( message()).
  
negative.code: %% A failure anywhere in a message ultimately causes the entire datagram
  %% to be rejected.
  unpack(<<Maybe_Message_Type:?PPSPP_MESSAGE_SIZE, Rest/binary>>, Parsed_Messages) ->
      Type = get_message_type(Maybe_Message_Type),
      [{ok, Parsed_Message}, Maybe_More_Messages] = parse(Type, Rest),
      unpack(Maybe_More_Messages, [Parsed_Message | Parsed_Messages]).
  
  