It was originally intended to be an IO object, do we want to accept IO objects or just filenames?