A half-duplex relay node, comprising: a processor and memory collectively encoding instructions that when executed by the processor, cause the half-duplex relay node to receive and transmit source messages in alternating receive and transmit time slots, respectively, wherein: during each receive time slot, the half-duplex relay node receives a source message output by a source node in an odd time slot, in coordination with a companion half-duplex relay node transmitting a source message output by the source node in an adjacent even time slot; and during each transmit time slot, the half-duplex relay node transmits a source message output by the source node in an odd time slot, in coordination with the companion half-duplex relay node receiving a source message output by the source node in an adjacent even time slot, the half-duplex relay node characterized in that: the instructions further cause the half-duplex relay node to determine, in dependence on a channel quality between the half-duplex relay node and the companion half-duplex relay node, whether to perform rate splitting to generate a plurality of codewords to represent a received source message, to allow the companion half-duplex relay node to perform partial interference cancellation by decoding one of the plurality of codewords, wherein rate splitting is to be performed if the channel quality is good, and wherein if rate splitting is to be performed, two or more codewords are generated, otherwise only one codeword is generated. a processor and memory collectively encoding instructions that when executed by the processor, cause the half-duplex relay node to receive and transmit source messages in alternating receive and transmit time slots, respectively, wherein: during each receive time slot, the half-duplex relay node receives a source message output by a source node in an odd time slot, in coordination with a companion half-duplex relay node transmitting a source message output by the source node in an adjacent even time slot; and during each transmit time slot, the half-duplex relay node transmits a source message output by the source node in an odd time slot, in coordination with the companion half-duplex relay node receiving a source message output by the source node in an adjacent even time slot, during each receive time slot, the half-duplex relay node receives a source message output by a source node in an odd time slot, in coordination with a companion half-duplex relay node transmitting a source message output by the source node in an adjacent even time slot; and during each transmit time slot, the half-duplex relay node transmits a source message output by the source node in an odd time slot, in coordination with the companion half-duplex relay node receiving a source message output by the source node in an adjacent even time slot, the half-duplex relay node characterized in that: the instructions further cause the half-duplex relay node to determine, in dependence on a channel quality between the half-duplex relay node and the companion half-duplex relay node, whether to perform rate splitting to generate a plurality of codewords to represent a received source message, to allow the companion half-duplex relay node to perform partial interference cancellation by decoding one of the plurality of codewords, wherein rate splitting is to be performed if the channel quality is good, and wherein if rate splitting is to be performed, two or more codewords are generated, otherwise only one codeword is generated. the instructions further cause the half-duplex relay node to determine, in dependence on a channel quality between the half-duplex relay node and the companion half-duplex relay node, whether to perform rate splitting to generate a plurality of codewords to represent a received source message, to allow the companion half-duplex relay node to perform partial interference cancellation by decoding one of the plurality of codewords, wherein rate splitting is to be performed if the channel quality is good, and wherein if rate splitting is to be performed, two or more codewords are generated, otherwise only one codeword is generated.