revise to fullfil the instruction