diff --git a/examples/jsonlab_basictest.matlab b/examples/jsonlab_basictest.matlab
index cfb5464325e3f1db8f717a3aa187b152b48adb23..b41c7058cfa60c8faf0058080a06c354fa363734 100644
--- a/examples/jsonlab_basictest.matlab
+++ b/examples/jsonlab_basictest.matlab
@@ -1,8 +1,8 @@
 
-                              < M A T L A B >
-                  Copyright 1984-2007 The MathWorks, Inc.
-                         Version 7.4.0.287 (R2007a)
-                              January 29, 2007
+                            < M A T L A B (R) >
+                  Copyright 1984-2010 The MathWorks, Inc.
+                Version 7.11.0.584 (R2010b) 64-bit (glnxa64)
+                              August 16, 2010
 
  
   To get started, type one of these: helpwin, helpdesk, or demo.
@@ -529,14 +529,18 @@ ans =
 				"lenny": 5.00,
 				"squeeze": 6.00,
 				"wheezy": 7.00
-			},
+			}
+		],
+		[
 			{
 				"Ubuntu": [
 					"Kubuntu",
 					"Xubuntu",
 					"Lubuntu"
 				]
-			},
+			}
+		],
+		[
 			[10.04,10.10,11.04,11.10]
 		]
 	]
@@ -546,7 +550,7 @@ ans =
 >> 
 json2data = 
 
-    debian: {{1x3 cell}}
+    debian: {{1x1 cell}  {1x1 cell}  [10.0400 10.1000 11.0400 11.1000]}
 
 >> >> 
 %=================================================
@@ -579,21 +583,25 @@ ans =
 					3
 				]
 			],
-			7
-		],
-		[
 			[
 				4,
 				5
 			],
 			[
-				8,
-				9
+				6
 			]
 		],
 		[
-			6,
-			10
+			[
+				7
+			],
+			[
+				8,
+				9
+			],
+			[
+				10
+			]
 		]
 	]
 }
@@ -602,7 +610,7 @@ ans =
 >> 
 json2data = 
 
-    data2json: {{1x2 cell}  [2x2 double]  [6 10]}
+    data2json: {{1x3 cell}  {1x3 cell}}
 
 >> >> 
 %=================================================
@@ -660,4 +668,4 @@ json2data =
 
     data2json: {{1x2 cell}  {1x2 cell}  {1x2 cell}}
 
->> >> >> >> 
+>> >> >> >> 
\ No newline at end of file
diff --git a/examples/jsonlab_selftest.matlab b/examples/jsonlab_selftest.matlab
index 90b25c4ef29e30760ff816125f3a60127809daf1..ac652c56faa0ecd543d1756c0d21b8b306332068 100644
--- a/examples/jsonlab_selftest.matlab
+++ b/examples/jsonlab_selftest.matlab
@@ -1,8 +1,8 @@
 
-                              < M A T L A B >
-                  Copyright 1984-2007 The MathWorks, Inc.
-                         Version 7.4.0.287 (R2007a)
-                              January 29, 2007
+                            < M A T L A B (R) >
+                  Copyright 1984-2010 The MathWorks, Inc.
+                Version 7.11.0.584 (R2010b) 64-bit (glnxa64)
+                              August 16, 2010
 
  
   To get started, type one of these: helpwin, helpdesk, or demo.
@@ -150,5 +150,5 @@ GlossEntry{UIDSUSGMLUSortAsSUSGMLU	GlossTermSU$Standard Generalized Markup L
 CloseDoc()}]}}}}
 ===============================================
 >> example4.json
-{Udata[{Usample{Urhoi}}{Usample{Urhoi}}[[$i#U
+{Udata[{Usample{Urhoi}}{Usample{Urhoi}}[[$i#U[$i#U[$i#U][SUPaperSUScissorsSUStone][CaSUb\SUc"SUd\"SUe"[SUf\"[SUg[\SUh[\"]]}
 >> 
\ No newline at end of file
diff --git a/savejson.m b/savejson.m
index 2d37e46f8409a4ec7ba392584808b64e03bc9a88..09ba1dd1b742c220b79927f6b2f9bec8453efe8b 100644
--- a/savejson.m
+++ b/savejson.m
@@ -41,10 +41,13 @@ function json=savejson(rootname,obj,varargin)
 %                         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.
-%        opt.NoRowBracket [1|0]: if this is set to 1, arrays with a single
+%        opt.SingletArray [0|1]: 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.SingletCell  [1|0]: if 1, always enclose a cell with "[]" 
+%                         even it has only one element; if 0, brackets
+%                         are ignored when a cell has only 1 element.
 %        opt.ForceRootName [0|1]: when set to 1 and rootname is empty, savejson
 %                         will use the name of the passed obj variable as the 
 %                         root object name; if obj is an expression and 
@@ -97,11 +100,17 @@ else
    varname=inputname(2);
 end
 if(length(varargin)==1 && ischar(varargin{1}))
-   opt=struct('FileName',varargin{1});
+   opt=struct('filename',varargin{1});
 else
    opt=varargin2struct(varargin{:});
 end
 opt.IsOctave=exist('OCTAVE_VERSION','builtin');
+if(isfield(opt,'norowbracket'))
+    warning('Option ''NoRowBracket'' is depreciated, please use ''SingletArray'' and set its value to not(NoRowBracket)');
+    if(~isfield(opt,'singletarray'))
+        opt.singletarray=not(opt.norowbracket);
+    end
+end
 rootisarray=0;
 rootlevel=1;
 forceroot=jsonopt('ForceRootName',0,opt);
@@ -184,7 +193,8 @@ ws=jsonopt('whitespaces_',struct('tab',sprintf('\t'),'newline',sprintf('\n'),'se
 padding0=repmat(ws.tab,1,level);
 padding2=repmat(ws.tab,1,level+1);
 nl=ws.newline;
-if(len>1)
+bracketlevel=~jsonopt('singletcell',1,varargin{:});
+if(len>bracketlevel)
     if(~isempty(name))
         txt=sprintf('%s"%s": [%s',padding0, checkname(name,varargin{:}),nl); name=''; 
     else
@@ -202,7 +212,7 @@ for i=1:dim(1)
         txt=sprintf('%s%s[%s',txt,padding2,nl);
     end
     for j=1:dim(2)
-       txt=sprintf('%s%s',txt,obj2json(name,item{i,j},level+(dim(1)>1)+(len>1),varargin{:}));
+       txt=sprintf('%s%s',txt,obj2json(name,item{i,j},level+(dim(1)>1)+(len>bracketlevel),varargin{:}));
        if(j<dim(2))
            txt=sprintf('%s%s',txt,sprintf(',%s',nl));
        end
@@ -215,7 +225,7 @@ for i=1:dim(1)
     end
     %if(j==dim(2)) txt=sprintf('%s%s',txt,sprintf(',%s',nl)); end
 end
-if(len>1)
+if(len>bracketlevel)
     txt=sprintf('%s%s%s]',txt,nl,padding0);
 end
 
@@ -231,7 +241,7 @@ if(ndims(squeeze(item))>2) % for 3D or higher dimensions, flatten to 2D for now
     dim=size(item);
 end
 len=numel(item);
-forcearray= (len>1 || (jsonopt('NoRowBracket',1,varargin{:})==0 && level>0));
+forcearray= (len>1 || (jsonopt('SingletArray',0,varargin{:})==1 && level>0));
 ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'));
 ws=jsonopt('whitespaces_',ws,varargin{:});
 padding0=repmat(ws.tab,1,level);
@@ -359,7 +369,7 @@ if(length(size(item))>2 || issparse(item) || ~isreal(item) || ...
               padding1,checkname(name,varargin{:}),nl,padding0,class(item),nl,padding0,regexprep(mat2str(size(item)),'\s+',','),nl);
     end
 else
-    if(numel(item)==1 && jsonopt('NoRowBracket',1,varargin{:})==1 && level>0)
+    if(numel(item)==1 && jsonopt('SingletArray',0,varargin{:})==0 && level>0)
         numtxt=regexprep(regexprep(matdata2json(item,level+1,varargin{:}),'^\[',''),']','');
     else
         numtxt=matdata2json(item,level+1,varargin{:});
@@ -367,7 +377,7 @@ else
     if(isempty(name))
     	txt=sprintf('%s%s',padding1,numtxt);
     else
-        if(numel(item)==1 && jsonopt('NoRowBracket',1,varargin{:})==1)
+        if(numel(item)==1 && jsonopt('SingletArray',0,varargin{:})==0)
            	txt=sprintf('%s"%s": %s',padding1,checkname(name,varargin{:}),numtxt);
         else
     	    txt=sprintf('%s"%s": %s',padding1,checkname(name,varargin{:}),numtxt);
diff --git a/saveubjson.m b/saveubjson.m
index 1e606942ae54c437c8d0f66a73b70254ba5f396e..a91f75366189a7420fbfa5f09223ed8c74730dad 100644
--- a/saveubjson.m
+++ b/saveubjson.m
@@ -37,10 +37,13 @@ function json=saveubjson(rootname,obj,varargin)
 %                         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
+%        opt.SingletArray [0|1]: 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.SingletCell  [1|0]: if 1, always enclose a cell with "[]" 
+%                         even it has only one element; if 0, brackets
+%                         are ignored when a cell has only 1 element.
 %        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 
@@ -85,11 +88,17 @@ else
    varname=inputname(2);
 end
 if(length(varargin)==1 && ischar(varargin{1}))
-   opt=struct('FileName',varargin{1});
+   opt=struct('filename',varargin{1});
 else
    opt=varargin2struct(varargin{:});
 end
 opt.IsOctave=exist('OCTAVE_VERSION','builtin');
+if(isfield(opt,'norowbracket'))
+    warning('Option ''NoRowBracket'' is depreciated, please use ''SingletArray'' and set its value to not(NoRowBracket)');
+    if(~isfield(opt,'singletarray'))
+        opt.singletarray=not(opt.norowbracket);
+    end
+end
 rootisarray=0;
 rootlevel=1;
 forceroot=jsonopt('ForceRootName',0,opt);
@@ -149,8 +158,9 @@ if(ndims(squeeze(item))>2) % for 3D or higher dimensions, flatten to 2D for now
     item=reshape(item,dim(1),numel(item)/dim(1));
     dim=size(item);
 end
+bracketlevel=~jsonopt('singletcell',1,varargin{:});
 len=numel(item); % let's handle 1D cell first
-if(len>1) 
+if(len>bracketlevel) 
     if(~isempty(name))
         txt=[N_(checkname(name,varargin{:})) '[']; name=''; 
     else
@@ -168,13 +178,13 @@ for j=1:dim(2)
         txt=[txt '['];
     end
     for i=1:dim(1)
-       txt=[txt obj2ubjson(name,item{i,j},level+(len>1),varargin{:})];
+       txt=[txt obj2ubjson(name,item{i,j},level+(len>bracketlevel),varargin{:})];
     end
     if(dim(1)>1)
         txt=[txt ']'];
     end
 end
-if(len>1)
+if(len>bracketlevel)
     txt=[txt ']'];
 end
 
@@ -190,7 +200,7 @@ if(ndims(squeeze(item))>2) % for 3D or higher dimensions, flatten to 2D for now
     dim=size(item);
 end
 len=numel(item);
-forcearray= (len>1 || (jsonopt('NoRowBracket',1,varargin{:})==0 && level>0));
+forcearray= (len>1 || (jsonopt('SingletArray',0,varargin{:})==1 && level>0));
 
 if(~isempty(name)) 
     if(forcearray)
@@ -285,7 +295,7 @@ else
     if(isempty(name))
     	txt=matdata2ubjson(item,level+1,varargin{:});
     else
-        if(numel(item)==1 && jsonopt('NoRowBracket',1,varargin{:})==1)
+        if(numel(item)==1 && jsonopt('SingletArray',0,varargin{:})==0)
             numtxt=regexprep(regexprep(matdata2ubjson(item,level+1,varargin{:}),'^\[',''),']','');
            	txt=[N_(checkname(name,varargin{:})) numtxt];
         else