refactor io-read-api