main program of this project