A method for parsing data in a data unit into a number of spatial streams, the method comprising: selecting a modulation and coding scheme, MCS, from a plurality of MCSs; encoding information bits to generate coded bits using one or more encoders, wherein the number of encoders used depends on the selected MCS, and wherein each of the one or more encoders generates a number of consecutive blocks of s bits, wherein s is an integer, the value of which depends on a constellation size corresponding to the selected MCS; determining whether the coded bits satisfy a parsing constraint; and parsing the coded bits into a number of spatial streams according to a first set of parsing rules if the coded bits satisfy a parsing constraint, wherein the parsing constraint requires that the number of coded bits output by each of the one or more encoders is an integer multiple of the number of spatial streams times s; characterized by parsing the coded bits into the number of spatial streams according to a second set of parsing rules if the coded bits do not satisfy the parsing constraint, wherein parsing the coded bits according to the second set of parsing rules comprises: (i) assigning consecutive blocks of s bits output from each of the one or more encoders in a round robin fashion to the spatial streams, including assigning each of N SS consecutive blocks of s bits from a respective encoder to each of the spatial streams in a cycle, cycling through each of the one or more encoders until M x s residue bits remain at the output of each of the one or more encoders, wherein N SS is the number of spatial streams and M is an integer less than the number of spatial streams; (ii) assigning the M x s residue bits from a first encoder to a first set of M spatial streams, wherein a consecutive block of s bits from the first encoder is assigned to each spatial stream in the first set of M spatial streams; (iii) assigning the M x s residue bits from a next encoder to a next set of M spatial streams, wherein a consecutive block of s bits from the next encoder is assigned to each spatial stream in the next set of M spatial streams; and repeating act iii for subsequent encoders and subsequent spatial streams until all bits from all operating encoders have been distributed among the number of spatial streams. selecting a modulation and coding scheme, MCS, from a plurality of MCSs; encoding information bits to generate coded bits using one or more encoders, wherein the number of encoders used depends on the selected MCS, and wherein each of the one or more encoders generates a number of consecutive blocks of s bits, wherein s is an integer, the value of which depends on a constellation size corresponding to the selected MCS; determining whether the coded bits satisfy a parsing constraint; and parsing the coded bits into a number of spatial streams according to a first set of parsing rules if the coded bits satisfy a parsing constraint, wherein the parsing constraint requires that the number of coded bits output by each of the one or more encoders is an integer multiple of the number of spatial streams times s; characterized by parsing the coded bits into the number of spatial streams according to a second set of parsing rules if the coded bits do not satisfy the parsing constraint, wherein parsing the coded bits according to the second set of parsing rules comprises: (i) assigning consecutive blocks of s bits output from each of the one or more encoders in a round robin fashion to the spatial streams, including assigning each of N SS consecutive blocks of s bits from a respective encoder to each of the spatial streams in a cycle, cycling through each of the one or more encoders until M x s residue bits remain at the output of each of the one or more encoders, wherein N SS is the number of spatial streams and M is an integer less than the number of spatial streams; (ii) assigning the M x s residue bits from a first encoder to a first set of M spatial streams, wherein a consecutive block of s bits from the first encoder is assigned to each spatial stream in the first set of M spatial streams; (iii) assigning the M x s residue bits from a next encoder to a next set of M spatial streams, wherein a consecutive block of s bits from the next encoder is assigned to each spatial stream in the next set of M spatial streams; and (i) assigning consecutive blocks of s bits output from each of the one or more encoders in a round robin fashion to the spatial streams, including assigning each of N SS consecutive blocks of s bits from a respective encoder to each of the spatial streams in a cycle, cycling through each of the one or more encoders until M x s residue bits remain at the output of each of the one or more encoders, wherein N SS is the number of spatial streams and M is an integer less than the number of spatial streams; (ii) assigning the M x s residue bits from a first encoder to a first set of M spatial streams, wherein a consecutive block of s bits from the first encoder is assigned to each spatial stream in the first set of M spatial streams; (iii) assigning the M x s residue bits from a next encoder to a next set of M spatial streams, wherein a consecutive block of s bits from the next encoder is assigned to each spatial stream in the next set of M spatial streams; and repeating act iii for subsequent encoders and subsequent spatial streams until all bits from all operating encoders have been distributed among the number of spatial streams.