Managing program complexity