This was a mistake from day one. This is the wrong abstraction layer to do this in. My alternate plan for this is to make all I/O operations require an IO interface parameter, similar to how allocations require an Allocator interface parameter today.