A method of transferring data between a host system and a reprogrammable non-volatile mass storage system, the mass storage system having a plurality of banks (107A - 107D) of memory cells wherein each of the plurality of banks (107A - 107D) is arranged in blocks (452, 454; 510, 512, 514, 516) of memory cells that are erasable together, the method comprising: receiving data associated with host logical block address, hereinafter referred to as LBA, addresses assigned by the host system; CHARACTERISED BY: allocating a megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses for addressing the data associated with the host LBA addresses, the megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses comprising at least one metablock of memory cells in each of the plurality of banks (107A-107D) of memory cells and addressing only unwritten capacity upon allocation; re-mapping each of the host LBA addresses for the received data to the megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses, wherein each storage LBA address is sequentially assigned in a contiguous manner to the received data in an order the received data is received regardless of the host LBA address; and flushing a block (452, 454; 510, 512, 514, 516) in a first of the plurality of banks (107A - 107D) independently of flushing a block (452, 454; 510, 512, 514, 516) in a second of the plurality of banks (107A - 107D), wherein flushing the block (452, 454; 510, 512, 514, 516) in the first bank (107A - 107D) comprises reassigning host LBA addresses for valid data from storage LBA addresses of the block (452, 454; 510, 512, 514, 516) in the first bank (107A - 107D) to contiguous storage LBA addresses in a first relocation block (452, 454; 510, 512, 514, 516), and wherein flushing the block (452, 454; 510, 512, 514, 516) in the second bank (107A-107D) comprises reassigning host LBA addresses for valid data from storage LBA addresses of the block (452, 454; 510, 512, 514, 516) in the second bank (107A-107D) to contiguous storage LBA addresses in a second relocation block (452, 454; 510, 512, 514, 516). receiving data associated with host logical block address, hereinafter referred to as LBA, addresses assigned by the host system; CHARACTERISED BY: allocating a megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses for addressing the data associated with the host LBA addresses, the megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses comprising at least one metablock of memory cells in each of the plurality of banks (107A-107D) of memory cells and addressing only unwritten capacity upon allocation; re-mapping each of the host LBA addresses for the received data to the megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses, wherein each storage LBA address is sequentially assigned in a contiguous manner to the received data in an order the received data is received regardless of the host LBA address; and flushing a block (452, 454; 510, 512, 514, 516) in a first of the plurality of banks (107A - 107D) independently of flushing a block (452, 454; 510, 512, 514, 516) in a second of the plurality of banks (107A - 107D), wherein flushing the block (452, 454; 510, 512, 514, 516) in the first bank (107A - 107D) comprises reassigning host LBA addresses for valid data from storage LBA addresses of the block (452, 454; 510, 512, 514, 516) in the first bank (107A - 107D) to contiguous storage LBA addresses in a first relocation block (452, 454; 510, 512, 514, 516), and wherein flushing the block (452, 454; 510, 512, 514, 516) in the second bank (107A-107D) comprises reassigning host LBA addresses for valid data from storage LBA addresses of the block (452, 454; 510, 512, 514, 516) in the second bank (107A-107D) to contiguous storage LBA addresses in a second relocation block (452, 454; 510, 512, 514, 516). allocating a megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses for addressing the data associated with the host LBA addresses, the megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses comprising at least one metablock of memory cells in each of the plurality of banks (107A-107D) of memory cells and addressing only unwritten capacity upon allocation; re-mapping each of the host LBA addresses for the received data to the megablock (704, 1600, 3102, 3306) of contiguous storage LBA addresses, wherein each storage LBA address is sequentially assigned in a contiguous manner to the received data in an order the received data is received regardless of the host LBA address; and flushing a block (452, 454; 510, 512, 514, 516) in a first of the plurality of banks (107A - 107D) independently of flushing a block (452, 454; 510, 512, 514, 516) in a second of the plurality of banks (107A - 107D), wherein flushing the block (452, 454; 510, 512, 514, 516) in the first bank (107A - 107D) comprises reassigning host LBA addresses for valid data from storage LBA addresses of the block (452, 454; 510, 512, 514, 516) in the first bank (107A - 107D) to contiguous storage LBA addresses in a first relocation block (452, 454; 510, 512, 514, 516), and wherein flushing the block (452, 454; 510, 512, 514, 516) in the second bank (107A-107D) comprises reassigning host LBA addresses for valid data from storage LBA addresses of the block (452, 454; 510, 512, 514, 516) in the second bank (107A-107D) to contiguous storage LBA addresses in a second relocation block (452, 454; 510, 512, 514, 516).