call it buffered_read