A code generating apparatus comprising: a turbo encoder (101; 201; 301) having a plurality of constituent encoders, said encoder is adapted to generate a plurality of parity symbol sequences (213, 223, 233, 243; 313, 323, 333, 343) accordirtg to a given encoder code rate by encoding an information symbol sequence (203; 303), each of said constituent encoders is adapted to generate at least one of the plurality of parity symbol sequences, whereby at least one parity symbol sequence (213; 313) from one constituent encoder corresponds to at least one parity symbol sequence (223; 323) from another constituent encoder; a channel interleaver adapted to individually interleave the information symbol sequence (203; 303) and the plurality of parity symbol sequences (213, 223, 233, 243; 313, 323, 333, 343) generated from the information symbol sequence (203; 303), wherein at least one of the plurality of parity symbol sequences (213; 313) corresponds to at least one other of the plurality of parity symbol sequences (223; 323); a concatenator (207, 307) adapted to serially concatenate the interleaved information symbol sequence and the symbols of the interleaved parity symbol sequences, whereby the symbols of the interleaved parity symbol sequences for each group of corresponding parity symbol sequences (213, 223; 313, 323) are serially concatenated as consecutive symbols that are alternatingly arranged so that a number of parity symbols from each corresponding parity symbol sequence (213, 223; 313, 323) is equal or differs by at most one symbol in any sub-sequence of consecutive symbols of the serially concatenated symbol sequence comprising at least one of the parity symbols; and a sub-code generator adapted to generate a sub-code with a given sub-code code rate by puncturing the serially concatenated symbol sequence according to said given sub-code code rate; said puncturing comprises selecting a number of consecutive symbols from the serially concatenated symbol sequence, wherein said number of selected consecutive symbols corresponds to said given sub-code code rate. a turbo encoder (101; 201; 301) having a plurality of constituent encoders, said encoder is adapted to generate a plurality of parity symbol sequences (213, 223, 233, 243; 313, 323, 333, 343) accordirtg to a given encoder code rate by encoding an information symbol sequence (203; 303), each of said constituent encoders is adapted to generate at least one of the plurality of parity symbol sequences, whereby at least one parity symbol sequence (213; 313) from one constituent encoder corresponds to at least one parity symbol sequence (223; 323) from another constituent encoder; a channel interleaver adapted to individually interleave the information symbol sequence (203; 303) and the plurality of parity symbol sequences (213, 223, 233, 243; 313, 323, 333, 343) generated from the information symbol sequence (203; 303), wherein at least one of the plurality of parity symbol sequences (213; 313) corresponds to at least one other of the plurality of parity symbol sequences (223; 323); a concatenator (207, 307) adapted to serially concatenate the interleaved information symbol sequence and the symbols of the interleaved parity symbol sequences, whereby the symbols of the interleaved parity symbol sequences for each group of corresponding parity symbol sequences (213, 223; 313, 323) are serially concatenated as consecutive symbols that are alternatingly arranged so that a number of parity symbols from each corresponding parity symbol sequence (213, 223; 313, 323) is equal or differs by at most one symbol in any sub-sequence of consecutive symbols of the serially concatenated symbol sequence comprising at least one of the parity symbols; and a sub-code generator adapted to generate a sub-code with a given sub-code code rate by puncturing the serially concatenated symbol sequence according to said given sub-code code rate; said puncturing comprises selecting a number of consecutive symbols from the serially concatenated symbol sequence, wherein said number of selected consecutive symbols corresponds to said given sub-code code rate.