refactored _ReaderBuffer