provide programming flexibility