A method comprising: receiving, at a gateway, channel state information from a plurality of user terminals (400, 401) via a satellite; encoding by the gateway a plurality of blocks into a plurality of encoded blocks, each block for a corresponding user terminal (400, 401), wherein the gateway encodes each block according to the value of the channel state information of its corresponding user terminal (400, 401), wherein the encoding by the gateway comprises a first encoding of a block into a first encoded block according to the value of the channel state information of its corresponding user terminal (400, 401); modulating by the gateway the plurality of encoded blocks into a plurality of modulated and encoded blocks, wherein the gateway modulates each encoded block according to the value of the channel state information of its corresponding user terminal (400, 401), wherein the modulating by the gateway comprises a first modulating of the first encoded block into a first modulated and encoded block according to the value of the channel state information of its corresponding user terminal (400, 401); and transmitting by the gateway to the plurality of user terminals (400, 401) via the satellite a slot (704, 706, 708) comprising the plurality of modulated and encoded blocks (718, 720, 722); the method characterized by: if a negative acknowledgement for the first modulated and encoded block is received; a second encoding by the gateway of the block into a second encoded block; a second modulating by the gateway of the second encoded block into a second modulated and encoded block; and transmitting by the gateway a second slot comprising the second modulated and encoded block. receiving, at a gateway, channel state information from a plurality of user terminals (400, 401) via a satellite; encoding by the gateway a plurality of blocks into a plurality of encoded blocks, each block for a corresponding user terminal (400, 401), wherein the gateway encodes each block according to the value of the channel state information of its corresponding user terminal (400, 401), wherein the encoding by the gateway comprises a first encoding of a block into a first encoded block according to the value of the channel state information of its corresponding user terminal (400, 401); modulating by the gateway the plurality of encoded blocks into a plurality of modulated and encoded blocks, wherein the gateway modulates each encoded block according to the value of the channel state information of its corresponding user terminal (400, 401), wherein the modulating by the gateway comprises a first modulating of the first encoded block into a first modulated and encoded block according to the value of the channel state information of its corresponding user terminal (400, 401); and transmitting by the gateway to the plurality of user terminals (400, 401) via the satellite a slot (704, 706, 708) comprising the plurality of modulated and encoded blocks (718, 720, 722); the method characterized by: if a negative acknowledgement for the first modulated and encoded block is received; a second encoding by the gateway of the block into a second encoded block; a second modulating by the gateway of the second encoded block into a second modulated and encoded block; and transmitting by the gateway a second slot comprising the second modulated and encoded block. a second encoding by the gateway of the block into a second encoded block; a second modulating by the gateway of the second encoded block into a second modulated and encoded block; and transmitting by the gateway a second slot comprising the second modulated and encoded block.