new more efficient and less problematic read buffer