1. A method of programming a multi-bit memory cell from a lowest threshold state to a highest threshold state comprising: verifying that an intermediate threshold state, between the lowest threshold state and the highest threshold state, has been successfully programmed, while allowing further programming of the multi-bit memory cell that has been successfully programmed, from the intermediate threshold state to the highest threshold state.