diff --git a/README.txt b/README.txt
index c10994e00651f0a4885619bd2303efbd4a58f99a..5dcacf40b369e007563af5437bf4dc3cfcb7299f 100644
--- a/README.txt
+++ b/README.txt
@@ -5,7 +5,7 @@
 
 *Copyright (c) 2011-2014  Qianqian Fang <fangq at nmr.mgh.harvard.edu>
 *License: BSD or GNU General Public License version 3 (GPL v3), see License*.txt
-*Version: 0.9.9 (Optimus - beta)
+*Version: 1.0.0-RC1 (Optimus - RC1)
 
 -------------------------------------------------------------------------------
 
diff --git a/examples/jsonlab_selftest.m b/examples/jsonlab_selftest.m
index 63f6c5af37882b1cc3da16ce310a48c549bcda0e..ab2c038b9584febf44393f205c5466b60344803a 100644
--- a/examples/jsonlab_selftest.m
+++ b/examples/jsonlab_selftest.m
@@ -19,8 +19,9 @@ for i=1:4
     fprintf(1,'===============================================\n>> %s\n',fname);
     json=saveubjson('data',loadjson(fname));
     fprintf(1,'%s\n',json);
-    data=loadubjson(json);
+    data=loadubjson(json)
     savejson('',data)
+i
     saveubjson('data',data,'selftest.ubj');
     data=loadubjson('selftest.ubj');
 end
diff --git a/savejson.m b/savejson.m
index 56c9f178fb3ca966b9685f3b56972414c619d198..cba3f67a2040fb3df32134a4c5b2afdeec70dd19 100644
--- a/savejson.m
+++ b/savejson.m
@@ -414,8 +414,20 @@ end
 
 %%-------------------------------------------------------------------------
 function newstr=escapejsonstring(str)
-escapechars={'\a','\b','\f','\n','\r','\t','\v'};
 newstr=str;
-for i=1:length(escapechars);
-  newstr=regexprep(newstr,escapechars{i},regexprep(escapechars{i},'\\','\\\\'));
+isoct=exist('OCTAVE_VERSION','builtin');
+if(isoct)
+   vv=sscanf(OCTAVE_VERSION,'%f');
+   if(vv(1)>=3.8) isoct=0; end
+end
+if(isoct)
+  escapechars={'\a','\f','\n','\r','\t','\v'};
+  for i=1:length(escapechars);
+    newstr=regexprep(newstr,escapechars{i},escapechars{i});
+  end
+else
+  escapechars={'\a','\b','\f','\n','\r','\t','\v'};
+  for i=1:length(escapechars);
+    newstr=regexprep(newstr,escapechars{i},regexprep(escapechars{i},'\\','\\\\'));
+  end
 end
diff --git a/saveubjson.m b/saveubjson.m
index e84e1112c25b5478f05b8357b8e865fdebb00919..63b0b64c33f9d21ccd91f5f3f1063e4e6f538550 100644
--- a/saveubjson.m
+++ b/saveubjson.m
@@ -155,7 +155,7 @@ end
 for j=1:dim(2)
     if(dim(1)>1) txt=[txt '[']; end
     for i=1:dim(1)
-       txt=[txt obj2ubjson(name,item{i},level+(len>1),varargin{:})];
+       txt=[txt obj2ubjson(name,item{i,j},level+(len>1),varargin{:})];
     end
     if(dim(1)>1) txt=[txt ']']; end
 end
@@ -308,7 +308,7 @@ if(size(mat,1)==1)
 end
 type='';
 hasnegtive=(mat<0);
-if(isa(mat,'integer') || (isfloat(mat) && all(mod(mat(:),1) == 0)))
+if(isa(mat,'integer') || isinteger(mat) || (isfloat(mat) && all(mod(mat(:),1) == 0)))
     if(isempty(hasnegtive))
        if(max(mat(:))<=2^8)
            type='U';