anchor.diff:          {
            branch_factor  = 2                 :: pos_integer(),   %number of childs per inner node
            bucket_size    = 24                :: pos_integer(),   %max items in a leaf
  -         leaf_hf        = fun crypto:sha/1  :: hash_fun(),      %hash function for leaf signature creation
  -         inner_hf       = get_XOR_fun()     :: inner_hash_fun() %hash function for inner node signature creation -          
  +         leaf_hf        = get_small_sha()   :: hash_fun(),      %hash function for leaf signature creation
  +         inner_hf       = get_XOR_fun()     :: inner_hash_fun(),%hash function for inner node signature creation -
  +         keep_bucket    = false             :: boolean()        %false=bucket will be empty after bulk_build; true=bucket will be filled          
            }).
   -type mt_config() :: #mt_config{}.
   -type mt_config_params() :: [{atom(), term()}] | [].    %only key value pairs of mt_config allowed
  
positive.code: -spec gen_hash_node(Node, Config) -> Node when
        is_subtype(Node,   mt_node()),
        is_subtype(Config, mt_config()).
  gen_hash_node({_, Count, Bucket, I, []}, Config) ->
      LeafHf = Config#mt_config.leaf_hf,
      Hash = case Count > 0 of
                 true -> LeafHf(erlang:term_to_binary(Bucket));
                 _ -> LeafHf(term_to_binary(0))
             end,
      {Hash, Count, Bucket, I, []};
  gen_hash_node({_, Count, [], I, List}, Config) ->    
      NewChilds = [gen_hash_node(X, Config) || X <- List],
      InnerHf = Config#mt_config.inner_hf,
  
negative.code: get_XOR_fun() ->
      (fun([H|T]) -> lists:foldl(fun(X, Acc) -> util:bin_xor(X, Acc) end, H, T) end).
  
  get_small_sha() ->
      (fun(B) ->
               Sha = crypto:sha(B),
               ByteSize = erlang:byte_size(Sha),
               binary_part(Sha, {ByteSize, -2})
       end).
  
  