A method comprising: receiving, at a gateway , channel state information from a plurality of user terminals via a satellite ; encoding by the gateway a plurality of blocks into a plurality of encoded blocks, each block for a corresponding user terminal , wherein the gateway encodes each block according to the value of the channel state information of its corresponding user terminal , 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 ; 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 , 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 ; and transmitting by the gateway to the plurality of user terminals via the satellite a slot comprising the plurality of modulated and encoded blocks ; 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 via a satellite ; encoding by the gateway a plurality of blocks into a plurality of encoded blocks, each block for a corresponding user terminal , wherein the gateway encodes each block according to the value of the channel state information of its corresponding user terminal , 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 ; 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 , 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 ; and transmitting by the gateway to the plurality of user terminals via the satellite a slot comprising the plurality of modulated and encoded blocks ; 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. <EOS>