diff --git a/ChangeLog.txt b/ChangeLog.txt
new file mode 100644
index 0000000000000000000000000000000000000000..29fedaad64028621650069e10fcca1ce9ebf6fda
--- /dev/null
+++ b/ChangeLog.txt
@@ -0,0 +1,17 @@
+============================================================================
+
+     JSONlab - a toolbox to encode/decode JSON files in MATLAB/Octave
+
+----------------------------------------------------------------------------
+
+JSONlab ChangeLog (key features marked by *):
+
+== JSONlab 0.5.0 (codename: Nexus), FangQ <fangq nmr mgh harvard edu> ==
+
+ 2011/10/16  package and release jsonlab 0.5.0
+ 2011/10/15 *add json demo and regression test, support cpx numbers, fix double quote bug
+ 2011/10/11 *speed up readjson dramatically, interpret _Array* tags, show data in root level
+ 2011/10/10  create jsonlab project, start jsonlab website, add online documentation
+ 2011/10/07 *speed up savejson by 25x using sprintf instead of mat2str, add options support
+ 2011/10/06 *savejson works for structs, cells and arrays
+ 2011/09/09  derive loadjson from JSON parser from MATLAB Central, draft savejson.m
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fc3a73daaa9359a0271f9e55d49098b1088bb7f5
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,187 @@
+===============================================================================
+=                                 JSONlab                                     =
+=           An open-source MATLAB/Octave JSON encoder and decoder             =
+===============================================================================
+
+*Copyright (c) 2011  Qianqian Fang <fangq at nmr.mgh.harvard.edu>
+*License: BSD or GNU General Public License version 3 (GPL v3), see License*.txt
+*Version: 0.5.0 (Nexus)
+
+-------------------------------------------------------------------------------
+
+Table of Content:
+
+I.  Introduction
+II. Installation
+III.Using JSONlab
+IV. Known Issues and TODOs
+V.  Contribution and feedback
+
+-------------------------------------------------------------------------------
+
+I.  Introduction
+
+JSON ([http://www.json.org/ JavaScript Object Notation]) is a highly portable, 
+human-readable and "[http://en.wikipedia.org/wiki/JSON fat-free]" text format 
+to represent complex and hierarchical data. It is as powerful as 
+[http://en.wikipedia.org/wiki/XML XML], but less verbose. JSON format is widely 
+used for data-exchange in applications, and is essential for the wild success 
+of [http://en.wikipedia.org/wiki/Ajax_(programming) Ajax] and 
+[http://en.wikipedia.org/wiki/Web_2.0 Web2.0]. With the fast advance of 
+web-based technologies, We envision that JSON will serve as a mainstream 
+data-exchange format for scientific research in the future, and
+fulfill part of the roles achieved by [http://www.hdfgroup.org/HDF5/whatishdf5.html HDF5].
+
+JSONlab is a free and open-source implementation of a JSON encoder and a 
+decoder in the native MATLAB language. It can be used to convert a MATLAB 
+data structure (array, struct, cell, struct array and cell array) into 
+JSON formatted text, or to decode a JSON file into MATLAB data. JSONlab 
+supports both MATLAB and  
+[http://www.gnu.org/software/octave/ GNU Octave] (a free MATLAB clone).
+
+-------------------------------------------------------------------------------
+
+II. Installation
+
+The installation of JSONlab is no different than any other simple
+MATLAB toolbox. You only need to download/unzip the JSONlab package
+to a folder, and add the folder's path to MATLAB/Octave's path list
+by using the following command:
+
+    addpath('/path/to/jsonlab');
+
+If you want to add this path permanently, you need to type "pathtool", 
+browse to the jsonlab root folder and add to the list, then click "Save".
+Then, run "rehash" in MATLAB, and type "which loadjson", if you see an 
+output, that means JSONlab is installed for MATLAB/Octave.
+
+-------------------------------------------------------------------------------
+
+III.Using JSONlab
+
+JSONlab provides two functions, loadjson.m -- a MATLAB->JSON decoder, 
+and savejson.m -- a MATLAB->JSON encoder. The detailed help info for 
+the two functions can be found below:
+
+=== loadjson.m ===
+<pre>
+ data=loadjson(fname)
+
+ parse a JSON (JavaScript Object Notation) file or string
+
+ authors:Qianqian Fang (fangq<at> nmr.mgh.harvard.edu)
+            date: 2011/09/09
+         Nedialko Krouchev: http://www.mathworks.com/matlabcentral/fileexchange/25713
+            date: 2009/11/02
+         François Glineur: http://www.mathworks.com/matlabcentral/fileexchange/23393
+            date: 2009/03/22
+         Joel Feenstra: http://www.mathworks.com/matlabcentral/fileexchange/20565
+            date: 2008/07/03
+
+ input:
+      fname: input file name, if fname contains "{}" or "[]", fname
+      will be interpreted as a JSON string
+
+ output:
+      dat: a cell array, where {...} blocks are converted into cell arrays,
+           and [...] are converted to arrays
+</pre>
+
+=== savejson.m ===
+
+<pre>
+ json=savejson(rootname,obj,opt)
+
+ convert a MATLAB object (cell, struct or array) into a JSON (JavaScript
+ Object Notation) string
+
+ authors:Qianqian Fang (fangq<at> nmr.mgh.harvard.edu)
+            date: 2011/09/09
+
+ 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)
+      opt: a struct for additional options, use [] if all use default
+        opt can have the following fields (first in [.|.] is the default)
+        opt.FloatFormat ['%.10g'|string]: format to show each numeric element
+                         of a 1D/2D array;
+        opt.ArrayIndent [1|0]: if 1, output explicit data array with
+                         precedent indentation; if 0, no indentation
+        opt.ArrayToStruct[0|1]: when set to 0, savejson 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 [0|1]: if this is set to 1, logical array elem
+                         will use true/false rather than 1/0.
+
+ 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');
+      savejson('mesh',a)
+      savejson('',a,struct('ArrayIndent',0,'FloatFormat','\t%.5g'))
+</pre>
+
+=== examples ===
+
+Under the "examples" folder, you can find several scripts to demonstrate the
+basic utilities of JSONlab. Running the "demo_jsonlab_basic.m" script, you 
+will see the conversions from MATLAB data structure to JSON text and backward.
+In "jsonlab_selftest.m", we load complex JSON files downloaded from the Internet
+and validate the loadjson/savejson functions for regression testing purposes.
+
+Please run these examples and understand how JSONlab works before you use
+it to process your data.
+
+-------------------------------------------------------------------------------
+
+IV. Known Issues and TODOs
+
+JSONlab has several known limitations. We are striving to make it more general
+and robust. Hopefully in a few future releases, the limitations become less.
+
+Here are the known issues:
+
+# Any high-dimensional cell-array will be converted to a 1D array;
+# When processing names containing multi-byte characters, Octave and MATLAB \
+can give different field-names;
+# Can not handle classes;
+# Although significantly accelerated, loadjson of large JSON file may still take some time.
+
+-------------------------------------------------------------------------------
+
+V. Contribution and feedback
+
+JSONlab is an open-source project. This means you can not only use it and modify
+it as you wish, but also you can contribute your changes back to JSONlab so
+that everyone else can enjoy the improvement. For anyone who want to contribute,
+please download JSONlab source code from it's subversion repository by using the
+following command:
+
+ svn co https://iso2mesh.svn.sourceforge.net/svnroot/iso2mesh/trunk/jsonlab jsonlab
+
+You can make changes to the files as needed. Once you are satisfied with your
+changes, and ready to share it with others, please cd the root directory of 
+JSONlab, and type
+
+ svn diff > yourname_featurename.patch
+
+You then email the .patch file to JSONlab's maintainer, Qianqian Fang, at
+the email address shown in the beginning of this file. Qianqian will review 
+the changes and commit it to the subversion if they are satisfactory.
+
+We appreciate any suggestions and feedbacks from you. Please use iso2mesh's
+mailing list to report any questions you may have with JSONlab:
+
+http://groups.google.com/group/iso2mesh-users?hl=en&pli=1
+
+(Subscription to the mailing list is needed in order to post messages).