more convenient Program constructor