Refactored I/O and DI