diff --git a/README.txt b/README.txt
index be20d7104942e1819f49f53e7eea6f09b50d903a..83616b81a6e3df9b18f85ce0917a1c43b2fb5727 100644
--- a/README.txt
+++ b/README.txt
@@ -3,7 +3,7 @@
 =           An open-source MATLAB/Octave JSON encoder and decoder             =
 ===============================================================================
 
-*Copyright (c) 2011,2012  Qianqian Fang <fangq at nmr.mgh.harvard.edu>
+*Copyright (c) 2011-2013  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.8 (Optimus - alpha)
 
@@ -36,11 +36,12 @@ format allows to wrap complex binary data in a flexible and extensible
 structure, making it possible to process complex and large dataset 
 without accuracy loss due to text conversions.
 
-We envision that both JSON and its binary version will serve as the
-mainstream data-exchange formats for scientific research in the future, 
-and fulfill part of the roles achieved by other general-purpose 
-file specifications, such as
-[http://www.hdfgroup.org/HDF5/whatishdf5.html HDF5].
+We envision that both JSON and its binary version will serve as part of 
+the mainstream data-exchange formats for scientific research in the future. 
+It will provide the flexibility and generality achieved by other popular 
+general-purpose file specifications, such as
+[http://www.hdfgroup.org/HDF5/whatishdf5.html HDF5], with significantly 
+reduced complexity and enhanced performance.
 
 JSONlab is a free and open-source implementation of a JSON/UBJSON encoder 
 and a decoder in the native MATLAB language. It can be used to convert a MATLAB 
@@ -71,8 +72,8 @@ III.Using JSONlab
 
 JSONlab provides two functions, loadjson.m -- a MATLAB->JSON decoder, 
 and savejson.m -- a MATLAB->JSON encoder, for the text-based JSON, and 
-two equivallents -- loadubjson and saveubjson for the binary JSON. T
-he detailed help info for the four functions can be found below:
+two equivallent functions -- loadubjson and saveubjson for the binary 
+JSON. The detailed help info for the four functions can be found below:
 
 === loadjson.m ===
 <pre>
@@ -92,7 +93,7 @@ he detailed help info for the four functions can be found below:
           http://www.mathworks.com/matlabcentral/fileexchange/20565
              date: 2008/07/03
  
-  $Id: loadjson.m 371 2012-06-20 12:43:06Z fangq $
+  $Id: loadjson.m 394 2012-12-18 17:58:11Z fangq $
  
   input:
        fname: input file name, if fname contains "{}" or "[]", fname
@@ -120,7 +121,7 @@ he detailed help info for the four functions can be found below:
   author: Qianqian Fang (fangq<at> nmr.mgh.harvard.edu)
              created on 2011/09/09
  
-  $Id: savejson.m 371 2012-06-20 12:43:06Z fangq $
+  $Id: savejson.m 394 2012-12-18 17:58:11Z fangq $
  
   input:
        rootname: name of the root-object, if set to '', will use variable name
@@ -180,6 +181,97 @@ he detailed help info for the four functions can be found below:
        savejson('',a,'ArrayIndent',0,'FloatFormat','\t%.5g')
 </pre>
 
+=== loadubjson.m ===
+
+<pre>
+  data=loadubjson(fname,opt)
+     or
+  data=loadubjson(fname,'param1',value1,'param2',value2,...)
+ 
+  parse a JSON (JavaScript Object Notation) file or string
+ 
+  authors:Qianqian Fang (fangq<at> nmr.mgh.harvard.edu)
+             date: 2013/08/01
+ 
+  $Id: loadubjson.m 410 2013-08-24 03:33:18Z fangq $
+ 
+  input:
+       fname: input file name, if fname contains "{}" or "[]", fname
+              will be interpreted as a UBJSON string
+       opt: a struct to store parsing options, opt can be replaced by 
+            a list of ('param',value) pairs. The param string is equivallent
+            to a field in opt.
+ 
+  output:
+       dat: a cell array, where {...} blocks are converted into cell arrays,
+            and [...] are converted to arrays
+</pre>
+
+=== saveubjson.m ===
+
+<pre>
+  json=saveubjson(rootname,obj,filename)
+     or
+  json=saveubjson(rootname,obj,opt)
+  json=saveubjson(rootname,obj,'param1',value1,'param2',value2,...)
+ 
+  convert a MATLAB object (cell, struct or array) into a Universal 
+  Binary JSON (UBJSON) binary string
+ 
+  author: Qianqian Fang (fangq<at> nmr.mgh.harvard.edu)
+             created on 2013/08/17
+ 
+  $Id: saveubjson.m 410 2013-08-24 03:33:18Z fangq $
+ 
+  input:
+       rootname: name of the root-object, if set to '', will use variable name
+       obj: a MATLAB object (array, cell, cell array, struct, struct array)
+       filename: a string for the file name to save the output JSON data
+       opt: a struct for additional options, use [] if all use default
+         opt can have the following fields (first in [.|.] is the default)
+ 
+         opt.FileName [''|string]: a file name to save the output JSON data
+         opt.ArrayToStruct[0|1]: when set to 0, saveubjson outputs 1D/2D
+                          array in JSON array format; if sets to 1, an
+                          array will be shown as a struct with fields
+                          "_ArrayType_", "_ArraySize_" and "_ArrayData_"; for
+                          sparse arrays, the non-zero elements will be
+                          saved to _ArrayData_ field in triplet-format i.e.
+                          (ix,iy,val) and "_ArrayIsSparse_" will be added
+                          with a value of 1; for a complex array, the 
+                          _ArrayData_ array will include two columns 
+                          (4 for sparse) to record the real and imaginary 
+                          parts, and also "_ArrayIsComplex_":1 is added. 
+         opt.ParseLogical [1|0]: if this is set to 1, logical array elem
+                          will use true/false rather than 1/0.
+         opt.NoRowBracket [1|0]: if this is set to 1, arrays with a single
+                          numerical element will be shown without a square
+                          bracket, unless it is the root object; if 0, square
+                          brackets are forced for any numerical arrays.
+         opt.ForceRootName [0|1]: when set to 1 and rootname is empty, saveubjson
+                          will use the name of the passed obj variable as the 
+                          root object name; if obj is an expression and 
+                          does not have a name, 'root' will be used; if this 
+                          is set to 0 and rootname is empty, the root level 
+                          will be merged down to the lower level.
+         opt.JSONP [''|string]: to generate a JSONP output (JSON with padding),
+                          for example, if opt.JSON='foo', the JSON data is
+                          wrapped inside a function call as 'foo(...);'
+         opt.UnpackHex [1|0]: conver the 0x[hex code] output by loadjson 
+                          back to the string form
+         opt can be replaced by a list of ('param',value) pairs. The param 
+         string is equivallent to a field in opt.
+  output:
+       json: a string in the JSON format (see http://json.org)
+ 
+  examples:
+       a=struct('node',[1  9  10; 2 1 1.2], 'elem',[9 1;1 2;2 3],...
+            'face',[9 01 2; 1 2 3; NaN,Inf,-Inf], 'author','FangQ');
+       saveubjson('mesh',a)
+       saveubjson('',a,'ArrayIndent',0,'FloatFormat','\t%.5g')
+</pre>
+
+
 === examples ===
 
 Under the "examples" folder, you can find several scripts to demonstrate the
@@ -209,8 +301,9 @@ in MATLAB to get consistant results
 # Can not handle classes.
 # saveubjson has not yet supported arbitrary data ([H] in the UBJSON specification)
 # saveubjson now converts a logical array into a uint8 ([U]) array for now
-# an unofficial N-D array count format is used in saveubjson, we are communicating \
-with the UBJSON spec maintainer to investigate the possibility to make this upstream
+# an unofficial N-D array count syntax is implemented in saveubjson. We are \
+actively communicating with the UBJSON spec maintainer to investigate the \
+possibility of making it upstream
 
 -------------------------------------------------------------------------------