partially implement 'Program'