half working skeleton of the program