shouldn't this be in a `try`block, catching `IOError`?