public byte readNext() throws IOException {
        if(buffer_one == null){
            buffer_one = new byte[BUFFER_LENGTH];
            if(!readNextBuffer(buffer_one))
                return EOF;
            forward = 0;
        }

        if(forward >= buffer_one.length){
            //we reach end of first buffer so we need load next
            if(!readNextBuffer(buffer_one))
                return EOF;
            forward = 0;
        }

        return buffer_one[forward++]; //increas forward after read
    }