updated program design