A method for performing successive cancellation list, SCL, decoding on received encoded data, comprising: receiving the encoded data from a channel; decoding the encoded data to obtain decoded data, wherein said decoding comprises: performing decoding operations and generating bit statistics on a plurality of bit paths, wherein each bit path is a potential decode of a portion of the encoded data; creating a plurality of first new bit paths, wherein each of the plurality of first new bit paths comprises one of the plurality of bit paths with an added likely bit; creating a plurality of second new bit paths, wherein each of the plurality of second new bit paths comprises one of the plurality of bit paths with an added unlikely bit value; sorting a list of the plurality of first new bit paths and the plurality of second new bit paths based on the bit statistics, wherein said sorting comprises: sorting a list of the plurality of first new bit paths in ascending order to obtain a first sorted list; sorting a list of the plurality of second new bit paths in descending order to obtain a second sorted list; comparing at least a portion of bit paths of the first sorted list and at least a portion of bit paths of the second sorted list; and replacing one or more bit paths in the first sorted list with one or more bit paths from the second sorted list to obtain a third sorted list of bit paths in response to the comparing; wherein the bit paths from the third sorted list of bit paths constitute potential decoded data of a portion of the encoded data. receiving the encoded data from a channel; decoding the encoded data to obtain decoded data, wherein said decoding comprises: performing decoding operations and generating bit statistics on a plurality of bit paths, wherein each bit path is a potential decode of a portion of the encoded data; creating a plurality of first new bit paths, wherein each of the plurality of first new bit paths comprises one of the plurality of bit paths with an added likely bit; creating a plurality of second new bit paths, wherein each of the plurality of second new bit paths comprises one of the plurality of bit paths with an added unlikely bit value; sorting a list of the plurality of first new bit paths and the plurality of second new bit paths based on the bit statistics, wherein said sorting comprises: sorting a list of the plurality of first new bit paths in ascending order to obtain a first sorted list; sorting a list of the plurality of second new bit paths in descending order to obtain a second sorted list; comparing at least a portion of bit paths of the first sorted list and at least a portion of bit paths of the second sorted list; and replacing one or more bit paths in the first sorted list with one or more bit paths from the second sorted list to obtain a third sorted list of bit paths in response to the comparing; wherein the bit paths from the third sorted list of bit paths constitute potential decoded data of a portion of the encoded data. performing decoding operations and generating bit statistics on a plurality of bit paths, wherein each bit path is a potential decode of a portion of the encoded data; creating a plurality of first new bit paths, wherein each of the plurality of first new bit paths comprises one of the plurality of bit paths with an added likely bit; creating a plurality of second new bit paths, wherein each of the plurality of second new bit paths comprises one of the plurality of bit paths with an added unlikely bit value; sorting a list of the plurality of first new bit paths and the plurality of second new bit paths based on the bit statistics, wherein said sorting comprises: sorting a list of the plurality of first new bit paths in ascending order to obtain a first sorted list; sorting a list of the plurality of second new bit paths in descending order to obtain a second sorted list; comparing at least a portion of bit paths of the first sorted list and at least a portion of bit paths of the second sorted list; and replacing one or more bit paths in the first sorted list with one or more bit paths from the second sorted list to obtain a third sorted list of bit paths in response to the comparing; wherein the bit paths from the third sorted list of bit paths constitute potential decoded data of a portion of the encoded data. sorting a list of the plurality of first new bit paths in ascending order to obtain a first sorted list; sorting a list of the plurality of second new bit paths in descending order to obtain a second sorted list; comparing at least a portion of bit paths of the first sorted list and at least a portion of bit paths of the second sorted list; and replacing one or more bit paths in the first sorted list with one or more bit paths from the second sorted list to obtain a third sorted list of bit paths in response to the comparing; wherein the bit paths from the third sorted list of bit paths constitute potential decoded data of a portion of the encoded data.