ProgramFactory:  Used to generate all program types.