lazy reading fully working
updated read-line