improve lazyRead()