1. A system for decoding messages comprising: a receiver capable of receiving an encoded message; sorting module configured to organize candidate messages into a number of bins, sort the candidate messages within each bin, and output group of candidate messages, the group comprising a number of most likely candidate messages from each message bin; and a traceback module configured to receive the most likely candidate message, and walk through a tree of candidate messages to generate a decoded message; wherein the sorting module is configured to organize B candidate messages into α bins having β*2k candidate message each, and to choose the most likely β messages from each bin, where B=α*β, the total candidate messages per generation is B*2^k, and k is a length in bits of the candidate message or a portion thereof, where α, β, and B are non-negative integers and k is a non-negative integer.