I/O layer refactoring