allow programs to be passed in as files or as arguments