more work on the structure of the program