anchor.diff:      IdList = lists:seq(0, N - 1),
       BlockWithIdList = lists:zip(BlockList, IdList),
   
  +    {K, M, _} = CodingParams,
  +    FullList = lists:seq(0, K + M - 1),
  +    ErasureCombs = comb(Erasure, FullList),
  +    ErasureCombSize = length(ErasureCombs), 
  +
       ?debugFmt('Prepared Blocks for ~p ~p [~p Bytes]', [Coding, CodingParams, BinSize]),
       {ok, #state {coding = Coding,
                    coding_params = CodingParams,
                    bin = Bin,
                    bin_size = BinSize,
                    block_id_list = BlockWithIdList,
  -                 erasure = Erasure}}.
  +                 erasure = Erasure,
  +                 erasure_comb = ErasureCombs,
  +                 erasure_comb_size = ErasureCombSize}}.
   
   run(encode, KeyGen, ValGen, #state{ coding = Coding, coding_params = CodingParams } = State) ->
       _Key = KeyGen(),
  
positive.code: 
  run(decode, KeyGen, _ValGen, #state{coding = Coding, coding_params = CodingParams, 
                                     bin_size = BinSize, block_id_list = BlockWithIdList,
                                     erasure = Erasure } = State) ->
      _Key = KeyGen(),
      {K, _, _} = CodingParams,
      Selected = lists:sublist(BlockWithIdList, Erasure + 1, Erasure + K),
  %    ShuffleList = [X||{_,X} <- lists:sort([ {random:uniform(), N} || N <- BlockWithIdList])],
  %    Selected = lists:sublist(ShuffleList, 1, K),
      case leo_jerasure:decode(Selected, BinSize, Coding, CodingParams) of
          {error, Cause} ->
              {error, Cause, State};
  
negative.code:           bin :: binary(),
            bin_size :: integer(),
            block_id_list :: [{binary(), integer()}],
            erasure :: integer(),
            erasure_comb :: [[integer()]],
            erasure_comb_size :: integer()
           }).
  
  filter_block(_BlockList, _Cnt, [], Acc) ->
  