refactor: don't use fibres for reading