add program pages, close #39