minor point (and not necessary if you don't want) but what about changing the name of this parameter to something like `io` so that it doesn't imply only a path or buffer