An encoder for encoding input data (D1) to generate corresponding encoded data (E2), wherein the encoder is configured to: (a) analyse the input data (D1) to identify at least one mode symbol therein; (b) generate data values of at least a first type and a second type from the input data (D1), wherein the generated data values of the first type include distinct non-mode symbols as occurring in the input data (D1), and the generated data values of the second type include runs of the at least one mode symbol, wherein the at least one mode symbol is a symbol that occurs most often in the input data (D1) and the distinct non-mode symbols are symbols other than the at least one mode symbol, wherein the runs of the at least one mode symbol are indicative of frequency of occurrences of the at least one mode symbol before or after the distinct non-mode symbols within the input data (D1); and (c) generate information that is indicative of a count of the distinct non-mode symbols in the input data (D1) and information that is indicative of the at least one mode symbol; (d) assemble the information that is indicative of the at least one mode symbol, the information that is indicative of the count of the distinct non-mode symbols, the data values of the first type including the non-mode symbols and the data values of the second type including the runs of the at least one mode symbol, to generate the encoded data (E2); and (e) to recursively process a given data stream including the distinct non-mode symbols pursuant to (a) to (d), wherein at least one of the data values in the given stream including non-mode symbols distinctly stands out as a mode symbol. (a) analyse the input data (D1) to identify at least one mode symbol therein; (b) generate data values of at least a first type and a second type from the input data (D1), wherein the generated data values of the first type include distinct non-mode symbols as occurring in the input data (D1), and the generated data values of the second type include runs of the at least one mode symbol, wherein the at least one mode symbol is a symbol that occurs most often in the input data (D1) and the distinct non-mode symbols are symbols other than the at least one mode symbol, wherein the runs of the at least one mode symbol are indicative of frequency of occurrences of the at least one mode symbol before or after the distinct non-mode symbols within the input data (D1); and (c) generate information that is indicative of a count of the distinct non-mode symbols in the input data (D1) and information that is indicative of the at least one mode symbol; (d) assemble the information that is indicative of the at least one mode symbol, the information that is indicative of the count of the distinct non-mode symbols, the data values of the first type including the non-mode symbols and the data values of the second type including the runs of the at least one mode symbol, to generate the encoded data (E2); and (e) to recursively process a given data stream including the distinct non-mode symbols pursuant to (a) to (d), wherein at least one of the data values in the given stream including non-mode symbols distinctly stands out as a mode symbol. <EOS>