add getPrograms() function