A rate matching method of producing a set of coded bits from a set of information bits for transmission between a first node (110, 115) and a second node (110, 115) in a wireless communications system, the method comprising: generating a codeword vector by encoding the set of information bits with a quasi-cyclic low-density parity-check code, QC-LDPC, wherein the codeword vector is composed of systematic bits and parity bits; and performing circular buffer-based rate matching on the generated codeword vector to produce the coded bits for transmission, wherein generating a codeword vector by encoding the set of information bits with a QC-LDPC comprises: attaching dummy bits to the set of information bits to make an information vector U; and encoding information vector U with the parity check matrix H of the QC-LDPC to generate the codeword vector, wherein the QC-LDPC code is designed with the knowledge that a first plurality of systematic bits will be punctured, and wherein performing circular buffer-based rate matching on the generated codeword vector to produce the coded bits for transmission comprises: puncturing the first plurality of systematic bits by not writing the punctured first plurality of systematic bits into the circular buffer, removing the dummy bits, and producing a vector for transmission, wherein columns in the parity check matrix H that are mapped to the first plurality of systematic bits have a higher column weight than columns in the parity check matrix H that are mapped to non-punctured bits. generating a codeword vector by encoding the set of information bits with a quasi-cyclic low-density parity-check code, QC-LDPC, wherein the codeword vector is composed of systematic bits and parity bits; and performing circular buffer-based rate matching on the generated codeword vector to produce the coded bits for transmission, wherein generating a codeword vector by encoding the set of information bits with a QC-LDPC comprises: attaching dummy bits to the set of information bits to make an information vector U; and encoding information vector U with the parity check matrix H of the QC-LDPC to generate the codeword vector, wherein the QC-LDPC code is designed with the knowledge that a first plurality of systematic bits will be punctured, and wherein performing circular buffer-based rate matching on the generated codeword vector to produce the coded bits for transmission comprises: puncturing the first plurality of systematic bits by not writing the punctured first plurality of systematic bits into the circular buffer, removing the dummy bits, and producing a vector for transmission, wherein columns in the parity check matrix H that are mapped to the first plurality of systematic bits have a higher column weight than columns in the parity check matrix H that are mapped to non-punctured bits. attaching dummy bits to the set of information bits to make an information vector U; and encoding information vector U with the parity check matrix H of the QC-LDPC to generate the codeword vector, wherein the QC-LDPC code is designed with the knowledge that a first plurality of systematic bits will be punctured, and wherein performing circular buffer-based rate matching on the generated codeword vector to produce the coded bits for transmission comprises: puncturing the first plurality of systematic bits by not writing the punctured first plurality of systematic bits into the circular buffer, removing the dummy bits, and producing a vector for transmission, wherein columns in the parity check matrix H that are mapped to the first plurality of systematic bits have a higher column weight than columns in the parity check matrix H that are mapped to non-punctured bits. puncturing the first plurality of systematic bits by not writing the punctured first plurality of systematic bits into the circular buffer, removing the dummy bits, and producing a vector for transmission, wherein columns in the parity check matrix H that are mapped to the first plurality of systematic bits have a higher column weight than columns in the parity check matrix H that are mapped to non-punctured bits.