implement the program