ready to refactor IO