A method of utilizing at least one block of data, wherein the at least one
block of data includes a plurality of cells for storing data and at least
one error flag bit, the method including: scanning the block of data for
errors; determining the error rate of the block of data; and applying an
error correction code to data being read from or written to a cell within
the at least one block of data, wherein the error correction code is
applied based on the error rate, wherein a weak error correction code is
applied when the error rate is below an error threshold, and a strong
error correction code is applied when the error rate is at or above the
error threshold.