expanding use of the Program abstraction