use buffered_read