1. A method for programming non-volatile memory cells, the non-volatile memory cells accessible by a plurality of word lines, the method comprising: using a four-pass programming technique to program a block of the non-volatile memory cells, wherein for each of a first three programming passes of the four-pass programming technique, each of the memory cells comprises an overlapping threshold distribution.