add utilities for generating programs