mode1 and mode2 implements complete