anchor.diff:                          3 -> sha384;
                           4 -> sha512
                       end,
  -    Options = orddict:store(merkle_hash_function, Hash_Function, Options0),
  -    unpack(Maybe_Options, Options);
  +    unpack(Maybe_Options, Options#{merkle_hash_function => Hash_Function});
   unpack( <<?PPSPP_LIVE_SIGNATURE_ALGORITHM,
             Maybe_Algorithm:?BYTE,
  -          Maybe_Options/binary >>, Options0) ->
  +          Maybe_Options/binary >>, Options) ->
       Algorithm = case Maybe_Algorithm of
                       %% TODO we can parse this yet but need normative algorithm names
                       0 -> live_signature_algorithm_not_yet_implemented
                   end,
  -    Options = orddict:store(merkle_hash_tree_algorithm, Algorithm, Options0),
  -    unpack(Maybe_Options, Options);
  +    unpack(Maybe_Options, Options#{merkle_hash_tree_algorithm => Algorithm});
   %% TODO this should probably move to ppspp_chunk.erl eventually
   unpack( <<?PPSPP_CHUNK_ADDRESSING_METHOD,
             Maybe_Method:?BYTE,
  -          Maybe_Options/binary >>, Options0) ->
  +          Maybe_Options/binary >>, Options) ->
       Method = case Maybe_Method of
                    0 -> chunk_32bit_bins;
                    1 -> chunk_64bit_bytes;
  
positive.code: %% | supported_messages
  %% | end_option
  %% | default_chunk_size
  %% | ppspp_chunk:addressing_method().
  -opaque option() :: supported_version
  | minimum_version
  | swarm_id
  | content_integrity_check_method
  | merkle_hash_tree_function
  | live_signature_algorithm
  | ppspp_chunk:addressing_method()
  | live_discard_window
  | supported_messages
  | end_option
  | default_chunk_size.
  
  %% Matches a subset of types from http://erlang.org/doc/man/crypto.html
  %%  digest_type() =  md5 | sha | sha224 | sha256 | sha384 | sha512, and
  
negative.code: %% agreed swarm options that are assigned to this particular swarm / channel.
  -spec use_minimum_options() -> options().
  use_minimum_options() ->
      #{minimum_version => ?PPSPP_RFC_VERSION}.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% <ul>
  %% @doc Pack a map of erlang terms into a binary PPSPP message segment
  -spec pack(options()) -> binary().
  
  pack(_) -> <<>>.
  