updated program interface