revise the program, modualized features