A decoder for decoding output symbols received over an erasure communications channel wherein the output symbols represent multi-stage encoded data sent by one or more transmitters, the decoder comprising: a receiver input for receiving output symbols, wherein a dynamic key generator has generated a dynamic key for each output symbol to be generated by a dynamic encoder, wherein the number of distinct dynamic keys that can be generated with the dynamic key generator is only limited by the key resolution, wherein the dynamic encoder has received each dynamic key, and wherein the dynamic encoder has generated each output symbol based on the corresponding dynamic key from at least one symbol in a combined set of input symbols and redundant symbols, each output symbol having a weight representing the number of symbols from the combined set used to generate that output symbol, wherein the weights of the output symbols in the plurality of output symbols are distributed in a way to minimize the number of operations needed to regenerate the ordered set of input symbols, wherein at least one output symbol is generated from more than one symbol in the combined set and less than all of the symbols in the combined set, wherein the input symbols are from an ordered set of input symbols, wherein the redundant symbols are generated from the input symbols; memory for storing received output symbols received at the receiver input; a dynamic key regenerator that generates corresponding dynamic keys for the received output symbols; dynamic decoder logic that decodes, upon receiving N output symbols, wherein N is an integer, a subset of the symbols in the combined set from the N output symbols, the subset including a plurality of decoded input symbols and a plurality of decoded redundant symbols, the dynamic decoder being dynamic in that it can decode symbols generated by the dynamic encoder encoding the data sent by the one or more transmitters; and static decoder logic that decodes at least some undecoded input symbols, if any, from the plurality of decoded redundant symbols, wherein the static decoder can decode data that was encoded by static encoding, wherein static encoding is an encoding wherein the number of the redundant symbols is determined prior to encoding, and wherein the redundant symbols add redundant information in such a way that recovery of the ordered set of input symbols is possible in face of erasures. a receiver input for receiving output symbols, wherein a dynamic key generator has generated a dynamic key for each output symbol to be generated by a dynamic encoder, wherein the number of distinct dynamic keys that can be generated with the dynamic key generator is only limited by the key resolution, wherein the dynamic encoder has received each dynamic key, and wherein the dynamic encoder has generated each output symbol based on the corresponding dynamic key from at least one symbol in a combined set of input symbols and redundant symbols, each output symbol having a weight representing the number of symbols from the combined set used to generate that output symbol, wherein the weights of the output symbols in the plurality of output symbols are distributed in a way to minimize the number of operations needed to regenerate the ordered set of input symbols, wherein at least one output symbol is generated from more than one symbol in the combined set and less than all of the symbols in the combined set, wherein the input symbols are from an ordered set of input symbols, wherein the redundant symbols are generated from the input symbols; memory for storing received output symbols received at the receiver input; a dynamic key regenerator that generates corresponding dynamic keys for the received output symbols; dynamic decoder logic that decodes, upon receiving N output symbols, wherein N is an integer, a subset of the symbols in the combined set from the N output symbols, the subset including a plurality of decoded input symbols and a plurality of decoded redundant symbols, the dynamic decoder being dynamic in that it can decode symbols generated by the dynamic encoder encoding the data sent by the one or more transmitters; and static decoder logic that decodes at least some undecoded input symbols, if any, from the plurality of decoded redundant symbols, wherein the static decoder can decode data that was encoded by static encoding, wherein static encoding is an encoding wherein the number of the redundant symbols is determined prior to encoding, and wherein the redundant symbols add redundant information in such a way that recovery of the ordered set of input symbols is possible in face of erasures.