buffered read