Some important factors in building a program?