Index: tol/OIS/oiscompress.cpp
===================================================================
--- tol/OIS/oiscompress.cpp	(revision e8916d603576ab8e3d760d386699c2a32cd41c80)
+++ tol/OIS/oiscompress.cpp	(revision 4006126bcfca649d8062bcac21ef337de31979b8)
@@ -350,5 +350,4 @@
   }
   return(ok);
-
 };
 
Index: tol/OIS/oiscreator.cpp
===================================================================
--- tol/OIS/oiscreator.cpp	(revision e8916d603576ab8e3d760d386699c2a32cd41c80)
+++ tol/OIS/oiscreator.cpp	(revision 4006126bcfca649d8062bcac21ef337de31979b8)
@@ -36,13 +36,9 @@
 #include <tol/tol_bvmatgra.h>
 #include <tol/tol_bstruct.h>
+#include "tol_ois_macros.h"
 
         
 BTraceInit("oiscreator.cpp");
 
-//#define TRACE_OIS_HIERARCHY
-#ifdef TRACE_OIS_HIERARCHY
-static FILE* logHrchyWrite_ = 
-  fopen((BSys::TolAppData()+"syslog/OisHierarchyLogWrite.log").String(),"w");
-#endif
 
 
@@ -328,7 +324,8 @@
 //--------------------------------------------------------------------
 {
-  int sz = v.Size();
-  EWrite(sz,stream);
-  Ensure(Write((const void*)v.String(),1,sz, stream));
+  TRACE_OIS_STREAM("WRITE",stream,"BText", v);
+  int length = v.Length();
+  EWrite(length,stream);
+  Ensure(Write((const void*)v.String(),1,length, stream));
   return(true);
 };
@@ -338,4 +335,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("WRITE",stream,"BDat", BText("")<<v);
   double x = v.Value();
   EWrite(x, stream);
@@ -347,4 +345,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("WRITE",stream,"BComplex", BText("")<<v);
   EWrite(v.X(), stream);
   EWrite(v.Y(), stream);
@@ -356,4 +355,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("WRITE",stream,"BDate", BText("")<<v);
   double h = v.Hash();
   return(Write(h,stream));
@@ -364,4 +364,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("WRITE",stream,"BDat*", BText("")<<s);
   Ensure(Write(buf,sizeof(BDat),s,stream));
   return(true);
@@ -372,4 +373,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("WRITE",stream,"BPol", x.Name());
   int s = x.Size();
   EWrite(s, stream);
@@ -392,7 +394,8 @@
 //--------------------------------------------------------------------
 {
-  BMemberOwner::BClassByNameHash::const_iterator iterC;
   int n = 0;
   int s = x.size();
+  TRACE_OIS_STREAM("WRITE",stream,"BMemberOwner", "");
+  BMemberOwner::BClassByNameHash::const_iterator iterC;
   EWrite(s,stream);
   for(iterC=x.begin(); iterC!=x.end(); iterC++, n++)
@@ -407,4 +410,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("WRITE",stream,"BClass", BText("")<<cls.FullName());
   Ensure(Write(cls, *(cls.parentHash_), object_));
   Ensure(Write(cls, *(cls.ascentHash_), object_));
@@ -863,8 +867,9 @@
   Ensure(Write(nb.Set()));
   char hasClass = nb.Class()!=NULL;
-  Ensure(Write(hasClass, object_));
+  Ensure(Write(hasClass, set_));
   if(hasClass)
   {
-    Ensure(Write(nb.Class()->FullName(), object_));
+    BText className = nb.Class()->FullName();
+    Ensure(Write(className, set_));
   }
   return(true);
Index: tol/OIS/oisloader.cpp
===================================================================
--- tol/OIS/oisloader.cpp	(revision e8916d603576ab8e3d760d386699c2a32cd41c80)
+++ tol/OIS/oisloader.cpp	(revision 4006126bcfca649d8062bcac21ef337de31979b8)
@@ -41,13 +41,8 @@
 #include <tol/tol_bnameblock.h>
 #include <tol/tol_bstruct.h>
+#include "tol_ois_macros.h"
 
 BTraceInit("oisloader.cpp");
 
-
-//#define TRACE_OIS_HIERARCHY
-#ifdef TRACE_OIS_HIERARCHY
-  static FILE* logHrchyRead_ = 
-  fopen((BSys::TolAppData()+"syslog/OisHierarchyLogRead.log").String,"w");
-#endif
 
 //--------------------------------------------------------------------
@@ -261,10 +256,22 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("READ",stream,"BText", v);
   static char aux_[65536];
-  int sz;
-  ERead(sz,stream);
-  Ensure(Read(aux_,1,sz, stream));
-  aux_[sz]=0; 
-  v.Copy(aux_);
+  if(control_.oisEngine_.oisVersion_<"02.13")
+  {
+    int sz;
+    ERead(sz,stream);
+    Ensure(Read(aux_,1,sz, stream));
+    aux_[sz]=0; 
+    v.Copy(aux_);
+  }
+  else
+  {
+    int length;
+    ERead(length,stream);
+    v.ReallocateBuffer(length+1);
+    v.PutLength(length);
+    Ensure(Read(v.Buffer(),1,length, stream));
+  }
   return(true);
 };
@@ -274,4 +281,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("READ",stream,"BDat", BText("")<<v);
   if(control_.typeSizes_.sizeof_BDat_==sizeof(BDatOld))
   {
@@ -302,4 +310,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("READ",stream,"BComplex", BText("")<<v);
   BDat x, y;
   ERead(x, stream);
@@ -313,4 +322,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("READ",stream,"BDate", BText("")<<v);
   double h;
   ERead(h,stream);
@@ -323,4 +333,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("READ",stream,"BDat*", BText("")<<s);
   if(control_.typeSizes_.sizeof_BDat_==sizeof(BDatOld))
   {
@@ -353,4 +364,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("READ",stream,"BPol", x.Name());
   int s, i;
   bool ok = true;
@@ -396,4 +408,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("READ",stream,"BMemberOwner", "");
   BMemberOwner::BClassByNameHash::const_iterator iterC;
   int n = 0;
@@ -422,4 +435,5 @@
 //--------------------------------------------------------------------
 {
+  TRACE_OIS_STREAM("READ",stream,"BClass", BText("")<<cls.FullName());
   BMemberOwner::BClassByNameHash& parents = *cls.parentHash_;
   Ensure(Read(cls,parents,stream));
@@ -1141,9 +1155,23 @@
           {
             char hasClass;
-            Ensure(Read(hasClass, object_));
+            if(control_.oisEngine_.oisVersion_>="02.13")
+            {
+              Ensure(Read(hasClass, set_));
+            }
+            else
+            {
+              Ensure(Read(hasClass, object_));
+            }
             if(hasClass)
             {
               BText className;
-              Ensure(Read(className, object_));
+              if(control_.oisEngine_.oisVersion_>="02.13")
+              {
+                Ensure(Read(className, set_));
+              }
+              else
+              {
+                Ensure(Read(className, object_));
+              }
               if(control_.oisEngine_.oisVersion_<"02.09")
               {
Index: tol/OIS/tol_ois.h
===================================================================
--- tol/OIS/tol_ois.h	(revision e8916d603576ab8e3d760d386699c2a32cd41c80)
+++ tol/OIS/tol_ois.h	(revision 4006126bcfca649d8062bcac21ef337de31979b8)
@@ -39,5 +39,5 @@
 //read old OIS files. This will be called a hard change. Then a
 //traslation utility will be available.
-#define OIS_VERSION "02.12"
+#define OIS_VERSION "02.13"
 
 #define OIS_Load_Mode_Header          0 
