anchor.diff:  procedure TfpgMimeDataBase.SetHTML(const AValue: TfpgString);
   var
     i: integer;
  -  r: TfpgMimeDataStruct;
  +  r: TfpgMimeDataItem;
   begin
     { remove existing 'text/html' first }
  -  for i := FDataList.Count-1 downto 0 do
  -  begin
  -    r := TfpgMimeDataStruct(FDataList[i]);
  +  for i := Count-1 downto 0 do
  +  begin
  +    r := Items[i];
       if r.format = 'text/html' then
       begin
  -      FDataList.Remove(FDataList[i]);
  +      FDataList.Remove(r);
         break;
       end;
     end;
     { now add new structure }
  -  r := TfpgMimeDataStruct.Create('text/html', AValue);
  +  r := TfpgMimeDataItem.Create('text/html', AValue);
     FDataList.Add(r);
   end;
   
  -function TfpgMimeDataBase.GetFormatCout: integer;
  +function TfpgMimeDataBase.GetCount: integer;
   begin
     Result := FDataList.Count;
   end;
  
positive.code:     { TODO: This is wrong, we must have one Data Storage object }
      FDataList: TObjectList;
      FUrlList: TList;
      function    Geturls: TList;
      procedure   Seturls(const AValue: TList);
      function    GetText: TfpgString;
      procedure   SetText(const AValue: TfpgString);
      function    GetHTML: TfpgString;
      procedure   SetHTML(const AValue: TfpgString);
      function    GetFormatCout: integer;
    public
      constructor Create;
      destructor  Destroy; override;
  
negative.code:   s: string;
  begin
    { TODO: if no text/plain, but we have HTML, we must strip all tags and return that }
    for i := 0 to Count-1 do
    begin
      if Items[i].format = 'text/plain' then
      begin
        s := Items[i].data;
        Result := s;
        break;
      end;
  