docs recommend open() over file()